Dash API (1.0.0)

Download OpenAPI specification:Download

Introduction

The Dash API follows the REST standard and uses common HTTP headers, methods and response codes. Request and response bodies are all in JSON format except for PUT requests of binary file data when upload files.

Operations, Jobs and Batches

If the standard PUT, PATCH and DELETE methods cannot adequately describe an operation on a resource the operation may itself be treated as a resource and the endpoint URLs will reflect this accordingly. For example making a POST to /asset-uploads returns an AssetUpload resource which describes the URL(s) the client should PUT the binary data to upload a file to an asset.

If an operation is unlikely to complete via a synchronous REST call, or asynchronous beaviour is simpley preferable, job resource endpoints may provided for the operation. Created job resources can then be periodically polled to check the status of the operation. Such endpoits can be expected to contain a job qualifer. e.g /asset-download-jobs and /asset-download-jobs/{id}

All job resources can be expected to conform to a polymorphic job structure with common properties such as id, progress and type specific properties such as dateCompleted for successfully completed jobs.

If an operation can be applied to multiple resources an endpoint may provided to create a batch resource for the operation. Such endpoints can be expected to contain a batch qualifer. As batch operations almost always need to be asynchronous you can expect to see both qualifiers in the endpoint URL e.g /asset-download-batch-jobs and /asset-download-batch-jobs/{id}.

Obtaining a Bearer Token

Dash uses OAuth 2.0 for authoriziation. A good overview of OAuth 2.0 can be found here.

The following are the Dash-specific URLs:

Scopes to note:

  • subdomain: this should be set to the subdomain of the Dash the user is trying to access e.g. subdomain:my-account
  • offline_access: the standard OAuth 2.0 scope to use to obtain a refresh token

An audience parameter of https://assetplatform.io must be provided.

Please contact us to obtain your Client ID and Client Secret, and let us know which post-authorize redirect URLs we need to whitelist.

The Bearer Token is a standard JWT token so can be useful to decode in some cases. For example, the sub field of the Bearer Token can be used in cases where you need access to the User.id of the current user.

e.g. When making an AssetSearch with the ADDED_BY criterion to find all Asset resources added by the current user.

Alternatively the GET Current User endpoint contains properties for the current user to avoid needing to decode the Bearer Token.

Permitted Actions

In most responses from the Dash API you will find a permittedActions property alongside a result property which contains the resource. This is to provide context for operations the current user is permitted to perform on that resource.

If an expected permitted action is not included in the permittedActions property then the current user does not have permission to perform the action.

The GET Current User endpoint houses permitted actions which are not associated with a specific API resource instance. e.g. If the current user has permission to create new Asset resources then the GET Current User permittedActions property will contain the permitted action ASSETS : CREATE_ASSETS.

Common Use Cases

Getting all folders

Folders in a Dash account are represented by AttributeOptions, each of which belongs to the account's built-in Folders Attribute. The first step in getting all Folders for an account is to determine the attribute ID of the Folders Attribute, which can be done via the Folder Settings endpoint. The attribute ID of the Folders Attribute can then be used in an Attribute Option Search. It is recommended that you first search for top-level folders and then iterate through each of the folders to search for their sub-folders. The sample attribute option search requests show how to do this for a given attribute, you just need to substitute the attribute ID of your Folders Attribute.

Attributes

Attribute resources define the custom metadata schema for Asset resources in your Dash account. Every Asset in your Dash account can be assigned a value or values for each Attribute you define.

The type and structure of the data stored against the Asset for each Attribute is described by a series of properties specified on the Attribute.

Get all Attributes

Get all Attribute resources ordered by Attribute.name.

Authorizations:

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/attributes \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
[
  • {
    }
]

Get an Attribute

Get an Attribute resource.

When Attribute.hasFixedOptions = true the AttributeOption resources for this Attribute can be retrieved via an AttributeOptionSearch

Authorizations:
path Parameters
id
required
string

The unique ID of the attribute

Example: cfb665ca-ce35-4418-b9d5-70ee815db4bd

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/attributes/:id \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Attribute Options

