Designs API

The /designs API endpoint

Jeff Schnitzer avatar
Written by Jeff Schnitzer
Updated over a week ago

Retrieves a paginated list of your designs. There are two optional query parameters:

  • limit - number of designs to request, max 1000 (the default)

  • cursor - the value of more if you wish to fetch the next page of results

The result looks like this (see "Pagination" in the API Overview):

{ 
"data": [ {...first...}, {...second...} ],
"total": 12345,
"more": "cursorstring"
}

more will be null (you're at the end) or a value you can pass as a cursor to this same endpoint to fetch the next page of results.

The data will be the same data in the GET single design endpoint below.

Obtain the data for a single design with key DES123. The response looks like:

{
"key": "DES123",
"art": "https://storage.googleapis.com/orbitkit/1234-56789",
"filename": "yourfile.png",
"batch": "2019-02-05T19:37:45.123Z",
"translations": [
{
"language": "en",
"title": "Cool Design",
"description": "It's really cool",
"tags": ["very","cool"]
},
{...de...},
{...es...},
{...fr...}
],
"note": "My private note",
"mature": false,
"archetype": { // might be null if no archetype set
"key": "ARC1234",
"name": "Your Archetype"
}
}

Requests for invalid keys produce 410 GONE (to explicitly distinguish from 404).

Imports a design into OrbitKit, optionally updating the design if it already exists. The POST body should include the following JSON:

{
"art": "http://example.com/your/image_file.png",
"contentType": "image/png",
"filename": "image_file.png",
"batch": "2019-02-05T19:37:45.123Z",
"translations": [
{
"language": "en",
"title": "Cool Design",
"description": "It's really cool",
"tags": ["very","cool"]
},
],
"note": "My private note about this design",
"mature": false,
"update": false
}
  • art can be any public URL to a jpg or png image. It can also be a base64-encoded string of the raw file data. If using base64, files are limited to about 24MB max size. There is no limit when submitting art with a URL.

  • contentType is required for base64 art. It is optional for URLs; if not provided, OrbitKit will use the contentType obtained when fetching URL.

  • filename must be provided, and is stored along with the design. It is recommended, but not required, that all your filenames be unique.

  • batch should be an ISO8601 date in UTC, including millisecond precision. If you want multiple designs to be in the same batch, provide the exact same value for each. Batches are just timestamps.

  • translations are the design metadata in zero or more languages. The currently allowed languages are en, de, fr, and es.

  • note is a bit of private information from, and for, you.

  • mature will flag the design as mature

  • update determines whether filename & note & translations should be updated when a duplicate upload is detected. If false, a duplicate upload is completely ignored. "Duplicate" is determined by a byte-for-byte comparison of the image.

  • tags order is significant. Private tags (which start with $) will automatically be moved to the front of the list.

The response will be the actual design data on file (see GET /designs/DES123 below).

OrbitKit de-duplicates your uploads based on the de-duplication setting in your organization. If you try to upload a duplicate image, OrbitKit will ignore the duplicate and return success (200 OK) with the original design data JSON.

Note that you can't set the archetype here; there is an explicit endpoint for that (see below).

Updates the data for a specific design. Note that everything is required, there is no partial update. If you do not specify the translation for a language, that translation will be removed.

{
"filename": "image_file.png",
"translations": [
{
"language": "en",
"title": "Cool Design",
"description": "It's really cool",
"tags": ["very","cool"]
},
],
"note": "My private note about this design",
"mature": false
}

Changes to data will trigger updates of affected exhibits. For example, if you add a tag, this tag will be added to all of the published exhibits.

The updated design data will be returned.

List the exhibits for a specific design. The result will be encapsulated in an object like this:

{ "data": [ {...first...}, {...second...} ] }

Each exhibit object will be the same data as in the GET single exhibit endpoint.

Sets or removes the archetype for a design. OrbitKit will create or destroy exhibits appropriate to the archetype.

{
"key": "ARC123"
}

Passing {"key": null} will remove the archetype. As with the OrbitKit UI, removing the archetype from a design reverts it to manual control. No exhibits will be deleted.

The updated design data will be returned.

Did this answer your question?