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 an [Account
]
This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header
subdomain required | string The subdomain of the |
companyName | string The company name of the |
trialSignUpSource | string Nullable |
object Nullable | |
selfReportedCompanyDescription | string (SelfReportedCompanyDescription) Default: "SKIPPED" Enum: "SELLING_PRODUCTS" "CREATIVE_MARKETING_AGENCY" "NON_PROFIT" "OTHER" "SKIPPED" "NEVER_ASKED" |
referrerCode | string Nullable |
{- "subdomain": "planto",
- "companyName": "Planto",
- "trialSignUpSource": "string",
- "attribution": {
- "source": "string",
- "freeText": "string"
}, - "selfReportedCompanyDescription": "SELLING_PRODUCTS",
- "referrerCode": "string"
}
{- "result": {
- "id": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "subdomain": "planto",
- "companyName": "Planto",
- "plan": "STAFF",
- "dateCreated": "2021-02-17T09:24:01.417Z",
- "dateExpires": "2021-02-27",
- "trialSignUpSource": "string",
- "attribution": {
- "source": "string",
- "freeText": "string"
}, - "selfReportedCompanyDescription": "SELLING_PRODUCTS"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Create a new [AccountInviteRequest
]
This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header
accountId required | string The ID of the account the invite request is for |
{- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd"
}
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
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.
curl -i -X GET \ https://api-v2.dash.app/account-security \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "mfaEnabled": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
mfaEnabled required | boolean Whether users of the account must configure and use multi-factor authentication on login |
{- "mfaEnabled": true
}
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "mfaEnabled": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Coming soon; contact us if you need access to this API endpoint.
curl -i -X GET \ https://api-v2.dash.app/auto-tagging-image-settings \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "enabled": true,
- "confidence": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
enabled | boolean Nullable Whether auto-tagging for images is enabled |
confidence | number Nullable A number between 1 and 100 indicating how confident Dash should be about a tag being applicable to an image to include it. |
{- "enabled": true,
- "confidence": 85
}
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "enabled": true,
- "confidence": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
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.
curl -i -X GET \ https://api-v2.dash.app/onboarding-checklist \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "hasCompletedInitialImport": true,
- "hasLoggedIn": true,
- "hasUploadedSomeFiles": true,
- "hasAddedSomeAttributes": true,
- "hasSignedUp": true,
- "hasCustomisedTheme": true,
- "hasInvitedUsers": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
hasCompletedInitialImport | boolean Nullable |
hasLoggedIn | boolean Nullable |
hasUploadedSomeFiles | boolean Nullable |
hasAddedSomeAttributes | boolean Nullable |
hasSignedUp | boolean Nullable |
hasCustomisedTheme | boolean Nullable |
hasInvitedUsers | boolean Nullable |
{- "hasCompletedInitialImport": true,
- "hasLoggedIn": true,
- "hasUploadedSomeFiles": true,
- "hasAddedSomeAttributes": true,
- "hasSignedUp": true,
- "hasCustomisedTheme": true,
- "hasInvitedUsers": true
}
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "hasCompletedInitialImport": true,
- "hasLoggedIn": true,
- "hasUploadedSomeFiles": true,
- "hasAddedSomeAttributes": true,
- "hasSignedUp": true,
- "hasCustomisedTheme": true,
- "hasInvitedUsers": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
curl -i -X GET \ https://api-v2.dash.app/grouped-preset-transformations \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "itemGroupTypes": [
- {
- "id": "1080e904-187c-4e65-8b40-d93e63c391dc",
- "name": "Social media sizes",
- "groups": [
- {
- "id": "ce809f3d-c9e1-4802-9aa9-620c0bf00dd6",
- "name": "LinkedIn",
- "items": [
- {
- "id": null,
- "accountId": null,
- "name": null,
- "position": null,
- "candidatePresetTransformations": [ ]
}
]
}
]
}
], - "ungroupedItems": [
- {
- "id": "a060635d-5807-4115-a2ed-f0588d47e7ba",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "name": "Medium",
- "position": 1,
- "candidatePresetTransformations": [
- {
- "criteria": [
- {
- "type": null,
- "mediaTypes": [ ]
}
], - "transformationTemplate": [
- {
- "type": null,
- "width": null,
- "height": null
}
]
}
]
}
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
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
}
Create a new [PresetTransformationsForAssetSearch
]
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 (PresetTransformationsForAssetSearchCriterion) |
required | Array of objects (PresetTransformationsForAssetSort) 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": {
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "presetTransformationIds": [
- "string"
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
], - "totalResults": 1337
}
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
)
curl -i -X GET \ https://api-v2.dash.app/search-filters \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "result": {
- "id": "502318d9-b42e-406c-b69d-f58dc15d8fa0",
- "adminOnly": true,
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "allowEmpty": true,
- "type": "FIELD",
- "fieldId": "a52b5315-15b8-417f-b742-d6902108bac1"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
]
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.
Get the Subscription associated with your account
curl -i -X GET \ https://api-v2.dash.app/subscription \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "type": "CREATED",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "startDate": "2021-02-17T09:24:01.417Z",
- "plan": {
- "type": "TIERED_VALUE_BASED",
- "planName": "STARTUP",
- "downloads": {
- "type": "LIMITED",
- "limit": 1000
}, - "assetsIncludedInPlan": 2000,
- "extraAssets": 1000,
- "assets": 3000
}, - "billing": {
- "name": "Example name",
- "email": "email@example.com",
- "address": {
- "country": "United Kingdom",
- "state": "Texas",
- "city": "Brighton",
- "postalCode": "BN1 1AB",
- "line1": "Flat 56",
- "line2": "13 some road"
}, - "period": "MONTHLY",
- "currency": "GBP",
- "nextBillingDate": "2021-02-17T09:24:01.417Z",
- "amount": {
- "amountWithTax": 12000,
- "amountWithoutTax": 10000,
- "includesTax": true
}
}, - "coupons": [
- {
- "id": "5%OFF-COUPON",
- "name": "5% off coupon",
- "discountPercentage": 12.5,
- "status": "ACTIVE"
}
], - "signupUser": {
- "email": "some@email.com",
- "name": "Some Name"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Delete the Subscription associated with your account
curl -i -X DELETE \ https://api-v2.dash.app/subscription \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Get an estimate of the upcoming subscription based on current usage
curl -i -X GET \ https://api-v2.dash.app/subscription-estimate \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "type": "CREATED",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "startDate": "2021-02-17T09:24:01.417Z",
- "plan": {
- "type": "TIERED_VALUE_BASED",
- "planName": "STARTUP",
- "downloads": {
- "type": "LIMITED",
- "limit": 1000
}, - "assetsIncludedInPlan": 2000,
- "extraAssets": 1000,
- "assets": 3000
}, - "billing": {
- "name": "Example name",
- "email": "email@example.com",
- "address": {
- "country": "United Kingdom",
- "state": "Texas",
- "city": "Brighton",
- "postalCode": "BN1 1AB",
- "line1": "Flat 56",
- "line2": "13 some road"
}, - "period": "MONTHLY",
- "currency": "GBP",
- "nextBillingDate": "2021-02-17T09:24:01.417Z",
- "amount": {
- "amountWithTax": 12000,
- "amountWithoutTax": 10000,
- "includesTax": true
}
}, - "coupons": [
- {
- "id": "5%OFF-COUPON",
- "name": "5% off coupon",
- "discountPercentage": 12.5,
- "status": "ACTIVE"
}
], - "signupUser": {
- "email": "some@email.com",
- "name": "Some Name"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Create a new Subscription Intent resource to indicate intent to subscribe to a paid plan
required | any (PlanRequest) |
required | object (BillingRequest) |
required | object (SignupUser) |
couponIds required | Array of strings The coupon IDs to apply to the subscription you intend to pay for |
{- "planRequest": {
- "type": "TIERED_VALUE_BASED",
- "planName": "STARTUP",
- "extraAssets": 1000
}, - "billingRequest": {
- "billingPeriod": "MONTHLY",
- "currency": "GBP",
- "country": "GB"
}, - "signupUser": {
- "email": "some@email.com",
- "name": "Some Name"
}, - "couponIds": [
- "string"
]
}
{- "result": {
- "id": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "setupIntentId": "some-setup-intent-id",
- "setupIntentClientSecret": "some-setup-intent-client-secret",
- "accountId": "string",
- "amount": {
- "amountWithTax": 12000,
- "amountWithoutTax": 10000,
- "includesTax": true
}, - "planRequest": {
- "type": "TIERED_VALUE_BASED",
- "planName": "STARTUP",
- "extraAssets": 1000
}, - "billingRequest": {
- "billingPeriod": "MONTHLY",
- "currency": "GBP",
- "country": "GB"
}, - "signupUser": {
- "email": "some@email.com",
- "name": "Some Name"
}, - "coupons": [
- {
- "id": "5%OFF-COUPON",
- "name": "5% off coupon",
- "discountPercentage": 12.5,
- "status": "ACTIVE"
}
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Get a Subscription Intent resource
id required | string The unique ID of the SubscriptionIntent |
curl -i -X GET \ https://api-v2.dash.app/subscription-intents/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "id": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "setupIntentId": "some-setup-intent-id",
- "setupIntentClientSecret": "some-setup-intent-client-secret",
- "accountId": "string",
- "amount": {
- "amountWithTax": 12000,
- "amountWithoutTax": 10000,
- "includesTax": true
}, - "planRequest": {
- "type": "TIERED_VALUE_BASED",
- "planName": "STARTUP",
- "extraAssets": 1000
}, - "billingRequest": {
- "billingPeriod": "MONTHLY",
- "currency": "GBP",
- "country": "GB"
}, - "signupUser": {
- "email": "some@email.com",
- "name": "Some Name"
}, - "coupons": [
- {
- "id": "5%OFF-COUPON",
- "name": "5% off coupon",
- "discountPercentage": 12.5,
- "status": "ACTIVE"
}
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Update a Subscription Intent resource
id required | string The unique ID of the SubscriptionIntent |
any (PlanRequest) | |
object (BillingRequest) | |
object (SignupUser) | |
couponIds | Array of strings Nullable The coupon IDs to apply to the subscription you intend to pay for |
{- "planRequest": {
- "type": "TIERED_VALUE_BASED",
- "planName": "STARTUP",
- "extraAssets": 1000
}, - "billingRequest": {
- "billingPeriod": "MONTHLY",
- "currency": "GBP",
- "country": "GB"
}, - "signupUser": {
- "email": "some@email.com",
- "name": "Some Name"
}, - "couponIds": [
- "string"
]
}
{- "result": {
- "id": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "setupIntentId": "some-setup-intent-id",
- "setupIntentClientSecret": "some-setup-intent-client-secret",
- "accountId": "string",
- "amount": {
- "amountWithTax": 12000,
- "amountWithoutTax": 10000,
- "includesTax": true
}, - "planRequest": {
- "type": "TIERED_VALUE_BASED",
- "planName": "STARTUP",
- "extraAssets": 1000
}, - "billingRequest": {
- "billingPeriod": "MONTHLY",
- "currency": "GBP",
- "country": "GB"
}, - "signupUser": {
- "email": "some@email.com",
- "name": "Some Name"
}, - "coupons": [
- {
- "id": "5%OFF-COUPON",
- "name": "5% off coupon",
- "discountPercentage": 12.5,
- "status": "ACTIVE"
}
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Get a summary of your subscription usage for the last six months.
If you are on a tiered subscription (Starting, Growing or Dashing), the download counts will be bucketed by calendar month. For example, the last counts will include all downloads this calendar month up to today.
If you are on the new value-based pricing (Startup, Small Team, Growing Brand or Established Brand), then the download counts are bucketed based on your billing month.
curl -i -X GET \ https://api-v2.dash.app/subscription-usage \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "lastSixMonthsDownloadCountsChronologically": [
- {
- "dateFrom": "2024-01-15T00:00:00.000Z",
- "dateTo": "2024-02-15T00:00:00.000Z",
- "downloadCount": 15
}, - {
- "dateFrom": "2024-01-15T00:00:00.000Z",
- "dateTo": "2024-02-15T00:00:00.000Z",
- "downloadCount": 15
}, - {
- "dateFrom": "2024-01-15T00:00:00.000Z",
- "dateTo": "2024-02-15T00:00:00.000Z",
- "downloadCount": 15
}, - {
- "dateFrom": "2024-01-15T00:00:00.000Z",
- "dateTo": "2024-02-15T00:00:00.000Z",
- "downloadCount": 15
}, - {
- "dateFrom": "2024-01-15T00:00:00.000Z",
- "dateTo": "2024-02-15T00:00:00.000Z",
- "downloadCount": 15
}, - {
- "dateFrom": "2024-01-15T00:00:00.000Z",
- "dateTo": "2024-02-15T00:00:00.000Z",
- "downloadCount": 15
}
], - "lastMonthDownloadCountsByUserType": {
- "downloadsBySignedInUsers": 67,
- "downloadsByPublicVisitors": 0,
- "activeEmbeddableLinks": 15
}, - "storageBytesStored": 7981506322,
- "numberOfAssets": 2540
}
Coming soon; contact us if you need access to this API endpoint.
curl -i -X GET \ https://api-v2.dash.app/text-in-image-settings \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "enabled": true,
- "confidence": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
enabled | boolean Nullable Whether text in image extraction is enabled |
confidence | number Nullable A number between 1 and 100 indicating how confident Dash should be about the text in the image |
{- "enabled": true,
- "confidence": 85
}
{- "result": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "enabled": true,
- "confidence": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Coming soon; contact us if you need access to this API endpoint.
curl -i -X GET \ https://api-v2.dash.app/theme \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "accentColour": "#333666",
- "showRecentlyAddedAssets": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Update the Theme
of the account.
object (NullableStringFieldPatch) | |
showRecentlyAddedAssets | boolean Nullable Whether to include a preview of recently added assets on the homepage |
{- "accentColour": {
- "value": "example value"
}, - "showRecentlyAddedAssets": true
}
{- "result": {
- "accentColour": "#333666",
- "showRecentlyAddedAssets": true
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Post an upload object for one of the images in the account's Theme
themeImageType required | string (ThemeImageType) Enum: "FAVICON" "LOGO" "HOMEPAGE_IMAGE" "LOGIN_IMAGE" |
{- "themeImageType": "FAVICON"
}
{
}
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
}
curl -i -X DELETE \ https://api-v2.dash.app/theme/favicon \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Delete the homepage image from the Theme
curl -i -X DELETE \ https://api-v2.dash.app/theme/homepage-image \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Delete the login image from the Theme
curl -i -X DELETE \ https://api-v2.dash.app/theme/login-image \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
curl -i -X DELETE \ https://api-v2.dash.app/theme/logo \ -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 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"
}
Create a specified number of new Asset
s without files. AssetUpload
s can be done separately.
numberToCreate required | integer The number of assets to create |
{- "numberToCreate": 42
}
{- "result": {
- "assetIds": [
- "2b746f61-d36d-4627-a547-936f6f20594b",
- "23cfaab7-c9f3-4b28-ac21-7b5b18f2519a"
]
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
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"
}
]
}
An AssetUploadBatchJob
should be created when you want to create an AssetUpload
for multiple assets.
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 files have been uploaded to the Asset
s 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 (AssetUploadBatchRequestItem) |
{- "items": [
- {
- "batchItemId": "my-item-1",
- "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"
}
]
}
}
]
}
{- "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 AssetUploadBatchJob
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/asset-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": [ ]
}
}
}
}
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"
}
Delete a set of Asset
by the specified assets selector
required | any (AssetsSelector) |
{- "selector": {
- "type": "BY_CRITERION",
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "Folder",
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "includeDescendants": true
}
}
}
{- "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"
}
Coming soon; contact us if you need access to this API endpoint.
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/assets/:id/comments \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "result": {
- "id": "8bc23748-39e0-4dce-a48e-f71845eeeec3",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "userId": "google-oauth2|110955770826801837334",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "contextId": "collection/a52b5315-15b8-417f-b742-d6902108bac1",
- "text": "This is a comment that has been left by a user, how insightful!",
- "dateCreated": "2021-02-17T09:24:01.417Z"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
]
id required | string The unique ID of the |
contextId required | string Identifies which context this |
text required | string <= 4000 characters The text content of the |
{- "contextId": "collection/a52b5315-15b8-417f-b742-d6902108bac1",
- "text": "This is a comment that has been left by a user, how insightful!"
}
{- "result": {
- "id": "8bc23748-39e0-4dce-a48e-f71845eeeec3",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "userId": "google-oauth2|110955770826801837334",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "contextId": "collection/a52b5315-15b8-417f-b742-d6902108bac1",
- "text": "This is a comment that has been left by a user, how insightful!",
- "dateCreated": "2021-02-17T09:24:01.417Z"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Patch a Comment
id required | string The unique ID of the |
text | string <= 4000 characters The text content of the |
{- "text": "This is an edited comment that has been left by a user, how insightful!"
}
{- "result": {
- "id": "8bc23748-39e0-4dce-a48e-f71845eeeec3",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "userId": "google-oauth2|110955770826801837334",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "contextId": "collection/a52b5315-15b8-417f-b742-d6902108bac1",
- "text": "This is a comment that has been left by a user, how insightful!",
- "dateCreated": "2021-02-17T09:24:01.417Z"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Delete a Comment
resource.
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/comments/: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"
}
Coming soon; contact us if you need access to this API endpoint.
Deduplicate duplicate Assets
, where a duplicate is an asset with the same file checksum as
another asset. Duplicates are deleted. Metadata values from duplicates are merged into the original asset's
metadata. For metadata multivalues, e.g. folders, the total set of values is merged. For metadata text values, the
longest length text value is merged. For metadata date and date-time values, the oldest value is merged.
curl -i -X POST \ https://api-v2.dash.app/asset-deduplication-batch-jobs \ -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"
}
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"
}
Stops an AssetEmbeddableLinkBatchJob
and deletes it
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/embeddable-link-batch-jobs/: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 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.
curl -i -X POST \ https://api-v2.dash.app/asset-metadata-export-batch-jobs \ -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"
}
Get the status and eventual result of a MetadataExportJob
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/asset-metadata-export-batch-jobs/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "allOf": [
- {
- "$ref": "#/components/schemas/CompletedJob"
}, - {
- "type": "object",
- "required": [
- "result"
], - "properties": {
- "result": {
- "$ref": "#/components/schemas/MetadataExportResult"
}
}
}
]
}
Update a MetadataExportJob
id required | string The unique ID of the |
status required | string Nullable The status of the job |
{- "status": "STARTED"
}
{- "allOf": [
- {
- "$ref": "#/components/schemas/CompletedJob"
}, - {
- "type": "object",
- "required": [
- "result"
], - "properties": {
- "result": {
- "$ref": "#/components/schemas/MetadataExportResult"
}
}
}
]
}
Stops a MetadataExportJob
and deletes it
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/asset-metadata-export-batch-jobs/: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 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"
}
]
}
]
Create a new Asset Saved Crop Area Summary 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 (SavedCropAreaSummarySearchCriterion) |
required | Array of objects (SavedCropAreaSummarySort) Sorts to be applied to the search in order of precedence |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "FIELD_EQUALS",
- "value": "Folder",
- "field": "PRESET_ID"
}, - "sorts": [
- {
- "field": "PRESET_ID",
- "order": "ASC"
}
]
}
{- "results": [
- {
- "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"
}
]
}
], - "totalResults": 15
}
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.
Create a new Cloud Connections
resource to connect to a cloud storage providers and import assets into Dash
type required | string GOOGLE GOOGLE DROPBOX |
authorizationCode required | string The temporary OAuth2 authorization code that Dash can exchange for an access token to a user's Google Cloud |
redirectUri required | string The redirect URI that was specified when getting the |
{- "type": "GOOGLE",
- "authorizationCode": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
}
{- "result": {
- "type": "string",
- "id": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "email": "john.smith@gmail.com",
- "name": "John Smith",
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Get a CloudConnection
resource to connect which connects to Cloud Storage Providers in order to import assets into Dash
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/cloud-connections/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "type": "string",
- "id": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "email": "john.smith@gmail.com",
- "name": "John Smith",
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Delete a Cloud Connections
resource
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/cloud-connections/: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"
}
Get all the CloudConnection
resources for the current user
curl -i -X GET \ https://api-v2.dash.app/current-user-cloud-connections \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "result": {
- "type": "string",
- "id": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "creatorId": "google-oauth2|110955770826801837334",
- "email": "john.smith@gmail.com",
- "name": "John Smith",
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
]
This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header
curl -i -X GET \ https://api-v2.dash.app/oauth-callback
{- "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.
Create a new Cloud Import Job
resource to import assets into Dash
cloudConnectionId required | string The unique ID for the |
any (CloudObjectsSelector) | |
keepFolderStructure required | boolean Whether to maintain the source folder structure beneath the selected objects |
destinationPath required | string The path of the folder in Dash to import the files into. Use an empty string to import to the top level. |
Array of objects (CloudObjectPathMapping) A list of [ |
{- "cloudConnectionId": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "selector": {
- "type": "BY_IDS",
- "cloudObjectIds": [
- "string"
]
}, - "keepFolderStructure": true,
- "destinationPath": "path/to/folder",
- "pathMappings": [
- {
- "matchPrefix": "path/to/folder",
- "removePrefix": "path/to/",
- "addPrefix": "new-folder/"
}
]
}
{- "result": {
- "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"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Get the status and eventual result of a CloudImportJob
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/cloud-import-jobs/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "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"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Update a CloudImportJob
. Primarily used to stop a job.
id required | string The unique ID of the |
status required | string Nullable The status of the job |
{- "status": "STARTED"
}
{- "result": {
- "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"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Deletes a CloudImportJob
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/cloud-import-jobs/: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"
}
Get all CloudImportJob
resources for the current user
type | string The cloud provider type of the jobs to get |
curl -i -X GET \ 'https://api-v2.dash.app/current-user-cloud-import-jobs?type=DROPBOX' \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "result": {
- "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"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
]
Coming soon; contact us if you need access to this API endpoint.
Get a CloudObject
id required | string The unique ID of the CloudConnection that the CloudObject belongs to |
cloudObjectId required | string The unique ID of the CloudObject |
curl -i -X GET \ https://api-v2.dash.app/cloud-connections/:id/cloud-objects/:cloudObjectId \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "id": "be161977-d44e-4888-af3c-66522e223963",
- "parentId": {
- "type": "ROOT_FOLDER"
}, - "name": "My File",
- "type": "FILE",
- "size": 15318362,
- "dateLastModified": "2021-02-17T09:24:01.417Z",
- "thumbnailUrl": "string",
- "iconUrl": "string"
}
cloudConnectionId required | string The unique ID for the |
required | any (CloudObjectSearchCriterion) |
pageSize | integer Default: 100 The maximum number of items to return in the result set |
pageToken | string Nullable The page token to continue a previous search |
{- "cloudConnectionId": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "criterion": {
- "type": "FIELD_EQUALS",
- "field": "PARENT_ID",
- "value": {
- "type": "ROOT_FOLDER"
}
}, - "pageSize": 100,
- "pageToken": "hds7bs78bbw7v8w"
}
{- "results": [
- {
- "id": "be161977-d44e-4888-af3c-66522e223963",
- "parentId": {
- "type": "ROOT_FOLDER"
}, - "name": "My File",
- "type": "FILE",
- "size": 15318362,
- "dateLastModified": "2021-02-17T09:24:01.417Z",
- "thumbnailUrl": "string",
- "iconUrl": "string"
}
], - "nextPage": {
- "cloudConnectionId": "e2b03444-8c5d-44ed-bd9f-7eee882bdf81",
- "criterion": {
- "type": "FIELD_EQUALS",
- "field": "PARENT_ID",
- "value": {
- "type": "ROOT_FOLDER"
}
}, - "pageSize": 100,
- "pageToken": "hds7bs78bbw7v8w"
}
}
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
}
This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header
curl -i -X GET \ https://api-v2.dash.app/dash-ping
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
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.
Get Field Option Images in batches
required | Array of objects (FieldOptionImageBatchRequestItem) |
{- "items": [
- {
- "batchItemId": 1,
- "fieldOptionId": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52"
}, - {
- "batchItemId": 2,
- "fieldOptionId": "1ecabbb8-85d5-11eb-8dcd-0242ac130003"
}, - {
- "batchItemId": 3,
- "fieldOptionId": "5a2481e0-819f-4b46-a7e6-143f943345f2"
}
]
}
{- "successes": {
- "1": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "fieldId": "7756d388-110c-4712-b350-0b2b48e156c1",
- "fieldOptionId": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52",
}, - "2": {
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "fieldId": "7756d388-110c-4712-b350-0b2b48e156c1",
- "fieldOptionId": "1ecabbb8-85d5-11eb-8dcd-0242ac130003",
}
}, - "failures": {
- "3": "FIELD_OPTION_IMAGE_DOES_NOT_EXIST"
}
}
Delete a field Option Image
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/field-option-images/: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"
}
accountId required | string The ID of the |
fieldId required | string The ID of the |
fieldOptionId required | string The ID of the |
{- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "fieldId": "7756d388-110c-4712-b350-0b2b48e156c1",
- "fieldOptionId": "1fc6d6c3-c42d-48e2-b0db-5d680a58ca52"
}
{
}
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"
}
]
}
]
Create a new GuestUpload
URL, to share with a guest to upload files to a specified folder
folderFieldOptionId required | string The unique ID of the |
name required | string A human readable name for the |
message | string Nullable Optional message shown to anyone that visits the |
messageHeading | string Nullable Optional message header shown to anyone that visits the |
{- "folderFieldOptionId": "c4e146aa3-543a-4d58-bf99-0d33cf73e942",
- "name": "Social media Content",
- "message": "Please upload your favourite social media pics for approval",
- "messageHeading": "Social media uploads"
}
{- "result": {
- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "folderFieldOptionId": "c4e146aa3-543a-4d58-bf99-0d33cf73e942",
- "name": "Social media Content",
- "currentSlug": "puaon-social-media-content",
- "slugs": [
- "puaon-social-media-content",
- "azxmq-social-media-old"
], - "message": "Please upload your favourite social media pics for approval",
- "messageHeading": "Social media uploads"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Get a GuestUpload
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/guest-uploads/:id \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "folderFieldOptionId": "c4e146aa3-543a-4d58-bf99-0d33cf73e942",
- "name": "Social media Content",
- "currentSlug": "puaon-social-media-content",
- "slugs": [
- "puaon-social-media-content",
- "azxmq-social-media-old"
], - "message": "Please upload your favourite social media pics for approval",
- "messageHeading": "Social media uploads"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Patch a GuestUpload
id required | string The unique ID of the |
folderFieldOptionId | string Nullable The unique ID of the |
name | string Nullable A human readable name for the |
message | string Nullable Message shown to anyone that visits the |
messageHeading | string Nullable Optional message header shown to anyone that visits the |
{- "folderFieldOptionId": "c4e146aa3-543a-4d58-bf99-0d33cf73e942",
- "name": "Social media Content",
- "message": "Please upload your favourite social media pics for approval",
- "messageHeading": "Social media uploads"
}
{- "result": {
- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "accountId": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "folderFieldOptionId": "c4e146aa3-543a-4d58-bf99-0d33cf73e942",
- "name": "Social media Content",
- "currentSlug": "puaon-social-media-content",
- "slugs": [
- "puaon-social-media-content",
- "azxmq-social-media-old"
], - "message": "Please upload your favourite social media pics for approval",
- "messageHeading": "Social media uploads"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Delete a GuestUpload
.
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/guest-uploads/: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 GuestUploadSearch
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 (GuestUploadSearchCriterion) |
required | Array of objects (GuestUploadSort) 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",
- "folderFieldOptionId": "c4e146aa3-543a-4d58-bf99-0d33cf73e942",
- "name": "Social media Content",
- "currentSlug": "puaon-social-media-content",
- "slugs": [
- "puaon-social-media-content",
- "azxmq-social-media-old"
], - "message": "Please upload your favourite social media pics for approval",
- "messageHeading": "Social media uploads"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
], - "totalResults": 15
}
Create an access token for making requests as a GuestUpload
user. Using this access token, the guest can upload assets.
This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header
guestUploadId | string The unique ID for the |
email required | string The email address of the |
{- "guestUploadId": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "email": "john.smith@gmail.com"
}
{- "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 GuestUpload
URL via email to a specified email address
guestUploadId required | string The unique ID for the |
email required | string The email address to send the |
{- "guestUploadId": "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"
}
Get the publicly available data for a Guest Upload by subdomain and slug
subdomain required | string The subdomain of the |
slug required | string The slug of the |
curl -i -X GET \ https://api-v2.dash.app/subdomains/:subdomain/publicly-available-guest-upload-data/:slug \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "name": "Social media Content",
- "message": "Please upload your favourite social media pics for approval",
- "messageHeading": "Social media uploads"
}, - "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"
}
Associate an external app user ID with the currently authenticated Dash user
externalAppUserId | string External app user ID |
appName | string Value: "CANVA" |
{- "externalAppUserId": "string",
- "appName": "CANVA"
}
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Create external app SSO token for the current user
appName required | string Value: "FRILL" |
{- "appName": "FRILL"
}
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Associate an external app account with the account of the currently authenticated Dash user
externalAppAccountId | string A unique identifier of the specific account to connect to in the external app |
appName | string Value: "SHOPIFY" |
connectionPayload | object Any additional data that is required to connect to the external app |
{- "externalAppAccountId": "put the Shopify domain here",
- "appName": "SHOPIFY",
- "connectionPayload": {
- "type": "SHOPIFY",
- "clientId": "put the Client ID here",
- "clientSecret": "put the Client secret here",
- "accessToken": ""
}
}
{- "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.
See AssetDownloadBatchJob
for an idea of how to use this endpoint
shop | string The "shop" slug for the specific Shopify shop to create images in |
productId required | string The id of the product in Shopify to create images for |
required | Array of objects (AssetDownloadBatchRequestItem) |
required | any (TransformationDescription) |
{- "shop": "example.myshopify.com",
- "productId": 1234,
- "items": [
- {
- "batchItemId": "my-item-1",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "assetFileId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "outputFilename": "string",
- "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",
- "progress": {
- "steps": [
- {
- "name": "STEP_NAME",
- "status": "STARTED",
- "completedItems": 0,
- "totalItems": 2
}
]
}, - "status": "PENDING"
}
See AssetDownloadBatchJob
for an idea of how to use this endpoint
shop | string The "shop" slug for the specific Shopify shop to create images in |
required | any (ShopifyImageUsedIn) |
required | Array of objects (AssetDownloadBatchRequestItem) |
required | any (TransformationDescription) |
{- "shop": "example.myshopify.com",
- "usedIn": {
- "type": "PRODUCT",
- "productId": 1234
}, - "items": [
- {
- "batchItemId": "my-item-1",
- "assetId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "assetFileId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "outputFilename": "string",
- "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",
- "progress": {
- "steps": [
- {
- "name": "STEP_NAME",
- "status": "STARTED",
- "completedItems": 0,
- "totalItems": 2
}
]
}, - "status": "PENDING"
}
Get details about a particular connection to Shopify
id required | string The shop name that uniquely identifies a Shopify connection |
curl -i -X GET \ https://api-v2.dash.app/shopify-connections/:id
{- "result": {
- "id": "example.myshopify.com",
- "clientId": "339764aa5d7d5cd60ad55a48d3e4fc8d"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
This is quite an internal endpoint and is only really in the API due to needing to be on the dash.app domain.
shop required | string The shop name that uniquely identifies a Shopify connection |
hmac required | string A hash of all other parameters created by using the Shopify secret key as the key |
session | string The current session |
timestamp | string |
locale | string |
host | string |
embedded | string |
curl -i -X GET \ 'https://api-v2.dash.app/shopify-callback?shop=string&hmac=string&session=string×tamp=string&locale=string&host=string&embedded=string'
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
curl -i -X GET \ https://api-v2.dash.app/wordpress-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"
}
]
}
baseUrls required | Array of strings The base urls of your WordPress instances using the Dash plugin. |
{
}
{- "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"
}
]
}
baseUrls | Array of strings Nullable The base urls of your WordPress instances using the Dash plugin. |
{
}
{- "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/wordpress-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"
}
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"
}
Get the publicly available data for a portal by subdomain and slug
curl -i -X GET \ https://api-v2.dash.app/subdomains/:subdomain/publicly-available-portal-datas/:slug \ -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,
- "requiresPasscode": true,
- "assetPermittedActions": "VIEW"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
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.
Delete Staff Member
with the specified ID.
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/staff-members/: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"
}
curl -i -X GET \ https://api-v2.dash.app/staff-members \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
[- {
- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "email": "some-staff-name@dash.app"
}
]
Create a new Staff Member
. Staff Members can log in to any Dash account.
email required | string Email of the |
{- "email": "some-staff-name@dash.app"
}
{- "id": "55f9964c-095d-4b8b-bb5e-4118d2e76ad0",
- "email": "some-staff-name@dash.app"
}
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"
}
]
}
Delete a User
and delete all AssetShares
belonging to that user
id required | string The unique ID of the |
curl -i -X DELETE \ https://api-v2.dash.app/users/: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 User
resources in the current account
required | Array of any (UserBatchRequestItem) |
{- "items": [
- {
- "batchItemId": "my-item-1",
- "type": "ADMIN",
- "email": "john.smith@gmail.com",
- "welcomeMessage": "You have been invited to join Dash — a tool for managing images, videos and more."
}
]
}
{- "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 UserBatchJob
id required | string The unique ID of the |
curl -i -X GET \ https://api-v2.dash.app/user-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 UserSearch
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 (UserSearchCriterion) |
required | Array of objects (UserSort) Sorts to be applied to the search in order of precedence |
{- "from": 0,
- "pageSize": 100,
- "criterion": {
- "type": "MATCH_ALL"
}, - "sorts": [
- {
- "field": "EMAIL",
- "order": "ASC"
}
]
}
{- "results": [
- {
- "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"
}
]
}
], - "totalResults": 10
}
Delete a User
with the option to delete all AssetShares
belonging to that user
id | string The unique ID of the |
deleteAssetShares | boolean Whether to delete all |
{- "id": "cfb665ca-ce35-4418-b9d5-70ee815db4bd",
- "deleteAssetShares": true
}
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
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"
}
]
}
Get the currently authenticated User
's creation status (used for detecting if a temporary signup token has been used)
curl -i -X GET \ https://api-v2.dash.app/current-user-creation-status \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "status": "PENDING"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Create a new Platform User
email required | string The email address of the new user |
password required | string The password of the new user |
{- "email": "john.smith@gmail.com",
- "password": "password"
}
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Get accounts which the currently authenticated Platform User
's has a seat in
from | integer Default: 0 The item number to begin the result set from |
pageSize | integer Default: 100 The maximum number of items to return in the result set |
{- "from": 0,
- "pageSize": 100
}
{- "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
}
Request a Platform User
password reset
email required | string The email address to send the password reset to |
{- "email": "john.smith@gmail.com"
}
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Reset a Platform User
password
userId required | string The id of the user to reset the password for |
password required | string The new password |
{- "userId": "john.smith@gmail.com",
- "password": "password2"
}
{- "timestamp": "2021-02-16T16:21:58.640+00:00",
- "status": 401,
- "error": "Unauthorized",
- "message": null,
- "path": "/folder-settings"
}
Get an authentication token needed to create a Platform User
email required | string The email address that the token should allow sign-up for |
verificationCode | string The code which confirms the caller is verified owner of the supplied email address |
{- "email": "john.smith@gmail.com",
- "verificationCode": "string"
}
{- "token": "string"
}
Request verification code needed to retrieve authentication token to create a Platform User
email required | string The email address to send the verification code to |
{- "email": "john.smith@gmail.com"
}
{- "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.
Get the currently authenticated User
's referrer code
curl -i -X GET \ https://api-v2.dash.app/current-user-referrer \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "code": "5fb665ca-ce35-4418-b9d5-70ee815db4bd"
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Coming soon; contact us if you need access to this API endpoint.
Get the currently authenticated User
's preferences
curl -i -X GET \ https://api-v2.dash.app/current-user-preferences \ -H 'Authorization: Bearer <YOUR_JWT_HERE>'
{- "result": {
- "userId": "google-oauth2|110955770826801837334",
- "defaultSort": {
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "order": "ASC"
}, - "defaultSearchFiltersMatchValues": {
- "property1": "ALL",
- "property2": "ALL"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}
Update the currently authenticated User
's preferences
object Nullable | |
object Nullable |
{- "defaultSort": {
- "value": {
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "order": "ASC"
}
}, - "defaultSearchFiltersMatchValues": {
- "property1": "ALL",
- "property2": "ALL"
}
}
{- "result": {
- "userId": "google-oauth2|110955770826801837334",
- "defaultSort": {
- "field": {
- "type": "FIXED",
- "fieldName": "STAGED_BY"
}, - "order": "ASC"
}, - "defaultSearchFiltersMatchValues": {
- "property1": "ALL",
- "property2": "ALL"
}
}, - "permittedActions": [
- {
- "resourceType": "ASSET",
- "resourceId": "7af90a8b-7ccd-430f-a85d-e8614015bc47",
- "action": "VIEW_ASSET"
}
]
}