AttributeOption resources define the set of valid choices for an Attribute when Attribute.hasFixedOptions = true.

An AttributeOption has human-readable AttributeOption.value and an AttributeOption.position which determines the order in which it appears in relation to the other AttributeOption resources for an Attribute.

If Attribute.hierarchical = true then AttributeOption.parent is the AttributeOption which is the parent node of the AttributeOption in the tree. AttributeOption.position then determines the order in which the option appears in relation to the other options with the same AttributeOption.parent.

The AttributeOption resource intentionally does not include the list of child AttributeOption resources. This is to prevent costly loading of large AttributeOption tree structures. AttributeOption.leaf and AttributeOption.numberOfChildren properties can be used to determine the number of children for a node, but it is recomended to implement a combination of lazy-loading strategies using the GET Attribute Option and POST Asstribute Option Searches resources for retrieval.

e.g. Doing a GET Attribute Option with an AttributeOption.id value found in Asset.metadata.values will give the complete branch of the tree neccessary in the context of the viewing that Asset via the AttributeOption.parent property. For traversing down an AttributeOption tree POST Asstribute Option Searches can be used to first get all the top-level options and then each sub level as and when neeeded.

Create an Attribute Option

Create a new AttributeOption resource adding it to the set of valid choices for an Attribute where Attribute.hasFixedOptions = true.

Authorizations:
Request Body schema: application/json
attributeId
string

The unique ID of the Attribute the AttributeOption should belong to

value
string

The human-readable value of the AttributeOption

position
integer

The 0-based position the AttributeOption should occupy relative to the other options

null or string
Default: null

The AttributeOption.id of the option above this one in the hierarchy

Responses

Request samples

Content type
application/json
Example
{
  • "attributeId": "a52b5315-15b8-417f-b742-d6902108bac1",
  • "value": "My Top Level Folder",
  • "position": 3,
  • "parentId": null
}

Response samples

Content type
application/json
Example
{
  • "result": {
    },
  • "permittedActions": [ ]
}

Get an Attribute Option

Authorizations:
path Parameters
id
required
string

The unique ID of the AttributeOption

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/attribute-options/:id \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
Example
{
  • "result": {
    },
  • "permittedActions": [ ]
}

Delete an attribute option

Delete an AttributeOption resource, removing it from the set of valid choices for an Attribute.

When deleting an option within a hierarchy of options all options in the hierarchy below the one being deleted will also be deleted.

Authorizations:
path Parameters
id
required
string

The unique ID of the AttributeOption

Responses

Request samples

curl -i -X DELETE \
  https://api-v1.dash.app/attribute-options/:id \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "timestamp": "2021-02-16T16:21:58.640Z",
  • "status": 401,
  • "error": "Unauthorized",
  • "message": null,
  • "path": "/folder-settings"
}

Create multiple Attribute Options

Create new AttributeOption resources adding them to the set of valid choices for an Attribute where Attribute.hasFixedOptions = true.

Authorizations:
Request Body schema: application/json
Array of objects (AttributeOptionBatchRequestItem)

Responses

Request samples

Content type
application/json
{
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "successes": {
    },
  • "failures": {
    }
}

Attribute Option Searches

Searching allows you to find AttributeOption resources in your Dash matching specific criteria

Criteria can be constructed based on direct comparison or pattern matching of a set of fixed AttributeOption properties.

The logical operators AND, OR and NOT are provided to support complex queries based on mutliple fields.

A list of sorts can also be provided to control the order in the which the results are returned.

Create an Attribute Option Search

Create a new AttributeOptionSearch

The most commmon uses of an AttributeOptionSearch is to retrieve the AttributeOption resources for an Attribute using the ATTRIBUTE_ID field criterion. When Attribute.hierarchical = true it is recommended to retrieve each level of the tree via a separate search using PARENT_ID field criteria.

Authorizations:
Request Body schema: application/json
from
required
integer
Default: 0

The item number to begin the result set from

pageSize
required
integer
Default: 100

The maximum number of items to return in the result set

any (AttributeOptionSearchCriterion)
Array of objects (AttributeOptionSort)

Sorts to be applied to the search in order of precedence

Responses

