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 behaviour is simply preferable, job resource endpoints may provided for the operation.
Created job resources can then be periodically polled to Get the status of the operation.
Such endpoints can be expected to contain a job
qualifier. 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
qualifier.
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}
.
You should read the OAuth2 section if you want to set up programmatic API access to Dash. However, if you just want to try out an API endpoint, or want to request your client ID and secret (required for OAuth2 below), you can get a short-lived bearer token:
This token can be used to try out an endpoint directly from these docs. Just click "Try it..." in the right-hand panel and enter your token in the "Auth" tab.
Dash uses OAuth 2.0 for authorisation. A good overview of OAuth 2.0 can be found here.
Endpoints:
Scopes to note:
subdomain:my-account
Audience:
An query parameter of audience=https://assetplatform.io
must be provided to the https://login.dash.app/authorize endpoint
To obtain your client ID and secret, follow the steps above to get a temporary bearer token and use this to create custom integration settings. The response you receive from the custom integrations settings endpoint will include your client ID and secret.
To begin the flow, send your user in a browser to to
Once the user successfully authenticates, they will be redirected to your redirect_uri
with the Authorization Code provided in a query parameter.
Now that you have an Authorization Code, you must exchange it for your tokens via the https://login.dash.app/oauth/token endpoint
curl --request POST \
--url 'https://login.dash.app/oauth/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=authorization_code \
--data 'client_id={YOUR_CLIENT_ID}' \
--data 'client_secret={YOUR_CLIENT_SECRET}' \
--data 'code={CODE_FROM_PREVIOUS_STEP}' \
--data 'redirect_uri={YOUR_REDIRECT}'
A more detailed description of the Authorization Code Flow can be found here
Due to security concerns, neither OAuth grant types Client Credentials
or Password
are supported by the Dash API.
If you require an automated script to call the Dash API, we recommend going through the Authorization Code Flow described above once, specifying the offline_access scope to get a refresh token along with your access token. Your script can store and use this refresh token to call https://login.dash.app/oauth/token and get a new access token when the current one expires.
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 STAGED_BY
criterion to find all Asset
resources staged by the current user.
Alternatively the GET Current User endpoint contains properties for the current user to avoid needing to decode the Bearer Token.
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
.
Asset.metadata
consists of a map of String
to String[]
The keys for map are Field
IDs. Full details, including the field name, can be got via the GET Field endpoint or the full list of fields for an account can be retrieved via the GET Fields endpoint.
The map values are a list of plain text values if Field.hasFixedOptions = false
or a list of FieldOption
IDs if Field.hasFixedOptions = true
Where Field.hasFixedOptions = true
details, including the field option name, can be got via the GET Field Option endpoint.
Where Field.hierarchical = true
the complete branch of the tree will be returned and can be constructed via the FieldOption.parent
property.
The full list of fields for an account can be retrieved via the GET Fields endpoint.
Where Field.hasFixedOptions = true
the POST Field Option Searches endpoint can be used to get the available options.
Where Field.hierarchical = true
you should start with a PARENT_ID
FIELD_IS_EMPTY
query to get the top level options and then PARENT_ID
FIELD_EQUALS
queries to get each sub-level.
A Folder in Dash is simply a FieldOption
, for the built-in Folders Field
. To determine the ID of the Folders Field
, use the Folder Settings
endpoint. Once you have this ID, Folders behave the same as any other Field
.
For getting the folder tree see Getting fields and field options for asset metadata and Getting the full schema of fields and field options
For getting assets in folders see AssetSearch
For getting assets in no folders see the Search for field is empty example in the POST Asset Searches endpoint.
Assets are the main resources in Dash. An asset consists of a file, some fixed properties (such as the date the asset was added to Dash) and custom metadata.
To create new assets and upload files:
AssetUpload
resources in the job's result
property. For each file you want to upload:AssetUploadPart
.etag
property from the response of each PUT request and use them to complete the upload via the (POST Asset Upload Completion)(#operation/postAssetUploadCompletion)STAGED
. Use the POST Asset lifecycle transition batch job endpoint if you'd like to change the state of the assets (e.g. to PENDING_APPROVAL
or LIVE
).AssetUpload
via the POST Asset Upload endpointAssetUploadPart
.etag
property from the response of each PUT request and use them to complete the upload via the (POST Asset Upload Completion)(#operation/postAssetUploadCompletion)The current AssetFile
for an Asset
is returned in the Asset
resource via the Asset.currentFile
property.
The GET Asset Files endpoint can be used to get all AssetFile
resources for an Asset
Edit the contents of one or more Asset.metadata
map properties via the POST Asset Metadata Edit Batch Job endpoint and check on the progress and status of the edit via the GET Asset Metadata Edit Batch Job endpoint.
ASSOCIATED_WITH_USER
criterion of the POST Collection Search endpoint to get all collections a user has access to.Asset
resources in each collection see the All assets in a collection and Search within assets in a collection examples in the POST Asset Searches endpoint for how to specify the Collection.id
in a COLLECTIONS
: FIELD_EQUALS
criterion.See the Search by file extension and Search by multiple file extensions example in the POST Asset Searches endpoint
The following date properties exist on an asset and can be supplied as FIXED field criteria in the POST Asset Searches endpoint
Asset.lifecycleStatus.dateStaged
: The datetime the Asset
was created but not yet live. DATE_STAGED
in search criteria.Asset.lifecycleStatus.datePendingApproval
: The datetime the Asset
was set for approval (if it was). DATE_PENDING_APPROVAL
in search criteria.Asset.lifecycleStatus.dateLive
: The datetime the Asset
was put live. DATE_LIVE
in search criteria.Asset.currentAssetFile.dateAdded
: The datetime the latest AssetFile
was added. DATE_LAST_ASSET_FILE_ADDED
in search criteria.Asset.dateLastModified
: The datetime the any change was made to an Asset
. This includes all of the above and any change to custom metadata DATE_LAST_MODIFIED
in search criteria.There is currently no way to determine if only custom metadata has changes.
Several breaking changes have been introduced in the switch from V1 to V2, which are all the result of three changes.
brightdash.app
to dash.app
. All URLs used to access the API, including for authorisation, should be updated to the new domain.Attribute
has been renamed to Field
throughout, to mirror the change of terminology within the Dash frontend.All these changes are described in more specific detail below.
asset-staging-workflow-transition-batch-jobs
to asset-lifecycle-transition-batch-jobs
.criterion
in the POST body has become selector
, and the criterion now needs to be wrapped in the following {"type": "BY_CRITERION", "criterion": {...}}
.For both scroll and paged searches:
criterion.field.fieldName
and sorts.field.fieldName
values have been renamed:DATE_ADDED
-> DATE_LIVE
ADDED_BY
-> STAGED_BY
stagingStatus
, addedBy
, and dateAdded
fields have been removed from the response. This data can now be found in the lifecycleStatus
field.criterion
in the POST body has become selector
, and the criterion now needs to be wrapped in the following {"type": "BY_CRITERION", "criterion": {...}}
.criterion
in the POST body has become selector
, and the criterion now needs to be wrapped in the following {"type": "BY_CRITERION", "criterion": {...}}
.searchField
field of search filter results of type HARD_CODED_FREE_OPTION
have changed from DATE_ADDED
to DATE_LIVE
. This isn't really a breaking change as the specification says this field could return any string, but it feels worth mentioning.criterion.field.fieldName
and sorts.field.fieldName
values have been renamed for both POSTing and GETting SavedSearches:DATE_ADDED
-> DATE_LIVE
ADDED_BY
-> STAGED_BY
Attribute
has been replaced with the string Field
throughout. This includes e.g. AttributeOption
being renamed to FieldOption
. A simple find and replace should be enough to migrate.Coming soon; contact us if you need access to this API endpoint.
Create a new PubliclyAvailableAccountData
.
This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header
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 (PubliclyAvailableAccountDataSearchCriterion) |
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. |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "Folder",
- "field": "SUBDOMAIN"
}, - "sorts": [ ]
}
{- "results": [
- {
- "result": {
- "id": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "subdomain": "planto",
- "accentColour": "#333666",
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
], - "totalResults": 15
}
Coming soon; contact us if you need access to this API endpoint.
Coming soon; contact us if you need access to this API endpoint.
For the most part Folders in Dash are just like any custom Field
with Field.hasFixedOptions = true
, Field.hierarchical = true
and Field.multiValue = true
.
The Folders Field
also has the following behaviour.
Field.indestructable = true
Asset
permissions for a UserGroup
(currently only configurable via the Dash frontend, not via the API)Field
appears on your Dash app homepage.Folder Settings specify the Field.id
of the Folders Field
in your Dash.
curl -i -X GET \ https://api-v2.dash.app/folder-settings \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "fieldId": "7756d388-110c-4712-b350-0b2b48e156c1"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Coming soon; contact us if you need access to this API endpoint.
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
.
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 |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "AND",
- "criteria": [
- {
- "type": "APPLICABLE_FOR_ANY_ASSETS",
- "assetIds": [
- "2b746f61-d36d-4627-a547-936f6f20594b"
]
}, - {
- "type": "NOT",
- "criterion": {
- "type": "HAS_TRANSFORMATION_OF_TYPE",
- "transformationType": "CROP"
}
}
]
}, - "sorts": [ ]
}
{- "results": [
- {
- "result": {
- "id": "a060635d-5807-4115-a2ed-f0588d47e7ba",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Medium",
- "position": 1,
- "candidatePresetTransformations": [
- {
- "criteria": [
- {
- "type": "MATCHES_MEDIA_TYPES",
- "mediaTypes": [
- {
- "type": "image",
- "subType": "*"
}, - {
- "type": "application",
- "subType": "psd"
}
]
}, - {
- "type": "IS_TRANSPARENT",
- "isTransparent": true
}
], - "transformationTemplate": [
- {
- "type": "RESIZE",
- "width": 1200,
- "height": 1200
}, - {
- "type": "CONVERT",
- "mediaType": {
- "type": "image",
- "subType": "png"
}
}
]
}, - {
- "criteria": [
- {
- "type": "MATCHES_MEDIA_TYPES",
- "mediaTypes": [
- {
- "type": "image",
- "subtype": "*"
}, - {
- "type": "application",
- "subtype": "psd"
}
]
}, - {
- "type": "IS_TRANSPARENT",
- "isTransparent": false
}
], - "transformationTemplate": [
- {
- "type": "RESIZE",
- "width": 1200,
- "height": 1200
}, - {
- "type": "CONVERT",
- "mediaType": {
- "type": "image",
- "subType": "jpeg"
}
}
]
}
]
}, - "permittedActions": [ ]
}, - {
- "result": {
- "id": "917087a6-8f76-4e77-be14-1ac637637c69",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Large",
- "position": 2,
- "candidatePresetTransformations": [
- {
- "criteria": [
- {
- "type": "MATCHES_MEDIA_TYPES",
- "mediaTypes": [
- {
- "type": "image",
- "subType": "*"
}, - {
- "type": "application",
- "subType": "psd"
}
]
}, - {
- "type": "IS_TRANSPARENT",
- "isTransparent": true
}
], - "transformationTemplate": [
- {
- "type": "RESIZE",
- "width": 1200,
- "height": 1200
}, - {
- "type": "CONVERT",
- "mediaType": {
- "type": "image",
- "subType": "png"
}
}
]
}, - {
- "criteria": [
- {
- "type": "MATCHES_MEDIA_TYPES",
- "mediaTypes": [
- "image/*",
- "application/psd"
]
}, - {
- "type": "IS_TRANSPARENT",
- "isTransparent": false
}
], - "transformationTemplate": [
- {
- "type": "RESIZE",
- "width": 2500,
- "height": 2500
}, - {
- "type": "CONVERT",
- "mediaType": {
- "type": "image",
- "subType": "jpeg"
}
}
]
}
]
}, - "permittedActions": [ ]
}
], - "totalResults": 2
}
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 a Field
in your Dash or a one of a subset of the fixed search fields available in the search API (currently DATE_LIVE
, FILE_TYPE
or STAGED
)
Get the SearchFilter
resources that have been configured as in use
curl -i -X GET \ https://api-v2.dash.app/search-filter-view \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "searchFilters": [
- {
- "type": "FIELD",
- "id": "502d1473-f047-4a2c-9885-16274e4407b9",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "fieldId": "88eb1aca-cf98-4e87-9165-33e7be8b1ea1",
- "allowEmpty": true
}, - {
- "type": "HARD_CODED_FIXED_OPTION",
- "id": "cb8ad3d9-0c26-4f0e-9884-585d24a86d59",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "searchField": "FILE_TYPE",
- "allowEmpty": false,
- "name": "File Type",
- "options": [
- "Image",
- "Video",
- "Audio",
- "Document",
- "Other"
]
}, - {
- "type": "HARD_CODED_FREE_OPTION",
- "id": "5c02e3a0-57f2-4576-b41c-a0a4e30688bd",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "searchField": "DATE_LIVE",
- "name": "Date Added",
- "dataType": "DATE_TIME",
- "allowEmpty": false
}, - {
- "type": "HARD_CODED_USER",
- "id": "246b1496-61d3-4b23-ad8e-d6dc990e9ef6",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "searchField": "STAGED_BY",
- "name": "Added by",
- "allowEmpty": false
}
]
}
Coming soon; contact us if you need access to this API endpoint.
Coming soon; contact us if you need access to this API endpoint.
Coming soon; contact us if you need access to this API endpoint.
Create a new ThemeSearch
. This can be used to search for a theme by subdomain.
This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header
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 (ThemeSearchCriterion) |
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. |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "string",
- "value": "Folder",
- "field": "SUBDOMAIN"
}, - "sorts": [ ]
}
{- "results": [
- {
- "result": {
- "accentColour": "#333666",
- "showRecentlyAddedAssets": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
], - "totalResults": 15
}
An Asset
is the main resource in Dash. It consists of:
AssetFile
resources, detailing the versions of a file for an Asset
. Only the current AssetFile
for an Asset
is returned with the Asset
resource. Use GET Asset Files to retrieve all AssetFile
resources for an Asset
Asset.metadata
which defines the assigned values for this Asset
for Field
resourcesaddedBy
the User.id
of whoever added the Asset
For the sake of performance any Field
and FieldOption
resources referenced in the Asset.metadata.values
will need to be retrieved separately, if required.
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 Field
resources where Field.hasFixedOptions = true
a search using either the FieldOption.id
or FieldOption.name
will match.
Any Asset
which is assigned an FieldOption.id
value for a Field
resource where Field.hierarchical = true
implicitly has the values of any parent FieldOption
resources too.
As such, any search using the parents FieldOption.id
or FieldOption.name
will match the Asset
.
e.g. Given the hierarchical FieldOption
structure Grandparent / Parent / Child
, an Asset
assigned the FieldOption.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 multiple 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.lifecycleStatus.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
.`
Dash provides a simple lifecycle for Asset
resources to facilitate review and approval before they are accessible to other users, and also keep them BINNED
after deletion so they can be retrieved.
The lifecycle has four states
Depending on the Asset.lifecycleStatus.state
value an Asset
resources will only be visible to certain users.
Asset
resources begin in the STAGED
state.
While in the STAGED
state Asset
resources are only visible 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 visible to users where User.isAdmin = true
.
Once in the LIVE
state Asset
resources visibility is defined by UserGroup
permissions (currently only configurable via the Dash frontend, not via the API)
User
can change the state of Assets
to BINNED
when the Asset
is LIVE
. A BINNED
Asset
can be restored to LIVE
.
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.
The AssetFile.id
can be provided when creating an AssetDownload
to download a specific AssetFile
for an Asset
.
An AssetUpload
resource is created when you want to upload a file to an Asset
.
Upon completion a new AssetFile
is created and will subsequently be returned in Asset.currentAssetFile
.
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.
Below is an example CURL PUT request that could be used to upload a local file part to an upload part URL taken from an AssetUpload
:
curl --request PUT '<UPLOAD_PART_URL>' \
--header 'Content-Length: <SIZE_OF_PART>' \
--header 'Content-Type: <FILE_CONTENT_TYPE>' \
--data '@<PATH_TO_FILE_PART>'
The upload is then completed by sending a list of the eTags returned from each of these PUTs to AssetUploadComplete
Get an Asset
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/assets/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "id": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "lifecycleStatus": {
- "state": "STAGED",
- "dateStaged": "2021-02-15T09:24:01.417Z",
- "stagedBy": "google-oauth2|110457667287511486432"
}, - "dateLastModified": "2021-02-17T09:24:01.417Z",
- "metadata": {
- "version": 11,
- "values": {
- "a52b5315-15b8-417f-b742-d6902108bac1": [
- "A view from a mountain"
], - "f992794c-85db-11eb-8dcd-0242ac130003": [
- "Outdoors",
- "Mountain",
- "Snow"
], - "219bc1fa-85dc-11eb-8dcd-0242ac130003": [
- "a32fe863-0a1d-4b54-990a-b094139cf81c",
- "0e1bddba-9339-4e6e-b5ae-3adc60ad927a"
]
}
}, - "currentAssetFile": {
- "id": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "size": 44040192,
- "filename": "a_file.jpg",
- "checksum": "120EA8A25E5D487BF68B5F7096440019",
- "dateAdded": "2021-02-15T09:26:01.417Z",
- "fileType": "IMAGE",
- "dimensions": {
- "width": 800,
- "height": 600
}, - "orientation": "PORTRAIT",
- "orientationTransformation": "HORIZONTAL",
- "duration": null,
- "usesTransparency": false,
- "mediaType": {
- "type": "image",
- "subType": "jpeg"
}, - "gpsLocation": {
- "latitude": 50.8256345,
- "longitude": -0.143761
},
}, - "stats": {
- "downloadCount": 42
}, - "contextComments": {
- "property1": {
- "count": 4
}, - "property2": {
- "count": 4
}
}, - "origin": {
- "type": "GUEST_UPLOAD",
- "guestUploadId": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "temporarySessionId": "431263a2-a84a-4a35-86a1-c9a1ea435600"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/assets/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
An AssetAndUploadBatchJob
should be created when you want to create multiple Asset
resources and also create an AssetUpload
for each of them.
Each asset can be uploaded in a single part or in multiple parts. If the filesize is less than 5MiB then it must be uploaded in a single part. If the filesize is greater than 5GiB then it must be uploaded in multiple parts, each smaller than 5GiB.
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.lifecycleStatus.state = 'STAGED'
.
To send them for approval or put them live see Asset Lifecycle.
required | Array of objects (AssetAndUploadBatchRequestItem) |
{- "items": [
- {
- "batchItemId": "my-item-1",
- "path": "/Folder A/Folder D/a_file.jpg",
- "size": 15318362,
- "partSize": 7000000,
- "partUrlsRequest": {
- "uploadId": "5a2481e0-819f-4b46-a7e6-143f943345f2",
- "urlRequests": [
- {
- "partNumber": 2,
- "contentMd5": "86fb269d190d2c85f6e0468ceca42a20"
}
]
}
}
]
}
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "IN_PROGRESS",
- "progress": {
- "steps": [
- {
- "name": "STEP_NAME",
- "status": "STARTED",
- "completedItems": 0,
- "totalItems": 2
}
]
}, - "status": "PENDING"
}
Get the status and eventual result of an AssetAndUploadBatchJob
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/asset-and-upload-batch-jobs/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "COMPLETED",
- "progress": {
- "steps": [
- {
- "id": "assetAndUploadGetJobItemsStep",
- "status": "COMPLETED",
- "completedItems": 2,
- "totalItems": 2
}, - {
- "id": "assetAndUploadProcessJobItemsStep",
- "status": "COMPLETED",
- "completedItems": 2,
- "totalItems": 2
}
]
}, - "dateCompleted": "2021-02-15T09:24:01.417Z",
- "result": {
- "successes": {
- "file-1": {
- "result": {
- "id": "5a2481e0-819f-4b46-a7e6-143f943345f2",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "uploadParts": [
- {
- "partNumber": 1,
- "startByte": 0,
- "endByte": 6999999,
}, - {
- "partNumber": "2,",
- "startByte": 7000000,
- "endByte": 13999999,
}, - {
- "partNumber": 3,
- "startByte": 14000000,
- "endByte": 15318361,
}
]
}, - "permittedActions": [ ]
}, - "file-2": {
- "result": {
- "id": "9f49416e-0813-4930-bf44-a3414ac57938",
- "assetId": "86739a63-a4f3-4655-bd45-7a567379356c",
- "uploadParts": [
- {
- "partNumber": 1,
- "startByte": 0,
- "endByte": 123456,
}
]
}, - "permittedActions": [ ]
}
}
}
}
Create a new AssetUpload
resource for an existing Asset
.
assetId required | string The ID of the |
assetFileId | |
path required | string The path of the file including filename and any folders. This path will to set the value of the |
size required | integer The size of the file that is to be uploaded (in bytes) |
partSize | integer <= 5368709120 Nullable Optionally specify the part size (in bytes) for multi-part uploading of the file. This must be less than 5368709120, and more than 5242880 unless it is the final part. If omitted or null a default part size will be used. |
object (AssetUploadPartUrlsRequest) |
{- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "assetFileId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "path": "/Folder A/Folder D/a_file.jpg",
- "size": 15318362,
- "partSize": 7000000,
- "partUrlsRequest": {
- "uploadId": "5a2481e0-819f-4b46-a7e6-143f943345f2",
- "urlRequests": [
- {
- "partNumber": 2,
- "contentMd5": "86fb269d190d2c85f6e0468ceca42a20"
}
]
}
}
{- "result": {
- "id": "5a2481e0-819f-4b46-a7e6-143f943345f2",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "assetFileId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "uploadParts": [
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
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.
assetId | string The ID of the |
uploadId | string The unique identifier for the |
Array of objects (AssetUploadCompletedPart) |
{- "uploadId": "5a2481e0-819f-4b46-a7e6-143f943345f2",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "parts": [
- {
- "partNumber": 1,
- "eTag": "569726cc-2149-4167-abee-26a068fbda22"
}, - {
- "partNumber": 2,
- "eTag": "a9398831-2221-4c1f-90e7-b467b926aa16"
}, - {
- "partNumber": 3,
- "eTag": "820f3b61-3ac7-481c-a6e4-d6c5041683af"
}
]
}
{- "result": {
- "type": "SUCCESS"
}, - "permittedActions": [ ]
}
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/assets/:id/files \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "result": {
- "id": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "size": 44040192,
- "filename": "a_file.jpg",
- "checksum": "120EA8A25E5D487BF68B5F7096440019",
- "dateAdded": "2021-02-15T09:26:01.417Z",
- "fileType": "IMAGE",
- "dimensions": {
- "width": 800,
- "height": 600
}, - "orientation": "PORTRAIT",
- "orientationTransformation": "HORIZONTAL",
- "duration": null,
- "usesTransparency": false,
- "mediaType": {
- "type": "image",
- "subType": "jpeg"
}, - "gpsLocation": {
- "latitude": 50.8256345,
- "longitude": -0.143761
},
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
]
Delete an AssetFile
resource.
The Asset's current AssetFile cannot be deleted and will return an error if tried. (Only older version AssetFiles can be deleted.)
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/asset-files/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
An AssetDownloadBatchJob
should be created when you want to download and optionally transform multiple 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:
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
.
required | Array of objects (AssetDownloadBatchRequestItem) |
required | any (TransformationDescription) |
zip required | boolean Whether to combine all the output files into a zip |
{- "items": [
- {
- "batchItemId": "download-1",
- "assetId": "2b746f61-d36d-4627-a547-936f6f20594b"
}, - {
- "batchItemId": "download-2",
- "assetId": "23cfaab7-c9f3-4b28-ac21-7b5b18f2519a"
}, - {
- "batchItemId": "download-3",
- "assetId": "1ef8108f-6c94-4112-9736-abd147a7a940"
}
], - "transformationDescription": {
- "type": "CUSTOM",
- "candidateTransformations": [
- {
- "criteria": [
- {
- "type": "MATCHES_MEDIA_TYPES",
- "mediaTypes": [
- {
- "type": "*",
- "subType": "*"
}
]
}
], - "transformation": [
- {
- "type": "RESIZE",
- "width": 100,
- "height": 200
}, - {
- "type": "CONVERT",
- "mediaType": {
- "type": "image",
- "subType": "jpeg"
}
}
]
}
]
}, - "zip": true
}
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "IN_PROGRESS",
- "status": "PENDING",
- "progress": {
- "steps": [
- {
- "id": "assetDownloadGetJobItemsStep",
- "status": "STARTED",
- "completedItems": 0,
- "totalItems": 0
}, - {
- "id": "assetDownloadProcessJobItemsStep",
- "status": "PENDING",
- "completedItems": 0,
- "totalItems": 0
}
]
}
}
Get the status and eventual result of an AssetDownloadBatchJob
id required | string |
curl -i -X GET \ https://api-v2.dash.app/asset-download-batch-jobs/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "COMPLETED",
- "progress": {
- "steps": [
- {
- "id": "assetDownloadGetJobItemsStep",
- "status": "COMPLETED",
- "completedItems": 3,
- "totalItems": 3
}, - {
- "id": "assetDownloadProcessJobItemsStep",
- "status": "COMPLETED",
- "completedItems": 3,
- "totalItems": 3
}
]
}, - "dateCompleted": "2021-02-15T09:24:01.417Z",
- "result": {
- "successes": {
- "download-1": {
- "permittedActions": [ ]
}, - "download-2": {
- "permittedActions": [ ]
}, - "download-3": {
- "permittedActions": [ ]
}
},
}
}
A standard AssetSearch
will only allow you to page to 10,000 results regardless 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.
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" Enum: "SEARCH_FOR_CHANGE_LIFECYCLE_STATE_TO_PENDING_APPROVAL" "SEARCH_FOR_CHANGE_LIFECYCLE_STATE_TO_LIVE" "SEARCH_FOR_CHANGE_LIFECYCLE_STATE_TO_BINNED" "SEARCH_FOR_DELETE" "SEARCH_FOR_EDIT" "SEARCH_FOR_PROMOTE_TO_LIVE" "SEARCH_FOR_SEND_FOR_APPROVAL" "SEARCH_FOR_VIEW" |
object A map of requested aggregations. The results will be returned in a map with the same provided keys. |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "a32fe863-0a1d-4b54-990a-b094139cf81c",
- "field": {
- "type": "FIELD",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1"
}
}, - "sorts": [ ]
}
{- "results": [
- {
- "result": {
- "id": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "lifecycleStatus": {
- "state": "STAGED",
- "dateStaged": "2021-02-15T09:24:01.417Z",
- "stagedBy": "google-oauth2|110457667287511486432"
}, - "dateLastModified": "2021-02-17T09:24:01.417Z",
- "metadata": {
- "version": 11,
- "values": {
- "a52b5315-15b8-417f-b742-d6902108bac1": [
- "A view from a mountain"
], - "f992794c-85db-11eb-8dcd-0242ac130003": [
- "Outdoors",
- "Mountain",
- "Snow"
], - "219bc1fa-85dc-11eb-8dcd-0242ac130003": [
- "a32fe863-0a1d-4b54-990a-b094139cf81c",
- "0e1bddba-9339-4e6e-b5ae-3adc60ad927a"
]
}
}, - "currentAssetFile": {
- "id": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "size": 44040192,
- "filename": "a_file.jpg",
- "checksum": "120EA8A25E5D487BF68B5F7096440019",
- "dateAdded": "2021-02-15T09:26:01.417Z",
- "fileType": "IMAGE",
- "dimensions": {
- "width": 800,
- "height": 600
}, - "orientation": "PORTRAIT",
- "orientationTransformation": "HORIZONTAL",
- "duration": null,
- "usesTransparency": false,
- "mediaType": {
- "type": "image",
- "subType": "jpeg"
}, - "gpsLocation": {
- "latitude": 50.8256345,
- "longitude": -0.143761
},
}, - "stats": {
- "downloadCount": 42
}, - "contextComments": {
- "property1": {
- "count": 4
}, - "property2": {
- "count": 4
}
}, - "origin": {
- "type": "GUEST_UPLOAD",
- "guestUploadId": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "temporarySessionId": "431263a2-a84a-4a35-86a1-c9a1ea435600"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
], - "totalResults": 1337,
- "aggregations": {
- "property1": {
- "type": "string",
- "buckets": [
- {
- "key": null,
- "count": 15
}
]
}, - "property2": {
- "type": "string",
- "buckets": [
- {
- "key": null,
- "count": 15
}
]
}
}
}
Asset scroll searches provide a means of scrolling one way through search results of any number of Asset
resources.
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.
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" Enum: "SEARCH_FOR_CHANGE_LIFECYCLE_STATE_TO_PENDING_APPROVAL" "SEARCH_FOR_CHANGE_LIFECYCLE_STATE_TO_LIVE" "SEARCH_FOR_CHANGE_LIFECYCLE_STATE_TO_BINNED" "SEARCH_FOR_DELETE" "SEARCH_FOR_EDIT" "SEARCH_FOR_PROMOTE_TO_LIVE" "SEARCH_FOR_SEND_FOR_APPROVAL" "SEARCH_FOR_VIEW" |
{- "pageSize": 100,
- "criterion": {
- "type": "MATCH_ALL"
}, - "sorts": [
- {
- "field": {
- "type": "FIXED",
- "fieldName": "DATE_LIVE"
}, - "order": "DESC"
}
]
}
{- "results": [
- {
- "result": {
- "id": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "lifecycleStatus": {
- "state": "STAGED",
- "dateStaged": "2021-02-15T09:24:01.417Z",
- "stagedBy": "google-oauth2|110457667287511486432"
}, - "dateLastModified": "2021-02-17T09:24:01.417Z",
- "metadata": {
- "version": 11,
- "values": {
- "a52b5315-15b8-417f-b742-d6902108bac1": [
- "A view from a mountain"
], - "f992794c-85db-11eb-8dcd-0242ac130003": [
- "Outdoors",
- "Mountain",
- "Snow"
], - "219bc1fa-85dc-11eb-8dcd-0242ac130003": [
- "a32fe863-0a1d-4b54-990a-b094139cf81c",
- "0e1bddba-9339-4e6e-b5ae-3adc60ad927a"
]
}
}, - "currentAssetFile": {
- "id": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "size": 44040192,
- "filename": "a_file.jpg",
- "checksum": "120EA8A25E5D487BF68B5F7096440019",
- "dateAdded": "2021-02-15T09:26:01.417Z",
- "fileType": "IMAGE",
- "dimensions": {
- "width": 800,
- "height": 600
}, - "orientation": "PORTRAIT",
- "orientationTransformation": "HORIZONTAL",
- "duration": null,
- "usesTransparency": false,
- "mediaType": {
- "type": "image",
- "subType": "jpeg"
}, - "gpsLocation": {
- "latitude": 50.8256345,
- "longitude": -0.143761
},
}, - "stats": {
- "downloadCount": 42
}, - "contextComments": {
- "property1": {
- "count": 4
}, - "property2": {
- "count": 4
}
}, - "origin": {
- "type": "GUEST_UPLOAD",
- "guestUploadId": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "temporarySessionId": "431263a2-a84a-4a35-86a1-c9a1ea435600"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
], - "totalResults": 1337,
- "scrollId": "58b0d88b-d0c9-47fc-9038-7195b234cc0b"
}
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
scrollId required | string The ID to continue the |
{- "scrollId": "58b0d88b-d0c9-47fc-9038-7195b234cc0b"
}
{- "results": [
- {
- "result": {
- "id": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "lifecycleStatus": {
- "state": "STAGED",
- "dateStaged": "2021-02-15T09:24:01.417Z",
- "stagedBy": "google-oauth2|110457667287511486432"
}, - "dateLastModified": "2021-02-17T09:24:01.417Z",
- "metadata": {
- "version": 11,
- "values": {
- "a52b5315-15b8-417f-b742-d6902108bac1": [
- "A view from a mountain"
], - "f992794c-85db-11eb-8dcd-0242ac130003": [
- "Outdoors",
- "Mountain",
- "Snow"
], - "219bc1fa-85dc-11eb-8dcd-0242ac130003": [
- "a32fe863-0a1d-4b54-990a-b094139cf81c",
- "0e1bddba-9339-4e6e-b5ae-3adc60ad927a"
]
}
}, - "currentAssetFile": {
- "id": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "size": 44040192,
- "filename": "a_file.jpg",
- "checksum": "120EA8A25E5D487BF68B5F7096440019",
- "dateAdded": "2021-02-15T09:26:01.417Z",
- "fileType": "IMAGE",
- "dimensions": {
- "width": 800,
- "height": 600
}, - "orientation": "PORTRAIT",
- "orientationTransformation": "HORIZONTAL",
- "duration": null,
- "usesTransparency": false,
- "mediaType": {
- "type": "image",
- "subType": "jpeg"
}, - "gpsLocation": {
- "latitude": 50.8256345,
- "longitude": -0.143761
},
}, - "stats": {
- "downloadCount": 42
}, - "contextComments": {
- "property1": {
- "count": 4
}, - "property2": {
- "count": 4
}
}, - "origin": {
- "type": "GUEST_UPLOAD",
- "guestUploadId": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "temporarySessionId": "431263a2-a84a-4a35-86a1-c9a1ea435600"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
], - "totalResults": 1337,
- "scrollId": "58b0d88b-d0c9-47fc-9038-7195b234cc0b"
}
Edit the metadata of a set of Asset
s by the specified assets selector.
Use the BY_IDS
selector to edit a specific list of Asset.ids
, or the BY_CRITERION
selector to edit a search criterion, e.g. all Asset
s in a specific folder. See AssetSearch
for more detail on the available criterion.
metadataFieldValueUpdates
also has two types of objects that can be used. For example, a FieldOption
with a value
of "My Option" and an id
of "3ba2cb5b-dbe9-48ed-8e07-71f26929e617" can be set either BY_VALUES
by using the value
"My Option", or BY_IDS
by using the id
"3ba2cb5b-dbe9-48ed-8e07-71f26929e617". For Fields
that do not have FieldOptions
(e.g. text fields), either type can be used.
any (AssetsSelector) | |
required | Array of any (MetadataFieldValueUpdate) |
{- "selector": {
- "type": "BY_CRITERION",
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "Folder",
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "includeDescendants": true
}
}, - "metadataFieldValueUpdates": [
- {
- "type": "BY_VALUES",
- "operation": "REMOVE",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "values": [
- "string"
]
}
]
}
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "IN_PROGRESS",
- "status": "PENDING",
- "progress": {
- "steps": [
- {
- "id": "GET_ITEMS",
- "status": "STARTED",
- "completedItems": 0,
- "totalItems": 0
}, - {
- "id": "PROCESS_ITEMS",
- "status": "PENDING",
- "completedItems": 0,
- "totalItems": 0
}
]
}
}
Get the status of a Asset Metadata Edit Batch Job
id required | string |
curl -i -X GET \ https://api-v2.dash.app/asset-metadata-edit-batch-jobs/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "IN_PROGRESS",
- "status": "PENDING",
- "progress": {
- "steps": [
- {
- "id": "GET_ITEMS",
- "status": "STARTED",
- "completedItems": 0,
- "totalItems": 0
}, - {
- "id": "PROCESS_ITEMS",
- "status": "PENDING",
- "completedItems": 0,
- "totalItems": 0
}
]
}
}
Move a set of Asset
resources from one Asset.lifecycleStatus.state
to another.
The Asset
resources to be added to the batch job are specified using the AssetSearch
criteria language or by a simple set of ids
If you are selecting by search criteria 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.
any (AssetsSelector) | |
transition | string (LifecycleTransition) The transition. Generally describe the state moving from and to. |
{- "transition": "STAGED_TO_PENDING_APPROVAL",
- "selector": {
- "type": "BY_CRITERION",
- "criterion": {
- "type": "AND",
- "criteria": [
- {
- "type": "FIELD_EQUALS",
- "value": "STAGED",
- "field": {
- "type": "FIXED",
- "fieldName": "LIFECYCLE_STATE"
}
}, - {
- "type": "FIELD_EQUALS",
- "value": "google-oauth2|110457667287511486432",
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}
}
]
}
}
}
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "IN_PROGRESS",
- "status": "PENDING",
- "progress": {
- "steps": [
- {
- "id": "lifecycleTransitionGetJobItemsStep",
- "status": "STARTED",
- "completedItems": 0,
- "totalItems": 0
}, - {
- "id": "lifecycleTransitionProcessJobItemsStep",
- "status": "PENDING",
- "completedItems": 0,
- "totalItems": 0
}
]
}
}
Get the status of an AssetLifecycleTransitionBatchJob
id required | string |
curl -i -X GET \ https://api-v2.dash.app/asset-lifecycle-transition-batch-jobs/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "COMPLETED",
- "progress": {
- "steps": [
- {
- "id": "lifecycleTransitionGetJobItemsStep",
- "status": "COMPLETED",
- "completedItems": 3,
- "totalItems": 3
}, - {
- "id": "lifecycleTransitionProcessJobItemsStep",
- "status": "COMPLETED",
- "completedItems": 3,
- "totalItems": 3
}
]
}, - "dateCompleted": "2021-02-15T09:24:01.417Z"
}
Coming soon; contact us if you need access to this API endpoint.
Coming soon; contact us if you need access to this API endpoint.
Update an AssetEmbeddableLink
resource's status.
Currently only a patch to status: REVOKED
is supported.
This will update the AssetEmbeddableLink
resource's status to REVOKED
and fileStatus to DELETED
.
id required | string The unique ID of the |
status required | string The status of the AssetEmbeddableLink |
{- "status": "REVOKED"
}
{- "result": {
- "id": "02e3b733-57c0-43f1-bee4-687569cf1bfa",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "assetFileId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "transformationDescription": {
- "type": "CUSTOM",
- "candidateTransformations": [
- {
- "criteria": [
- {
- "type": "MATCHES_MEDIA_TYPES",
- "mediaTypes": [
- null
]
}
], - "transformation": [ ]
}
]
}, - "determinedTransformation": {
- "transformations": [
- {
- "type": "CROP",
- "x": 200,
- "y": 100,
- "width": 400,
- "height": 300
}
]
}, - "status": "ACTIVE",
- "fileStatus": "COPIED",
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
An AssetEmbeddableLinkBatchJob
should be created when you want to create embeddable links for multiple AssetFile
resources.
There is a limit of 500 batch request items for this endpoint. If more than 500 items are requested, the endpoint will error with a bad request(400) response.
The transformationDescription
can be one of two types, CUSTOM
or PRESET
.
This definition and usage matches the transformationDescription
used in AssetDownloadBatchJob
.
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 candidate 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.
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
.
required | Array of objects (EmbeddableLinkBatchRequestItem) |
required | any (TransformationDescription) |
{- "items": [
- {
- "batchItemId": "my-item-1",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "assetFileId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "presetParameters": [ ]
}
], - "transformationDescription": {
- "type": "CUSTOM",
- "candidateTransformations": [
- {
- "criteria": [
- {
- "type": "MATCHES_MEDIA_TYPES",
- "mediaTypes": [
- {
- "type": null,
- "subType": null
}
]
}
], - "transformation": [ ]
}
]
}
}
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "IN_PROGRESS",
- "status": "PENDING",
- "progress": {
- "steps": [
- {
- "id": "embeddableLinkGetJobItemsStep",
- "status": "STARTED",
- "completedItems": 0,
- "totalItems": 0
}, - {
- "id": "embeddableLinkProcessJobItemsStep",
- "status": "PENDING",
- "completedItems": 0,
- "totalItems": 0
}
]
}
}
Get the status and eventual result of an AssetEmbeddableLinkBatchJob
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/embeddable-link-batch-jobs/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "type": "IN_PROGRESS",
- "progress": {
- "steps": [
- {
- "name": "STEP_NAME",
- "status": "STARTED",
- "completedItems": 0,
- "totalItems": 2
}
]
}, - "status": "PENDING"
}
Create a new AssetEmbeddableLinkSearch
.
The criterion and sort currently support search by ASSET_ID
field only.
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 (EmbeddableLinkSearchCriterion) | |
Array of objects (EmbeddableLinkSort) Sorts to be applied to the search in order of precedence |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "FIELD_IN",
- "values": [
- "this",
- "that"
], - "field": "ASSET_ID"
}, - "sorts": [
- {
- "field": "ASSET_ID",
- "order": "ASC"
}
]
}
{- "results": [
- {
- "result": {
- "id": "02e3b733-57c0-43f1-bee4-687569cf1bfa",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "assetFileId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "transformationDescription": {
- "type": "CUSTOM",
- "candidateTransformations": [
- {
- "criteria": [
- null
], - "transformation": [ ]
}
]
}, - "determinedTransformation": {
- "transformations": [
- {
- "type": "CROP",
- "x": 200,
- "y": 100,
- "width": 400,
- "height": 300
}
]
}, - "status": "ACTIVE",
- "fileStatus": "COPIED",
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
], - "totalResults": 15
}
Coming soon; contact us if you need access to this API endpoint.
An Asset Saved Crop Area Summary
resource is a saved crop area summary for a given AssetFile
of an Asset
.
Get all of the SavedCropAreaSummaries
resources for the specified Asset
.
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/assets/:id/saved-crop-area-summaries \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "result": {
- "id": "string",
- "presetId": "string",
- "assetId": "string",
- "cropParameters": {
- "x": 200,
- "y": 100,
- "width": 400,
- "height": 300
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
]
An Asset Saved Crop Area
resource is a saved crop area for a given AssetFile
of an Asset
.
Create a SavedCropArea
for the specified Asset
.
id required | string The unique ID of the |
presetId required | string The unique ID for a |
required | object (CropParameters) |
previewUri required | string The preview of this crop area in Base64 |
{- "presetId": "string",
- "cropParameters": {
- "x": 200,
- "y": 100,
- "width": 400,
- "height": 300
}, - "previewUri": "string"
}
{- "result": {
- "id": "string",
- "presetId": "string",
- "assetId": "string",
- "cropParameters": {
- "x": 200,
- "y": 100,
- "width": 400,
- "height": 300
}, - "previewUri": "string"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Get a SavedCropArea
resource.
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/asset-saved-crop-areas/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "id": "string",
- "presetId": "string",
- "assetId": "string",
- "cropParameters": {
- "x": 200,
- "y": 100,
- "width": 400,
- "height": 300
}, - "previewUri": "string"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Update a SavedCropArea
resource. Only the provided fields will be updated
id required | string The unique ID of the |
object (CropParameters) | |
previewUri | string The preview of this crop area in Base64 |
{- "cropParameters": {
- "x": 200,
- "y": 100,
- "width": 400,
- "height": 300
}, - "previewUri": "string"
}
{- "result": {
- "id": "string",
- "presetId": "string",
- "assetId": "string",
- "cropParameters": {
- "x": 200,
- "y": 100,
- "width": 400,
- "height": 300
}, - "previewUri": "string"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Delete a SavedCropArea
resource.
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/asset-saved-crop-areas/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
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.
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 new Collection
.
name required | string Name of the |
{- "name": "Folders"
}
{- "result": {
- "id": "a52b5315-15b8-417f-b742-d6902108bac1",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Folders",
- "creatorId": "google-oauth2|110955770826801837334",
- "dateCreated": "2021-02-17T09:24:01.417Z",
- "collaborators": [
- {
- "id": "76c5765e-4623-41c9-a521-23610343f019",
- "collectionId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "userId": "google-oauth2|110955770826801837334"
}
], - "share": {
- "id": "4517a7ba-a482-4211-b97e-f4256f53fd32",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "collectionId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "collectionName": "Folders",
- "currentSlug": "EW7DT/folders",
- "slugs": [
- "EW7DT/folders",
- "B35FP/old-name"
], - "expiry": "2021-02-17T09:24:01.417Z",
- "assetPermittedActions": "VIEW"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Patch a Collection
id required | string The unique ID of the |
name | string Nullable Name of the |
{- "name": "Folders"
}
{- "result": {
- "id": "a52b5315-15b8-417f-b742-d6902108bac1",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Folders",
- "creatorId": "google-oauth2|110955770826801837334",
- "dateCreated": "2021-02-17T09:24:01.417Z",
- "collaborators": [
- {
- "id": "76c5765e-4623-41c9-a521-23610343f019",
- "collectionId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "userId": "google-oauth2|110955770826801837334"
}
], - "share": {
- "id": "4517a7ba-a482-4211-b97e-f4256f53fd32",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "collectionId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "collectionName": "Folders",
- "currentSlug": "EW7DT/folders",
- "slugs": [
- "EW7DT/folders",
- "B35FP/old-name"
], - "expiry": "2021-02-17T09:24:01.417Z",
- "assetPermittedActions": "VIEW"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Create a new CollectionSearch
The most commmon use of an CollectionSearch
is to retrieve all the Collection
resources associated with a User
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 |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "ASSOCIATED_WITH_USER",
- "userId": "google-oauth2|110955770826801837334"
}, - "sorts": [
- {
- "field": "NAME",
- "order": "ASC"
}
]
}
{- "results": [
- {
- "result": {
- "id": "1ecabbb8-85d5-11eb-8dcd-0242ac130003",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Collaboration Collection",
- "createdBy": "google-oauth2|340955570626871847637",
- "dateCreated": "2021-04-15T09:24:01.417Z",
- "permittedActions": [ ]
}
}, - {
- "result": {
- "id": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "My Collection 1",
- "createdBy": "google-oauth2|110955770826801837334",
- "dateCreated": "2021-02-15T09:24:01.417Z"
}, - "permittedActions": [ ]
}, - {
- "result": {
- "id": "a52b5315-15b8-417f-b742-d6902108bac1",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "My Collection 2",
- "createdBy": "google-oauth2|110955770826801837334",
- "dateCreated": "2021-03-15T09:24:01.417Z"
}, - "permittedActions": [ ]
}
], - "totalResults": 3
}
Coming soon; contact us if you need access to this API endpoint.
Coming soon; contact us if you need access to this API endpoint.
Coming soon; contact us if you need access to this API endpoint.
A SubdomainAvailabilityCheck
is used to check whether a Dash subdomain is in use or not.
This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header
subdomain | string The subdomain to check for availability |
{- "subdomain": "my-company"
}
{- "subdomain": "my-company",
- "isAvailable": true
}
An Asset Download Event Search
allows you to search and aggregate over Asset Download Events
Criteria can be constructed based on exact or ranged comparison of the queryable event fields listed in the request schema below.
Some fields like USER_TYPE
and DOWNLOAD_TYPE
have a fixed set of possible values which can be determined from the response scheme below.
The logical operators AND
, OR
and NOT
are provided to support complex queries based on multiple fields.
A list of sorts can also be provided to control the order in the which the results are returned.
Only the ids of referenced resources such as Portal
and Asset
are provided in the response, which can then be used to GET the full resources.
Aggregations operations can also be performed on the events described by the criteria, in order to, for example
Note, an Asset Download Event Search
will only allow you to page to 10,000 but values returned in any aggregations and the totalResults
property will be correct.
Create a new Asset Download Event Search
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 (AssetDownloadEventSearchCriterion) |
required | Array of objects (AssetDownloadEventSort) Default: [] Sorts to be applied to the search in order of precedence |
object A map of requested aggregations. The results will be returned in a map with the same provided keys. |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "FIELD_EQUALS",
- "field": "USER_ID",
- "value": "162c8739-b830-4d2f-b241-97951734a04e"
}, - "sorts": [
- {
- "field": "DATE_TIME",
- "order": "DESC"
}
], - "aggregations": { }
}
{- "totalResults": 3,
- "results": [
- {
- "result": {
- "id": "7d240457-6232-4702-af61-7ce5e6ffc34e",
- "accountId": "a61a254c-4bbd-41e6-ba52-22a82ce9fca1",
- "assetId": "2441039a-fb70-4cf8-8070-b2ac6a70186f",
- "assetFileId": "2441239a-fb70-4cf8-8070-b2ac6a60186f",
- "dateTime": "2023-10-23T17:05:28.68Z",
- "downloadType": "PRESET",
- "downloadDescription": "Large",
- "downloadPresetId": "a2b1817f-ba85-47cf-87ec-3183df7a9bd0",
- "userData": {
- "type": "ACCOUNT_USER",
- "userId": "google-oauth2|101322069082130951052",
- "userEmail": "joe-blogs@test.com"
}
}, - "permittedActions": [ ]
}, - {
- "result": {
- "id": "9d240457-6232-4702-af61-7ce5e6ffc34e",
- "accountId": "a61a254c-4bbd-41e6-ba52-22a82ce9fca1",
- "assetId": "2441039a-fb70-4cf8-8070-b2ac6a70186f",
- "assetFileId": "3441239a-fb70-4cf8-8070-b2ac6a60186f",
- "dateTime": "2023-11-23T17:05:28.68Z",
- "downloadType": "PRESET",
- "downloadDescription": "Small",
- "downloadPresetId": "a2b1817f-ba85-47cf-87ec-3183df7a9bd0",
- "userData": {
- "type": "ACCOUNT_USER",
- "userId": "google-oauth2|201322069082130951052",
- "userEmail": "sue-blogs@test.com"
}
}, - "permittedActions": [ ]
}, - {
- "result": {
- "id": "9d240457-6232-4702-af61-7ce5e6ffc34e",
- "accountId": "a61a254c-4bbd-41e6-ba52-22a82ce9fca1",
- "assetId": "3441039a-fb70-4cf8-8070-b2ac6a70186f",
- "assetFileId": "3441239a-fb70-4cf8-8070-b2ac6a60186f",
- "dateTime": "2023-11-23T17:05:28.68Z",
- "downloadType": "PRESET",
- "downloadDescription": "Small",
- "downloadPresetId": "a2b1817f-ba85-47cf-87ec-3183df7a9bd0",
- "userData": {
- "type": "ACCOUNT_USER",
- "userId": "google-oauth2|201322069082130951052",
- "userEmail": "sue-blogs@test.com"
}
}, - "permittedActions": [ ]
}
], - "aggregations": [ ]
}
Field
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 Field
you define.
The type and structure of the data stored against the Asset
for each Field
is described by a series of properties specified on the Field
.
curl -i -X GET \ https://api-v2.dash.app/fields \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "result": {
- "id": "a52b5315-15b8-417f-b742-d6902108bac1",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Folders",
- "dataType": "STRING",
- "multiValue": true,
- "hasFixedOptions": true,
- "hierarchical": true,
- "editControl": "FOLDER_PICKER",
- "indestructible": true,
- "recommended": true,
- "defaultSortField": "FIELD_ID",
- "browsable": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
]
Get a Field
resource.
When Field.hasFixedOptions = true
the FieldOption
resources for this Field
can be retrieved via an FieldOptionSearch
id required | string The unique ID of the field Example: cfb665ca-ce35-4418-b9d5-70ee815db4bd |
curl -i -X GET \ https://api-v2.dash.app/fields/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "id": "a52b5315-15b8-417f-b742-d6902108bac1",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Folders",
- "dataType": "STRING",
- "multiValue": true,
- "hasFixedOptions": true,
- "hierarchical": true,
- "editControl": "FOLDER_PICKER",
- "indestructible": true,
- "recommended": true,
- "defaultSortField": "FIELD_ID",
- "browsable": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Update a Field
resource.
id required | string The unique ID of the field Example: cfb665ca-ce35-4418-b9d5-70ee815db4bd |
name | string Nullable Human-readable name of the |
recommended | boolean Nullable If |
object (NullableFieldOptionSearchFieldPatch) | |
browsable | boolean Nullable Whether assets with a value for this |
{- "name": "Folders",
- "recommended": true,
- "defaultSortField": {
- "value": "FIELD_ID"
}, - "browsable": false
}
{- "result": {
- "id": "a52b5315-15b8-417f-b742-d6902108bac1",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Folders",
- "dataType": "STRING",
- "multiValue": true,
- "hasFixedOptions": true,
- "hierarchical": true,
- "editControl": "FOLDER_PICKER",
- "indestructible": true,
- "recommended": true,
- "defaultSortField": "FIELD_ID",
- "browsable": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
FieldOption
resources define the set of valid choices for a Field
when Field.hasFixedOptions = true
.
An FieldOption
has human-readable FieldOption.value
and an FieldOption.position
which determines the order in which it appears in relation to the other FieldOption
resources for a Field
.
If Field.hierarchical = true
then FieldOption.parent
is the FieldOption
which is the parent node of the FieldOption
in the tree.
FieldOption.position
then determines the order in which the option appears in relation to the other options with the same FieldOption.parent
.
The FieldOption
resource intentionally does not include the list of child FieldOption
resources.
This is to prevent costly loading of large FieldOption
tree structures.
FieldOption.leaf
and FieldOption.numberOfChildren
properties can be used to determine the number of children for a node, but it is recommended to implement a combination of lazy-loading strategies using the GET Field Option and POST Field Option Searches resources for retrieval.
e.g. Doing a GET Field Option with an FieldOption.id
value found in Asset.metadata.values
will give the complete branch of the tree necessary in the context of the viewing that Asset
via the FieldOption.parent
property.
For traversing down an FieldOption
tree POST Field Option Searches can be used to first get all the top-level options and then each sub level as and when needed.
Searching allows you to find FieldOption
resources in your Dash matching specific criteria
Criteria can be constructed based on direct comparison or pattern matching of a set of fixed FieldOption
properties.
The logical operators AND
, OR
and NOT
are provided to support complex queries based on multiple fields.
A list of sorts can also be provided to control the order in the which the results are returned.
Create a new FieldOption
resource adding it to the set of valid choices for an Field
where Field.hasFixedOptions = true
.
fieldId required | string The unique ID of the |
value required | string The human-readable value of the |
position required | integer The 0-based position the |
parentId |
{- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "value": "My Top Level Folder",
- "position": 3,
- "parentId": null
}
{- "result": {
- "id": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "value": "My Top Level Folder",
- "position": 0,
- "leaf": false,
- "parent": null
}, - "permittedActions": [ ]
}
Get an FieldOption
resource for an Field
where Field.hasFixedOptions = true
.
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/field-options/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "id": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "value": "My Top Level Folder",
- "position": 0,
- "leaf": false,
- "parent": null
}, - "permittedActions": [ ]
}
Delete an FieldOption
resource, removing it from the set of valid choices for an Field
.
When deleting an option within a hierarchy of options all options in the hierarchy below the one being deleted will also be deleted.
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/field-options/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Create new FieldOption
resources adding them to the set of valid choices for an Field
where Field.hasFixedOptions = true
.
required | Array of objects (FieldOptionBatchRequestItem) |
{- "items": [
- {
- "batchItemId": "my-item-1",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "value": "Folder A",
- "position": 2,
- "parentId": null
}
]
}
{- "successes": {
- "property1": {
- "result": {
- "id": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52",
- "value": "Folder A",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "position": 2,
- "leaf": true,
- "numberOfChildren": 0,
- "parent": { }
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}, - "property2": {
- "result": {
- "id": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52",
- "value": "Folder A",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "position": 2,
- "leaf": true,
- "numberOfChildren": 0,
- "parent": { }
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
}, - "failures": {
- "property1": "OPTION_ALREADY_EXISTS_AT_THIS_LEVEL",
- "property2": "OPTION_ALREADY_EXISTS_AT_THIS_LEVEL"
}
}
Create a new FieldOptionSearch
The most commmon uses of an FieldOptionSearch
is to retrieve the FieldOption
resources for an Field
using the FIELD_ID
field criterion.
When Field.hierarchical = true
it is recommended to retrieve each level of the tree via a separate search using PARENT_ID
field criteria.
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 (FieldOptionSearchCriterion) |
required | Array of objects (FieldOptionSort) Sorts to be applied to the search in order of precedence |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "AND",
- "criteria": [
- {
- "type": "FIELD_EQUALS",
- "field": "FIELD_ID",
- "value": "a52b5315-15b8-417f-b742-d6902108bac1"
}, - {
- "type": "FIELD_IS_EMPTY",
- "field": "PARENT_ID"
}
]
}, - "sorts": [
- {
- "field": "POSITION",
- "order": "ASC"
}
]
}
{- "results": [
- {
- "result": {
- "id": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "value": "My Top Level Folder",
- "position": 0,
- "leaf": false,
- "parent": null
}, - "permittedActions": [ ]
}, - {
- "result": {
- "id": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1",
- "value": "Another Top Level Folder",
- "position": 1,
- "leaf": false,
- "parent": null
}, - "permittedActions": [ ]
}
], - "totalResults": 2
}
Coming soon; contact us if you need access to this API endpoint.
curl -i -X GET \ https://api-v2.dash.app/field-views \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "result": {
- "id": "e9a367e4-8216-497f-b6a9-59e3b945a7f3",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "type": "INTERNAL_DETAILED",
- "fields": [
- {
- "id": "a52b5315-15b8-417f-b742-d6902108bac1",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Folders",
- "dataType": "STRING",
- "multiValue": true,
- "hasFixedOptions": true,
- "hierarchical": true,
- "editControl": "FOLDER_PICKER",
- "indestructible": true,
- "recommended": true,
- "defaultSortField": "FIELD_ID",
- "browsable": true
}
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
]
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.
curl -i -X GET \ https://api-v2.dash.app/corebook-settings \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "enabled": true,
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
enabled | boolean Whether Corebook integration is enable |
corebookUrl | string The URL to Corebook that will be used to link users to the brand guidelines |
{- "enabled": true,
}
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "enabled": true,
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
curl -i -X GET \ https://api-v2.dash.app/custom-integration-settings \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "clientId": "CFB665Cace354418B9D570EE815DB4bd",
- "clientSecret": "EE815DB4-CFB665Ca-fzHDlUibM9g6JwiOXf9Vxh6f_egJD",
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
allowedWebOriginUrls required | Array of strings Allowed origins for use in the cross-origin authentication flow |
allowedCallbackUrls required | Array of strings Allowed URLs for callback (i.e. with generated access token) during authentication flow |
allowedLogoutUrls required | Array of strings Allowed URLs to redirect to after logout |
{
}
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "clientId": "CFB665Cace354418B9D570EE815DB4bd",
- "clientSecret": "EE815DB4-CFB665Ca-fzHDlUibM9g6JwiOXf9Vxh6f_egJD",
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
allowedWebOriginUrls | Array of strings Nullable Allowed origins for use in the cross-origin authentication flow |
allowedCallbackUrls | Array of strings Nullable Allowed URLs for callback (i.e. with generated access token) during authentication flow |
allowedLogoutUrls | Array of strings Nullable Allowed URLs to redirect to after logout |
{
}
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "clientId": "CFB665Cace354418B9D570EE815DB4bd",
- "clientSecret": "EE815DB4-CFB665Ca-fzHDlUibM9g6JwiOXf9Vxh6f_egJD",
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
curl -i -X DELETE \ https://api-v2.dash.app/custom-integration-settings \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Coming soon; contact us if you need access to this API endpoint.
Portals allow a public (or passcode protected) view on Assets
within a set of folders.
Create a new Portal
, allowing public access to specified folders to anyone who has one of the Portal.slugs
.
name required | string Name of the |
slug required | string A human readable unique identifier, used in the Dash portal URL |
whitelistedFolderFieldOptionIds required | Array of strings The folder |
required | object (WelcomeMessage) |
showRecentlyAddedAssets required | boolean Whether this portal should include a preview of recently added assets |
passcode | string Nullable A passcode that must be provided when viewing a portal. Note that this is NOT a password and as such is stored in plain text |
assetPermittedActions | string (AssetPermittedActionsWithDefault) Default: "VIEW_AND_DOWNLOAD" Permissions users have on assets they are viewing |
{- "name": "Reseller portal",
- "slug": "reseller-portal",
- "whitelistedFolderFieldOptionIds": [
- "4cb261ad-dffb-414e-89cf-6902e3031d44",
- "4e14dc90-eb7b-4fd2-87e5-e8968c236ec0"
], - "welcomeMessage": {
- "title": "Welcome to our reseller portal",
- "body": "Take a look around our reseller portal and quickly find all the assets you need. Happy browsing!"
}, - "showRecentlyAddedAssets": true,
- "passcode": "LetMeInPlease",
- "assetPermittedActions": "VIEW"
}
{- "result": {
- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Reseller portal",
- "currentSlug": "reseller-portal",
- "slugs": [
- "reseller-portal",
- "old-slug-here"
], - "whitelistedFolderFieldOptionIds": [
- "4cb261ad-dffb-414e-89cf-6902e3031d44",
- "4e14dc90-eb7b-4fd2-87e5-e8968c236ec0"
], - "welcomeMessage": {
- "title": "Welcome to our reseller portal",
- "body": "Take a look around our reseller portal and quickly find all the assets you need. Happy browsing!"
}, - "showRecentlyAddedAssets": true,
- "passcode": "LetMeInPlease",
- "assetPermittedActions": "VIEW"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Get a Portal
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/portals/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Reseller portal",
- "currentSlug": "reseller-portal",
- "slugs": [
- "reseller-portal",
- "old-slug-here"
], - "whitelistedFolderFieldOptionIds": [
- "4cb261ad-dffb-414e-89cf-6902e3031d44",
- "4e14dc90-eb7b-4fd2-87e5-e8968c236ec0"
], - "welcomeMessage": {
- "title": "Welcome to our reseller portal",
- "body": "Take a look around our reseller portal and quickly find all the assets you need. Happy browsing!"
}, - "showRecentlyAddedAssets": true,
- "passcode": "LetMeInPlease",
- "assetPermittedActions": "VIEW"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Patch a Portal
id required | string The unique ID of the |
name | string Nullable Name of the |
slug | string Nullable A human readable unique identifier, used in the Dash portal URL |
whitelistedFolderFieldOptionIds | Array of strings Nullable The folder |
object Nullable | |
showRecentlyAddedAssets | boolean Nullable Whether this portal should include a preview of recently added assets |
object (NullableStringFieldPatch) | |
assetPermittedActions | string (AssetPermittedActionsWithDefault) Default: "VIEW_AND_DOWNLOAD" Permissions users have on assets they are viewing |
{- "name": "Reseller portal",
- "slug": "reseller-portal",
- "whitelistedFolderFieldOptionIds": [
- "4cb261ad-dffb-414e-89cf-6902e3031d44",
- "4e14dc90-eb7b-4fd2-87e5-e8968c236ec0"
], - "welcomeMessage": {
- "title": "Welcome to our reseller portal",
- "body": "Take a look around our reseller portal and quickly find all the assets you need. Happy browsing!"
}, - "showRecentlyAddedAssets": true,
- "passcode": {
- "value": "example value"
}, - "assetPermittedActions": "VIEW"
}
{- "result": {
- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Reseller portal",
- "currentSlug": "reseller-portal",
- "slugs": [
- "reseller-portal",
- "old-slug-here"
], - "whitelistedFolderFieldOptionIds": [
- "4cb261ad-dffb-414e-89cf-6902e3031d44",
- "4e14dc90-eb7b-4fd2-87e5-e8968c236ec0"
], - "welcomeMessage": {
- "title": "Welcome to our reseller portal",
- "body": "Take a look around our reseller portal and quickly find all the assets you need. Happy browsing!"
}, - "showRecentlyAddedAssets": true,
- "passcode": "LetMeInPlease",
- "assetPermittedActions": "VIEW"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Delete a Portal
.
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/portals/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Create a new PortalSearch
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 (PortalSearchCriterion) |
required | Array of objects (PortalSort) Sorts to be applied to the search in order of precedence |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "MATCH_ALL"
}, - "sorts": [
- {
- "field": "NAME",
- "order": "ASC"
}
]
}
{- "results": [
- {
- "result": {
- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Reseller portal",
- "currentSlug": "reseller-portal",
- "slugs": [
- "reseller-portal",
- "old-slug-here"
], - "whitelistedFolderFieldOptionIds": [
- "4cb261ad-dffb-414e-89cf-6902e3031d44",
- "4e14dc90-eb7b-4fd2-87e5-e8968c236ec0"
], - "welcomeMessage": {
- "title": "Welcome to our reseller portal",
- "body": "Take a look around our reseller portal and quickly find all the assets you need. Happy browsing!"
}, - "showRecentlyAddedAssets": true,
- "passcode": "LetMeInPlease",
- "assetPermittedActions": "VIEW"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
], - "totalResults": 15
}
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 not authenticated with a Bearer token. Do not send a Bearer Token in the Authorization Header
If the portal has a passcode, select the portalPasscode
Authorization header and prefix the passcode with "Passcode ".
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/portals/:id/access-token
{- "result": {
- "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik5UZzNPRFV4TkVKQk56UTVRemswTjBFNFFUTTJOVUV6TlRnNU9VVXpRakU0UmtKQlJrSXpOUSJ9.eyJodHRwczovL2Fzc2V0cGxhdGZvcm0uaW8vYWNjb3VudF9pZCI6IjE3ZmNhYzg5LWNjMmUtNGE0MC1hYTZmLWI4NWQ4MDEzMDRkMyIsImh0dHBzOi8vYXNzZXRwbGF0Zm9ybS5pby9leHRlcm5hbF9hY2Nlc3NfaWQiOiI4NjVjNjBiYi02NzA5LTQxZTAtOGI0ZS0yNTljYTk4MjkzNTEiLCJodHRwczovL2Fzc2V0cGxhdGZvcm0uaW8vZXh0ZXJuYWxfYWNjZXNzX3Jlc291cmNlX3R5cGUiOiJTSEFSRSIsImh0dHBzOi8vYXNzZXRwbGF0Zm9ybS5pby9zY29wZSI6ImFjY2VzczpleHRlcm5hbF9hY2Nlc3MiLCJodHRwczovL2Fzc2V0cGxhdGZvcm0uaW8vdGVtcG9yYXJ5X3VzZXJfaWQiOiJ0ZW1wb3JhcnktdXNlci1mb3ItZXh0ZXJuYWwtYWNjZXNzfDg2NWM2MGJiLTY3MDktNDFlMC04YjRlLTI1OWNhOTgyOTM1MXxTSEFSRXxmMDJmNTE2Mi03OTc4LTRhMzktYWZkMS0zZGU1MzY1ODlmNDkiLCJpc3MiOiJodHRwczovL2xvZ2luLmJyaWdodGRhc2hzdGFnaW5nLmFwcC8iLCJzdWIiOiJWNFhJdWN1eEx5UzFmNjVkd2RmaWRib1BLcnFFb3lkWUBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9hc3NldHBzdGFnaW5nLmlvIiwiaWF0IjoxNjIwMTIzMjgyLCJleHAiOjE2MjAyMDk2ODIsImF6cCI6IlY0WEl1Y3V4THlTMWY2NWR3ZGZpZGJvUEtycUVveWRZIiwiZ3R5IjoiY2xpZW50LWNyZWRlbnRpYWxzIn0.clGEEfy-8yQNQ_f4TDc0OqA8Zi5gHq_-9gKFRif69DNnhzIbgqduVnaweR6x1KJU8CgnZiDMBKEwsiZw3gs-U8XnBIzbb8ImpdhYjoKnGv520oUKAA5RiAThamj1a0jGphmnDd3cCS6uIqdkSvxziE9ktL-MLNqbNFfgvdQuCo66YDqjhaHN7bqvliqaleUSRYZOd016M_N_ya21lamSxZcVintaktyvOApuAVgTMyIrrO8VuyhWW-cmiRFYKeTWnl2_kv9s_xQyWQ_PHH92rVCgRJwbofQEko4Isj4ZhLkA2xrurCPrz6VCtD5GYUfJNUWN_HcEHFsSqSYCsGfBAg"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Send a Portal
via email to a specified email address
portalId | string The unique ID for the |
string The email address to send the |
{- "portalId": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "email": "john.smith@gmail.com"
}
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
A SavedSearch is an AssetSearch
(#operation/postAssetSearch).criterion
and AssetSearch
(#operation/postAssetSearch).sorts
that have been saved by a user. The user may also chose to receive email updates every time a new asset matches the saved criterion.
Searching allows you to find SavedSearches
resources in your Dash matching specific criteria.
Create a new SavedSearch
resource.
name required | string Name of the |
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 |
{- "name": "My favourite search",
- "emailUserOnNewUploads": true,
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "Folder",
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "includeDescendants": true
}, - "sorts": [
- {
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "order": "ASC"
}
]
}
{- "id": "1627573b-1273-441e-90d1-505d1f8ab47c",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "name": "My favourite search",
- "emailUserOnNewUploads": true,
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "Folder",
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "includeDescendants": true
}, - "sorts": [
- {
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "order": "ASC"
}
]
}
Get a SavedSearch
resource.
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/saved-searches/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "id": "1627573b-1273-441e-90d1-505d1f8ab47c",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "name": "My favourite search",
- "emailUserOnNewUploads": true,
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "Folder",
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "includeDescendants": true
}, - "sorts": [
- {
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "order": "ASC"
}
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Update a SavedSearch
resource. Only the provided fields will be updated
id required | string The unique ID of the |
name | string Nullable Name of the |
emailUserOnNewUploads | boolean Nullable Whether to email the creator when a new upload matches the saved search criterion |
{- "name": "My favourite search",
- "emailUserOnNewUploads": true
}
{- "result": {
- "id": "1627573b-1273-441e-90d1-505d1f8ab47c",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "name": "My favourite search",
- "emailUserOnNewUploads": true,
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "Folder",
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "includeDescendants": true
}, - "sorts": [
- {
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "order": "ASC"
}
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Create a new SavedSearchSearch
The only use of a SavedSearchSearch
as of now is to retrieve all the SavedSearch
resources created by a User
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. |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "FIELD_EQUALS",
- "field": "CREATOR_ID",
- "value": "google-oauth2|110955770826801837334"
}, - "sorts": [ ]
}
{- "results": [
- {
- "result": {
- "id": "1ecabbb8-85d5-11eb-8dcd-0242ac130003",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|340955570626871847637",
- "name": "Favourite search",
- "emailUserOnNewUploads": true,
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "a32fe863-0a1d-4b54-990a-b094139cf81c",
- "field": {
- "type": "FIELD",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1"
}
}, - "sorts": [ ]
}, - "permittedActions": [ ]
}, - {
- "result": {
- "id": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|340955570626871847637",
- "name": "Added in January",
- "emailUserOnNewUploads": false,
- "criterion": {
- "type": "FIELD_MATCHES",
- "value": "[2021-01-01 TO 2021-02-01]",
- "field": {
- "type": "FIXED",
- "fieldName": "DATE_LIVE"
}
}, - "sorts": [ ]
}, - "permittedActions": [ ]
}, - {
- "result": {
- "id": "a52b5315-15b8-417f-b742-d6902108bac1",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|340955570626871847637",
- "name": "My saved search",
- "emailUserOnNewUploads": true,
- "criterion": {
- "type": "MATCH_ALL"
}, - "sorts": [
- {
- "field": {
- "type": "FIXED",
- "fieldName": "DATE_LIVE"
}, - "order": "DESC"
}
]
}, - "permittedActions": [ ]
}
], - "totalResults": 3
}
curl -i -X GET \ https://api-v2.dash.app/groups \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "result": {
- "id": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "My Group Name",
- "role": "BASIC",
- "numberOfUsers": 56,
- "fieldWhitelist": {
- "fieldWhitelistType": "ALL_OPTIONS"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
]
Coming soon; contact us if you need access to this API endpoint.
The User
resource contains information about a user in Dash such as their email address and their name (if provided).
Create a new User
in the current account
type required | string ADMIN IN_GROUPS ADMIN |
email required | string The email address of the |
welcomeMessage | string Default: "You have been invited to join Dash — a tool for managing images, videos and more." An optional welcome message included in the |
{- "type": "ADMIN",
- "email": "john.smith@gmail.com",
- "welcomeMessage": "You have been invited to join Dash — a tool for managing images, videos and more."
}
{- "result": {
- "type": "ACTIVE_ACCOUNT_USER",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "id": "google-oauth2|110955770826801837334",
- "email": "john.smith@gmail.com",
- "permissions": {
- "permissionsType": "ADMIN"
}, - "name": "John Smith",
- "lastLogin": "2021-02-16T16:21:58.640+00:00"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Get a User
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/users/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "type": "ACTIVE_ACCOUNT_USER",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "id": "google-oauth2|110955770826801837334",
- "email": "john.smith@gmail.com",
- "permissions": {
- "permissionsType": "ADMIN"
}, - "name": "John Smith",
- "lastLogin": "2021-02-16T16:21:58.640+00:00"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
curl -i -X GET \ https://api-v2.dash.app/current-user \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "type": "ACTIVE_ACCOUNT_USER",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "id": "google-oauth2|110955770826801837334",
- "email": "john.smith@gmail.com",
- "permissions": {
- "permissionsType": "ADMIN"
}, - "name": "John Smith",
- "lastLogin": "2021-02-16T16:21:58.640+00:00"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Coming soon; contact us if you need access to this API endpoint.
Coming soon; contact us if you need access to this API endpoint.