Request samples

Content type
application/json
Example
{
  • "from": 0,
  • "pageSize": 100,
  • "criterion": {
    },
  • "sorts": [
    ]
}

Response samples

Content type
application/json
Example
{
  • "results": [
    ],
  • "totalResults": 2
}

Attribute Views

AttributeViews provide an ordered view of a subset of Attributes, which can be configured by admins. This can be used to decide which Attributes to show alongside Assets in different contexts.

Get all Attribute Views

Get all AttributeViews.

Authorizations:

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/attribute-views \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
[
  • {
    }
]

Attribute Option Images

Coming soon; contact us if you need access to this API endpoint.

Assets

An Asset is the main resource in Dash. It consists of:

For the sake of permformance any Attribute and AttributeOption resources referenced in the Asset.metadata.values will need to be retrieved separately, if required.

Get an Asset.

Get an Asset

Authorizations:
path Parameters
id
required
string

The unique ID of the Asset

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/assets/:id \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Delete an Asset

Delete an Asset. All associated AssetFile resources will also be deleted.

Authorizations:
path Parameters
id
required
string

The unique ID of the Asset

Responses

Request samples

curl -i -X DELETE \
  https://api-v1.dash.app/assets/:id \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "timestamp": "2021-02-16T16:21:58.640Z",
  • "status": 401,
  • "error": "Unauthorized",
  • "message": null,
  • "path": "/folder-settings"
}

Asset Files

An AssetFile describes a version of a file for an Asset. Properties describe details of the file such as mediaType and dimensions (for images and videos). A previewUrl provides a means to access previews of the AssetFile

The current AssetFile for an Asset is returned with the Asset resource.

FThe AssetFile.id can be provided when creating an AssetDownload to downnload a specific AssetFile for an Asset.

Get an Asset's files

Get all of the AssetFile resources for the specified Asset.

Authorizations:
path Parameters
id
required
string

The unique ID of the AssetFile

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/assets/:id/files \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
[]

Asset Searches

Searching allows you to find Asset resources in your Dash matching specific criteria.

Criteria can be constructed based on direct comparison or pattern matching of fields, where fields are either Asset.metadata.values or certain fixed Asset properties. The fixed KEYWORDS field can be used for a general purpose search as it will search across all Asset.metadata.values and fixed Asset properties.

For searches involving Attribute resources where Attribute.hasFixedOptions = true a search using either the AttributeOption.id or AttributeOption.name will match.

Any Asset which is assigned an AttributeOption.id value for an Attribute resource where Attribute.hierarchical = true implicitly has the values of any parent AttributeOption resources too. As such, any search using the parents AttributeOption.id or AttributeOption.name will match the Asset.

e.g. Given the hierarchical AttributeOption structure Grandparent / Parent / Child, an Asset assigned the AttributeOption.id of Child will also be returned in searches for Parent or Grandparent.

The logical operators AND, OR and NOT are provided to support complex queries based on mutliple fields.

A list of sorts can also be provided to control the order in the which the results are returned.

The action property of a search, which defaults to SEARCH_FOR_VIEW, specifies the context in which the search is being run. For example if you only want to return Asset resources that the search User has permission to delete then set the action to be SEARCH_FOR_DELETE.

By default, searches will only returns results where Asset.stagingStatus.state = 'LIVE'. If you require search results to contain results with other state values, this needs to be explicitly included in the criteria.

Two kinds of search are possible, a standard AssetSearch and a AssetScrollSearch.

Create an Asset Search

A standard AssetSearch will only allow you to page to 10,000 results regadless of the value returned in the totalResults property.

If you need to be able to process more than 10,000 results consider an AssetScrollSearch instead.

Authorizations:
Request Body schema: application/json
from
required
integer
Default: 0

The item number to begin the result set from

pageSize
required
integer
Default: 100

The maximum number of items to return in the result set

required
any (AssetSearchCriterion)
required
Array of objects (AssetSort)

Sorts to be applied to the search in order of precedence

action
string
Default: "SEARCH_FOR_VIEW"

Specifies the context in which the search is being run. For example if you only want to return Asset resources that the search User has permission to delete then set the action to be SEARCH_FOR_DELETE.

Enum: "SEARCH_FOR_CHANGE_STAGING_STATE_TO_PENDING_APPROVAL" "SEARCH_FOR_CHANGE_STAGING_STATE_TO_LIVE" "SEARCH_FOR_DELETE" "SEARCH_FOR_EDIT" "SEARCH_FOR_PROMOTE_TO_LIVE" "SEARCH_FOR_SEND_FOR_APPROVAL" "SEARCH_FOR_VIEW"

Responses

Request samples

Content type
application/json
Example
{
  • "from": 0,
  • "pageSize": 100,
  • "criterion": {
    },
  • "sorts": [ ]
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "totalResults": 1337
}

Create an Asset Scroll Search

Asset scroll searches provide a means of scrolling one way through search results of any number of Asset reources.

Page size can stil be specified, but a scroll search will always proceed sequentially once through each page.

The AssetScrollSearch.scrollId in the search the response is used to continue the scroll search.

Authorizations:
Request Body schema: application/json
pageSize
integer
Default: 100

The maximum number of items to return in the result set

required
any (AssetSearchCriterion)
required
Array of objects (AssetSort)

Sorts to be applied to the search in order of precedence

action
string
Default: "SEARCH_FOR_VIEW"

Specifies the context in which the search is being run. For example if you only want to return Asset resources that the search User has permission to delete then set the action to be SEARCH_FOR_DELETE.

Enum: "SEARCH_FOR_CHANGE_STAGING_STATE_TO_PENDING_APPROVAL" "SEARCH_FOR_CHANGE_STAGING_STATE_TO_LIVE" "SEARCH_FOR_DELETE" "SEARCH_FOR_EDIT" "SEARCH_FOR_PROMOTE_TO_LIVE" "SEARCH_FOR_SEND_FOR_APPROVAL" "SEARCH_FOR_VIEW"

Responses

Request samples

Content type
application/json
{
  • "pageSize": 100,
  • "criterion": {
    },
  • "sorts": [
    ]
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "totalResults": 1337,
  • "scrollId": "58b0d88b-d0c9-47fc-9038-7195b234cc0b"
}

Continue an Asset Scroll Search

Continue a previoulsy started AssetScrollSearch.

You must use the scrollId resturned in each new response as a scrollId is not guarenteed to remain fixed over the course of a scroll

Authorizations:
Request Body schema: application/json
scrollId
required
string

The ID to continue the AssetScrollSearch

Responses

Request samples

Content type
application/json
{
  • "scrollId": "58b0d88b-d0c9-47fc-9038-7195b234cc0b"
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "totalResults": 1337,
  • "scrollId": "58b0d88b-d0c9-47fc-9038-7195b234cc0b"
}

Asset Uploads

An AssetUpload resource is created when you want to upload a file to an Asset. Upon completion a new AssetFile is created will subsequently be returned in Asset.curentAssetFile. You can use GET Asset Files to retrieve the all AssetFile resources for an Asset.

The AssetUpload resource defines one or more URLs to which parts of the file should be PUT to. The upload is then completed by sending a list of the eTags returned from each of these PUTs to AssetUploadComplete

Create an Asset Upload

Create a new AssetUpload resource for an existing Asset.

Authorizations:
Request Body schema: application/json
assetId
string

The ID of the Asset to create an AssetUpload for

path
string

The path of the file including filename and any folders. This path will to set the value of the Asset Folder Attribute.

size
integer

The size of the file that is to be uploaded (in bytes)

integer or null

Optionally specify the part size (in bytes) for multi-part uploading of the file. If omitted or null a default part size will be used

Responses

Request samples

Content type
application/json
{
  • "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
  • "path": "/Folder A/Folder D/a_file.jpg",
  • "size": 15318362,
  • "partSize": 7000000
}

Response samples

Content type
application/json

Create an Asset and Upload batch job

An AssetAndUploadBatchJob should be created when you want to create multiple Asset resources and also create an AssetUpload for each of them.

The AssetUpload resources in the completed job should then be used to upload the files for each and asset and complete each upload.

After the Asset resources have been created and files uploaded to them they will still be in Asset.stagingStatus.state = 'STAGED'. To send them for approval or put them live see Asset Staging Workflow.

Authorizations:
Request Body schema: application/json
Array of objects (AssetAndUploadBatchRequestItem)

Responses

Request samples

Content type
application/json
{
  • "items": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Get an Asset and Upload batch job

Get the status and eventual result of an AssetAndUploadBatchJob

Authorizations:
path Parameters
id
required
string

The unique ID of the AssetAndUploadBatchJob

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/asset-and-upload-batch-jobs/:id \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{}

Complete an Asset Upload

After an AssetUpload has been created and each part of the file data has been PUT to the relavant URL the eTag from each PUT must be sent to indicate the upload is complete.

Authorizations:
Request Body schema: application/json
assetId
string

The ID of the Asset the AssetUpload is for

uploadId
string

The unique identifier for the AssetUpload to this Asset

Array of objects (AssetUploadCompletedPart)

Responses

Request samples

Content type
application/json
{
  • "uploadId": "5a2481e0-819f-4b46-a7e6-143f943345f2,",
  • "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47,",
  • "parts": [
    ]
}

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [ ]
}

Asset Downloads

An AssetDownload resource is created when you want to download and optionally transform an AssetFile of an Asset.

When ready a URL is provided to download the transformed file.

Create an Asset Download batch job

An AssetDownloadBatchJob should be created when you want to download and optionally transform mutliple AssetFile resources.

You can optionally request that a zip is created of all the transformed files.

The transformationDescription in the request can be one of two types, CUSTOM or PRESET.

A CUSTOM transformationDescription is a list of candidateTransformations which are evaluated in turn against each AssetFile specified in the request. If the AssetFile meets the candidateTransformation.criteria then the candidateTransformation.transformation is applied. Otherwise, the next candiate is considered. The candidateTransformation.transformation is a series of operations to apply to the AssetFile in order (e.g. resize to 200 by 100 and then covert to JPG). An empty list of operations indicates the file should be left untransformed.

Putting this all together this allows you to describe a transformations such as:

  • Resized any image file, otherwise leave the file untransformed
  • Convert any image that supports transparency to PNG otherwise convert to JPG

A PRESET transformationDescription is similar to a CUSTOM transformation except the transformationDescription has been predefined. These presets are currently only configurable via the Dash frontend, but can be found via a PresetTransformationSearch.

Authorizations:
Request Body schema: application/json
Array of objects (AssetDownloadBatchRequestItem)
any (TransformationDescription)
zip
boolean

Whether to combine all the output files into a zip

Responses

Request samples

Content type
application/json
Example
{
  • "items": [
    ],
  • "transformationDescription": {
    },
  • "zip": true
}

Response samples

Content type
application/json
{
  • "id": "be161977-d44e-4888-af3c-66522e223963",
  • "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
  • "creatorId": "google-oauth2|110955770826801837334",
  • "type": "IN_PROGRESS",
  • "status": "PENDING",
  • "progress": {
    }
}

Get an Asset Download batch job

Get the status and eventual result of an AssetDownloadBatchJob

Authorizations:
path Parameters
id
required
string

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/asset-download-batch-jobs/:id \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{}

Asset Shares

An AssetShare resource is a set of Assets which has been publicly shared for a limited period of time.

Create an Asset Share

Create an AssetShare

Authorizations:
Request Body schema: application/json
assetIds
Array of strings

The set of Asset identifiers that have been shared

expiry
string <date-time>

The datetime the share will expire and no longer be accessible in ISO datetime format

Responses

Request samples

Content type
application/json
{
  • "assetIds": [
    ],
  • "expiry": "2021-02-17T09:24:01.417Z"
}

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Get an Asset Share

Get an AssetShare

This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header

path Parameters
id
required
string

The unique ID of the AssetShare

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/asset-shares/:id

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Get Asset Share Access Token

Get an access token for viewing data which has been shared as part of the AssetShare. Use this access token in the same way as the normal signed-in user token to make requests with the permissions of the share applied.

This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header

path Parameters
id
required
string

The unique ID of the AssetShare

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/asset-shares/:id/access-token

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Email an Asset Share

Send an AssetShare via email to a specified email address

Authorizations:
Request Body schema: application/json
assetShareId
string

The unique ID for the AssetShare to be emailed

email
string

The email address to send the AssetShare to

Responses

Request samples

Content type
application/json
{
  • "assetShareId": "4517a7ba-a482-4211-b97e-f4256f53fd32",
  • "email": "john.smith@gmail.com"
}

Response samples

Content type
application/json
{
  • "timestamp": "2021-02-16T16:21:58.640Z",
  • "status": 401,
  • "error": "Unauthorized",
  • "message": null,
  • "path": "/folder-settings"
}

Asset Staging Workflow

Dash provides a simple staging workflow for Asset resources to faciltate review and approval before they are accessible to other users. The staging workflow has three states

  • STAGED
  • PENDING_APPROVAL
  • LIVE

Depending on the Asset.stagingStatus.state value an Asset reources will only be visble to certain users.

Asset resources begin in the STAGED state. While in the STAGED state Asset resources are only visble to the user who created the Asset and users where User.isAdmin = true.

A User with permission to create new Asset resources may not have the permission to move it to the LIVE state. While in the PENDING_APPROVAL state Asset resources are only visble to users where User.isAdmin = true.

Once in the LIVE state Asset resources visblity is defined by UserGroup permissions (currently only configurable via the Dash frontend, not via the API)

Create an Asset Staging Workflow Transition Batch Job

Move a set of Asset resources from one Asset.stagingStatus.state to another.

The Asset resources to be added to the batch job are specified using the AssetSearch criteria language.

You must explicitly include criteria describing the state you are moving from in order to account for the fact that the Dash API will only return Assets in the 'LIVE' state by default. See the request examples for more.

Authorizations:
Request Body schema: application/json
any (AssetSearchCriterion)
transition
string (StagingWorkflowTransition)

The workflow transition. Generally describe the state moving from and to.

Enum: "STAGING_TO_PENDING_APPROVAL" "STAGING_TO_LIVE" "PENDING_APPROVAL_TO_LIVE"

Responses

Request samples

Content type
application/json
Example
{
  • "transition": "STAGING_TO_PENDING_APPROVAL",
  • "criterion": {
    }
}

Response samples

Content type
application/json
{
  • "id": "be161977-d44e-4888-af3c-66522e223963",
  • "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
  • "creatorId": "google-oauth2|110955770826801837334",
  • "type": "IN_PROGRESS",
  • "status": "PENDING",
  • "progress": {
    }
}

Get an Asset Staging Workflow Transition batch job

Authorizations:
path Parameters
id
required
string

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/asset-staging-workflow-transition-batch-jobs/:id \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "id": "be161977-d44e-4888-af3c-66522e223963",
  • "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
  • "creatorId": "google-oauth2|110955770826801837334",
  • "type": "COMPLETED",
  • "progress": {
    },
  • "dateCompleted": "2021-02-15T09:24:01.417Z"
}

Asset Deletion

Coming soon; contact us if you need access to this API endpoint.

Asset Metadata Edit

Coming soon; contact us if you need access to this API endpoint.

Folder Settings

For the most part Folders in Dash are just like any custom Attribute with Attribute.hasFixedOptions = true, Attribute.hierarchical = true and Attribute.multiValue = true.

The Folders Attribute also has the following behaviour.

  • It cannot be deleted - Attribute.indestructable = true
  • It is used to define Asset permissions for a UserGroup (currently only configurable via the Dash frontend, not via the API)
  • A quick browse widget of your Folders Attribute appears on your Dash app homepage.

Folder Settings specify the Attribute.id of the Folders Attribute in your Dash.

Get Folder Settings

Authorizations:

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/folder-settings \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Search Filters

The Search Filter View defines which filters appear, and the order in which they appear, in the left hand filter bar on the search page in the Dash frontend. These filters are used to build search criteria.

Filters either refer to an Attribute in your Dash or a one of a subset of the fixed search fields available in the search API (currently DATE_ADDED, FILE_TYPE or STAGED)

Get the Search Filter view

Get the SearchFilter resources that have been configured as in use

Authorizations:

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/search-filter-view \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
  • "searchFilters": [
    ]
}

Preset Transformations

Create a Preset Transformation Search

Create a new PresetTransformationSearch. This is most commonly used for finding presets that are applicable to a set of assets, so that one can be selected for use to create some AssetDownloads.

Authorizations:
Request Body schema: application/json
from
required
integer
Default: 0

The item number to begin the result set from

pageSize
required
integer
Default: 100

The maximum number of items to return in the result set

any (PresetTransformationSearchCriterion)
Array of objects (PresetTransformationSort)

Sorts to be applied to the search in order of precedence

Responses

Request samples

Content type
application/json
{
  • "from": 0,
  • "pageSize": 100,
  • "criterion": {
    },
  • "sorts": [ ]
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "totalResults": 2
}

Users

The User resource contains information about a user in Dash such as their email address and their name (if provided).

Get the current user

Get the currently authenticated User

Authorizations:

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/current-user \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

User Searches

Coming soon; contact us if you need access to this API endpoint.

Collections

A Collection is a user defined set of Asset resources.

The Asset resources in a Collection are not returned with the Collection resource. To get the Asset resources you must create an Asset Search and use the Collection.id as the value in a COLLECTIONS : FIELD_EQUALS criterion.

Collection Searches

Searching allows you to find Collection resources in your Dash matching specific criteria.

A list of sorts can also be provided to control the order in the which the results are returned.

Create a Collection Search

Create a new CollectionSearch

The most commmon use of an CollectionSearch is to retrieve all the Collection resources assocaited with a User

Authorizations:
Request Body schema: application/json
from
required
integer
Default: 0

The item number to begin the result set from

pageSize
required
integer
Default: 100

The maximum number of items to return in the result set

any (CollectionSearchCriterion)
Array of objects (CollectionSort)

Sorts to be applied to the search in order of precedence

Responses

Request samples

Content type
application/json
{
  • "from": 0,
  • "pageSize": 100,
  • "criterion": {
    },
  • "sorts": [
    ]
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "totalResults": 3
}

Collection Shares

A CollectionShare is a Collection that has been made accesible to anyone with the id or slug of the Collection.

Create a Collection Share

Create a new CollectionShare, making a Collection available to anyone who has one of the CollectionShare.slugs.

Authorizations:
Request Body schema: application/json
collectionId
any

The unique ID of the Collection to be shared

Responses

Request samples

Content type
application/json
{
  • "collectionId": "a52b5315-15b8-417f-b742-d6902108bac1"
}

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Get a Collection Share

Get a CollectionShare

This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header

path Parameters
id
required
string

The unique ID of the CollectionShare

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/collection-shares/:id

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Collection Share Searches

Searching allows you to find CollectionShare resources in your Dash matching specific criteria.

A list of sorts can also be provided to control the order in the which the results are returned.

Create a Collection Share Search

Create a new CollectionShareSearch

This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header

Request Body schema: application/json
from
required
integer
Default: 0

The item number to begin the result set from

pageSize
required
integer
Default: 100

The maximum number of items to return in the result set

any (CollectionShareSearchCriterion)
Array of objects (CollectionShareSort)

Sorts to be applied to the search in order of precedence

Responses

Request samples

Content type
application/json
{
  • "from": 0,
  • "pageSize": 100,
  • "criterion": {
    },
  • "sorts": [
    ]
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "totalResults": 15
}

Saved Searches

A SavedSearch is an AssetSearch(#tag/Assets-Searches).criterion and AssetSearch(#tag/Assets-Searches).sorts that have been saved by a user. The user may also chose to recieve email updates every time a new asset matches the saved criterion.

Create a Saved Search

Create a new SavedSearch resource.

Authorizations:
Request Body schema: application/json
name
required
string

Name of the SavedSearch

emailUserOnNewUploads
required
boolean

Whether to email the creator when a new upload matches the saved search criterion

required
any (AssetSearchCriterion)
required
Array of objects (AssetSort)

Sorts to be applied to the search in order of precedence

Responses

Request samples

Content type
application/json
{
  • "name": "My favourite search",
  • "emailUserOnNewUploads": true,
  • "criterion": {
    },
  • "sorts": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "1627573b-1273-441e-90d1-505d1f8ab47c",
  • "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
  • "creatorId": "google-oauth2|110955770826801837334",
  • "name": "My favourite search",
  • "emailUserOnNewUploads": true,
  • "criterion": {
    },
  • "sorts": [
    ]
}

Get a Saved Search

Get a SavedSearch resource.

Authorizations:
path Parameters
id
required
string

The unique ID of the SavedSearch

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/saved-searches/:id \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Patch a Saved Search

Update a SavedSearch resource. Only the provided fields will be updated

Authorizations:
path Parameters
id
required
string

The unique ID of the SavedSearch

Request Body schema: application/json
name
string

Name of the SavedSearch

emailUserOnNewUploads
boolean

Whether to email the creator when a new upload matches the saved search criterion

Responses

Request samples

Content type
application/json
{
  • "name": "My favourite search",
  • "emailUserOnNewUploads": true
}

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Saved Search Searches

Searching allows you to find SavedSearches resources in your Dash matching specific criteria.

Create a Saved Search Search

Create a new SavedSearchSearch

The only use of a SavedSearchSearch as of now is to retrieve all the SavedSearch resources created by a User

Authorizations:
Request Body schema: application/json
from
required
integer
Default: 0

The item number to begin the result set from

pageSize
required
integer
Default: 100

The maximum number of items to return in the result set

required
any (SavedSearchSearchCriterion)
sorts
required
Array of objects

This search does not accept any sorts, but has the sorts parameter anyway to fit in with other searches. You must always provide an empty list for this parameter.

Responses

Request samples

Content type
application/json
{
  • "from": 0,
  • "pageSize": 100,
  • "criterion": {
    },
  • "sorts": [ ]
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "totalResults": 3
}

Asset Download Event Searches

Coming soon; contact us if you need access to this API endpoint.

Portals

Coming soon; contact us if you need access to this API endpoint.

Get Portal Access Token

Get an access token for making requests as Portal user. Use this access token in the same way as the normal signed-in user token to make requests with the permissions of the share applied.

This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header

path Parameters
id
required
string

The unique ID of the Portal

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/portals/:id/access-token

Response samples

Content type
application/json
{
  • "result": {
    },
  • "permittedActions": [
    ]
}

Email a Portal

Send a Portal via email to a specified email address

Authorizations:
Request Body schema: application/json
portalId
string

The unique ID for the Portal to be emailed

email
string

The email address to send the Portal to

Responses

Request samples

Content type
application/json
{
  • "portalId": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
  • "email": "john.smith@gmail.com"
}

Response samples

Content type
application/json
{
  • "timestamp": "2021-02-16T16:21:58.640Z",
  • "status": 401,
  • "error": "Unauthorized",
  • "message": null,
  • "path": "/folder-settings"
}

Corebook

At present the Corebook integration with Dash is configured entirely within Corebook. However, Dash allows admins to set their CorebookSettings.corebookUrl, which will then show up as a "Brand" link to all users.

Get Corebook settings

Authorizations:

Responses

Request samples

curl -i -X GET \
  https://api-v1.dash.app/corebook-settings \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Response samples

Content type
application/json
{
  • "result": {},
  • "permittedActions": [
    ]
}

Put Corebook settings

Authorizations:
Request Body schema: application/json
enabled
boolean

Whether Corebook integration is enable

corebookUrl
string

The URL to Corebook that will be used to link users to the brand guidelines

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "result": {},
  • "permittedActions": [
    ]
}

Subdomains

A SubdomainAvailabilityCheck is used to check whether a Dash subdomain is in use or not.

Check subdomain availability

This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header

Request Body schema: application/json
subdomain
string

The subdomain to check for availability

Responses

Request samples

Content type
application/json
{
  • "subdomain": "my-company"
}

Response samples

Content type
application/json
{
  • "subdomain": "my-company",
  • "isAvailable": true
}