# Dash API # Introduction The Dash API follows the [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) standard and uses common [HTTP](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol) headers, methods and response codes. Request and response bodies are all in [JSON](https://www.json.org/json-en.html) format except for `PUT` requests of binary file data when upload files. # Operations, Jobs and Batches If the standard `PUT`, `PATCH` and `DELETE` methods cannot adequately describe an operation on a resource the operation may itself be treated as a resource and the endpoint URLs will reflect this accordingly. For example making a `POST` to `/asset-uploads` returns an [`AssetUpload`](#operation/postAssetUpload) 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}`. # Authorisation ## Get a short-lived bearer token for testing You should read the [OAuth2 section](#section/Authorisation/OAuth2) 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](#operation/putCustomIntegrationSettings) (required for OAuth2 below), you can get a short-lived bearer token: 1. Log in to your Dash account as normal 2. Open the browser developer tools (CMD + OPTION + I on Mac or CTRL + SHIFT + I on Windows) 3. Click the "Application" tab 4. Under "Storage" in the left panel, expand "local storage" 5. Click on the URL of your Dash site 6. Copy the "value" for the access_token from the right-hand panel (be sure to select the whole thing - double click to edit, select all then copy). 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. ## OAuth2 Dash uses OAuth 2.0 for authorisation. A good overview of OAuth 2.0 can be found [here](https://auth0.com/docs/protocols/protocol-oauth2). Endpoints: * https://login.dash.app/authorize * https://login.dash.app/oauth/token Scopes to note: * **subdomain**: this should be set to the subdomain of the Dash the user is trying to access e.g. `subdomain:my-account` * **offline_access**: the standard OAuth 2.0 scope to use to obtain a refresh token 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](#section/Authorisation/Get-a-short-lived-bearer-token-for-testing) and use this to [create custom integration settings](#operation/putCustomIntegrationSettings). The response you receive from the custom integrations settings endpoint will include your client ID and secret. ## Authorization Code Flow To begin the flow, send your user in a browser to to https://login.dash.app/authorize?response_type=code&audience=https://assetplatform.io&client_id={YOUR_CLIENT_ID}&redirect_uri={YOUR_REDIRECT}&scope=offline_access%20subdomain:{YOUR_SUBDOMAIN} 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](https://auth0.com/docs/get-started/authentication-and-authorization-flow/add-login-auth-code-flow) ## Authentication Without User Interaction 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. ## Current User Details The Bearer Token is a standard [JWT](https://jwt.io/introduction) 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`](#operation/postAssetSearch) with the `STAGED_BY` criterion to find all [`Asset`](#tag/Assets) resources staged by the current user. Alternatively the [GET Current User](#operation/getCurrentUser) endpoint contains properties for the current user to avoid needing to decode the Bearer Token. # Permitted Actions In most responses from the Dash API you will find a `permittedActions` property alongside a `result` property which contains the resource. This is to provide context for operations the current user is permitted to perform on that resource. If an expected permitted action is not included in the `permittedActions` property then the current user does not have permission to perform the action. The [GET Current User](#operation/getCurrentUser) 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`](#tag/Assets) resources then the [GET Current User](#operation/getCurrentUser) `permittedActions` property will contain the permitted action `ASSETS` : `CREATE_ASSETS`. # Common Use Cases ## Getting fields and field options for asset metadata [`Asset.metadata`](#tag/Assets) consists of a map of `String` to `String[]` The keys for map are [`Field`](#tag/Fields) IDs. Full details, including the field name, can be got via the [GET Field](#tag/Fields/operation/getField) endpoint or the full list of fields for an account can be retrieved via the [GET Fields](#tag/Fields/operation/getFields) endpoint. The map values are a list of plain text values if [`Field.hasFixedOptions = false`](#tag/Fields) or a list of [`FieldOption`](#tag/Field-Options) IDs if [`Field.hasFixedOptions = true`](#tag/Fields) Where [`Field.hasFixedOptions = true`](#tag/Fields) details, including the field option name, can be got via the [GET Field Option](#operation/getFieldOption) endpoint. Where [`Field.hierarchical = true`](#tag/Fields) the complete branch of the tree will be returned and can be constructed via the [`FieldOption.parent`](#tag/Field-Options) property. ## Getting the full schema of fields and field options The full list of fields for an account can be retrieved via the [GET Fields](#tag/Fields/operation/getFields) endpoint. Where [`Field.hasFixedOptions = true`](#tag/Fields) the [POST Field Option Searches](#operation/postFieldOptionSearch) endpoint can be used to get the available options. Where [`Field.hierarchical = true`](#tag/Fields) 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. ## Folders A Folder in Dash is simply a [`FieldOption`](#tag/Field-Options), for the built-in Folders [`Field`](#tag/Fields). To determine the ID of the Folders [`Field`](#tag/Fields), use the [`Folder Settings`](#tag/Folder-Settings) endpoint. Once you have this ID, Folders behave the same as any other [`Field`](#tag/Fields). For getting the folder tree see [Getting fields and field options for asset metadata](#section/Common-Use-Cases/Getting-fields-and-field-options-for-asset-metadata) and [Getting the full schema of fields and field options](#section/Common-Use-Cases/Getting-the-full-schema-of-fields-and-field-options) For getting assets in folders see [`AssetSearch`](#operation/postAssetSearch) For getting assets in no folders see the _Search for field is empty_ example in the [POST Asset Searches](#operation/postAssetSearch) endpoint. ## Creating a new asset 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: 1. [Create an Asset and Upload batch job](#operation/postAssetAndUploadBatchJob) 2. Wait for the job to complete by checking the [GET Asset and upload batch job](#operation/postAssetUpload/operation/getAssetAndUploadBatchJob) endpoint 3. The completed job includes an [`AssetUpload`](#operation/postAssetUpload) resources in the job's `result` property. For each file you want to upload: * Make PUT requests to upload your file part with the byte ranges specified to the URLs in the corresponding `AssetUploadPart`. * Get the `etag` property from the response of each PUT request and use them to complete the upload via the (POST Asset Upload Completion)(#operation/postAssetUploadCompletion) 4. The assets will be created with a [lifecycle status](#tag/Asset-Lifecycle) of `STAGED`. Use the [POST Asset lifecycle transition batch job](postAssetLifecycleTransitionBatchJob) endpoint if you'd like to change the state of the assets (e.g. to `PENDING_APPROVAL` or `LIVE`). ## Uploading a new file for an asset 1. Create an [`AssetUpload`](#operation/postAssetUpload) via the [POST Asset Upload](#operation/postAssetUpload/operation/postAssetUpload) endpoint 3. Make PUT requests to upload your file part with the byte ranges specified to the URLs in the corresponding `AssetUploadPart`. 4. Get the `etag` property from the response of each PUT request and use them to complete the upload via the (POST Asset Upload Completion)(#operation/postAssetUploadCompletion) ## Getting asset file versions The current [`AssetFile`](#operation/getAssetFiles) for an [`Asset`](#tag/Assets) is returned in the [`Asset`](#tag/Assets) resource via the [`Asset.currentFile`](#tag/Assets) property. The [GET Asset Files](#operation/getAssetFiles) endpoint can be used to get all [`AssetFile`](#operation/getAssetFiles) resources for an [`Asset`](#tag/Assets) ## Editing asset metadata Edit the contents of one or more [`Asset.metadata`](#tag/Assets) map properties via the [POST Asset Metadata Edit Batch Job](#operation/postAssetMetadataEditBatchJob) endpoint and check on the progress and status of the edit via the [GET Asset Metadata Edit Batch Job](#operation/getAssetMetadataEditBatchJob) endpoint. ## Getting user collections 1. Get the current user ID from the [current user details](#section/Authorisation/Current-User-Details) 2. Use this ID in the `ASSOCIATED_WITH_USER` criterion of the [POST Collection Search](#operation/postCollectionSearch/operation/postCollectionSearch) endpoint to get all collections a user has access to. 3. To get the [`Asset`](#tag/Assets) resources in each collection see the _All assets in a collection_ and _Search within assets in a collection_ examples in the [POST Asset Searches](#operation/postAssetSearch) endpoint for how to specify the [`Collection.id`](#tag/Collections) in a `COLLECTIONS` : `FIELD_EQUALS` criterion. ## Search by file extension See the _Search by file extension_ and _Search by multiple file extensions_ example in the [POST Asset Searches](#operation/postAssetSearch) endpoint ## Searching for changed assets The following date properties exist on an asset and can be supplied as FIXED field criteria in the [POST Asset Searches](#operation/postAssetSearch) endpoint - [`Asset.lifecycleStatus.dateStaged`](#tag/Assets) : The datetime the [`Asset`](#tag/Assets) was created but not yet live. `DATE_STAGED` in search criteria. - [`Asset.lifecycleStatus.datePendingApproval`](#tag/Assets) : The datetime the [`Asset`](#tag/Assets) was set for approval (if it was). `DATE_PENDING_APPROVAL` in search criteria. - [`Asset.lifecycleStatus.dateLive`](#tag/Assets) : The datetime the [`Asset`](#tag/Assets) was put live. `DATE_LIVE` in search criteria. - [`Asset.currentAssetFile.dateAdded`](#tag/Assets) : The datetime the latest [`AssetFile`](#operation/getAssetFiles) was added. `DATE_LAST_ASSET_FILE_ADDED` in search criteria. - [`Asset.dateLastModified`](#tag/Assets) : The datetime the *any* change was made to an [`Asset`](#tag/Assets). 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. # Migration from V1 Several breaking changes have been introduced in the switch from V1 to V2, which are all the result of three changes. - The domain is changing from `brightdash.app` to `dash.app`. All URLs used to access the API, including for authorisation, should be updated to the new domain. - The concept of "asset staging status" has been renamed to "asset lifecycle" with the introduction of the bin, which adds another state for assets that isn't just about the staging workflow. This second change manifests in the changing of the StagingWorkflowTransitionBatchJob to the LifecycleTransitionBatchJob, a refactoring of the asset model to bring the "date added" and "added by" fields together with other lifecycle information, and the renaming of the "date added" and "added by" fields to the more specific "date live" and "staged by". - Asset batch jobs used to only support carrying out operations on assets by a search criterion. This has been extended to also allow performing operations by id, so the "criterion" field has changed to a "selector" field which supports objects of either type. - The term `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. ## Domain - Domain has changed from `brightdash.app` to `dash.app` throughout the API. ## Asset Staging Workflow - The path of this endpoint has changed from `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": {...}}`. ## Asset Searches For both scroll and paged searches: - The following `criterion.field.fieldName` and `sorts.field.fieldName` values have been renamed: - `DATE_ADDED` -> `DATE_LIVE` - `ADDED_BY` -> `STAGED_BY` - The `stagingStatus`, `addedBy`, and `dateAdded` fields have been removed from the response. This data can now be found in the `lifecycleStatus` field. ## Asset Deletion - `criterion` in the POST body has become `selector`, and the criterion now needs to be wrapped in the following `{"type": "BY_CRITERION", "criterion": {...}}`. ## Asset Metadata Edit - `criterion` in the POST body has become `selector`, and the criterion now needs to be wrapped in the following `{"type": "BY_CRITERION", "criterion": {...}}`. ## Search Filters - The value returned from the `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. ## Saved Search - The following `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` ## Attributes/Fields - The string `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. Version: 2.0.0 ## Servers Production ``` https://api-v2.dash.app ``` Staging ``` https://api-v2.dashstaging.app ``` ## Security ### bearerToken Type: http Scheme: bearer Bearer Format: JWT ### portalPasscode Prefix the value with \"Passcode \" Type: apiKey In: header Name: Authorization ## Download OpenAPI description [Dash API](https://api-docs.dash.app/_bundle/dash/@v2/openapi.yaml) ## Accounts Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Create an account - [POST /accounts](https://api-docs.dash.app/dash/openapi/accounts/postaccounts.md): Create an [Account] > This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ### Request an invite to an account - [POST /account-invite-requests](https://api-docs.dash.app/dash/openapi/accounts/postaccountinviterequest.md): Create a new [AccountInviteRequest] This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ### Search for publicly available account data - [POST /publicly-available-account-data-searches](https://api-docs.dash.app/dash/openapi/accounts/postpubliclyavailableaccountdatasearches.md): Create a new PubliclyAvailableAccountData. This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ## Account Security Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the account security - [GET /account-security](https://api-docs.dash.app/dash/openapi/account-security/getaccountsecurity.md) ### Update the account security - [PUT /account-security](https://api-docs.dash.app/dash/openapi/account-security/putaccountsecurity.md) ## Allowed Login Methods Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Update the allowed login methods - [PUT /allowed-login-methods](https://api-docs.dash.app/dash/openapi/allowed-login-methods/putallowedloginmethods.md) ## Auto-Tagging Image Settings Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the account auto-tagging image settings - [GET /auto-tagging-image-settings](https://api-docs.dash.app/dash/openapi/auto-tagging-image-settings/getautotaggingimagesettings.md) ### Update the account auto-tagging image settings - [PATCH /auto-tagging-image-settings](https://api-docs.dash.app/dash/openapi/auto-tagging-image-settings/patchautotaggingimagesettings.md) ## Entity Quota Overrides Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get an EntityQuotaOverride - [GET /admin/accounts/{accountId}/entities/{id}/quota-override](https://api-docs.dash.app/dash/openapi/entity-quota-overrides/getentityquotaoverride.md): Get the EntityQuotaOverride for the specified entity. Valid entity IDs are: - user - guestUpload - portal - savedSearch - presetSize - group - comment - assetShare - embeddableLink - embeddedDataMapping - field - fieldOption - collection ### Create or update an EntityQuotaOverride - [PUT /admin/accounts/{accountId}/entities/{id}/quota-override](https://api-docs.dash.app/dash/openapi/entity-quota-overrides/putentityquotaoverride.md): Create a EntityQuotaOverride for the specified entity. ## Folder Settings For the most part Folders in Dash are just like any custom [`Field`](#tag/Fields) with [`Field.hasFixedOptions = true`](#tag/Fields), [`Field.hierarchical = true`](#tag/Fields) and [`Field.multiValue = true`](#tag/Fields). The Folders [`Field`](#tag/Fields) also has the following behaviour. * It cannot be deleted - [`Field.indestructable = true`](#tag/Fields) * It is used to define [`Asset`](#tag/Assets) permissions for a `UserGroup` (currently only configurable via the Dash frontend, not via the API) * A quick browse widget of your Folders [`Field`](#tag/Fields) appears on your Dash app homepage. Folder Settings specify the [`Field.id`](#tag/Fields) of the Folders [`Field`](#tag/Fields) in your Dash. ### Get the account folder settings - [GET /folder-settings](https://api-docs.dash.app/dash/openapi/folder-settings/getfoldersettings.md) ## Onboarding Checklist Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the account onboarding checklist - [GET /onboarding-checklist](https://api-docs.dash.app/dash/openapi/onboarding-checklist/getonboardingchecklist.md) ### Update the account onboarding checklist - [PATCH /onboarding-checklist](https://api-docs.dash.app/dash/openapi/onboarding-checklist/patchonboardingchecklist.md) ## Preset Transformations ### Get grouped preset transformations - [GET /grouped-preset-transformations](https://api-docs.dash.app/dash/openapi/preset-transformations/getgroupedpresettransformations.md): Get all PresetTransformations for the account in a group structure. ### Search for preset transformations - [POST /preset-transformation-searches](https://api-docs.dash.app/dash/openapi/preset-transformations/postpresettransformationsearch.md): 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. ### Search for preset transformations for assets - [POST /preset-transformations-for-asset-searches](https://api-docs.dash.app/dash/openapi/preset-transformations/postpresettransformationsforassetsearch.md): Create a new [PresetTransformationsForAssetSearch] ## Search Filters The [Search Filter View](#operation/getSearchFilters) 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`](#tag/Fields) in your Dash or a one of a subset of the fixed search fields available in the search API (currently `DATE_LIVE`, `FILE_TYPE` or `STAGED`) ### Get all search filters - [GET /search-filters](https://api-docs.dash.app/dash/openapi/search-filters/getsearchfilters.md): Get the SearchFilter resources ### Get the account search filter view - [GET /search-filter-view](https://api-docs.dash.app/dash/openapi/search-filters/getsearchfilterview.md): Get the SearchFilter resources that have been configured as in use ### Add a search filter to the account search filter view - [POST /search-filter-view/search-filters](https://api-docs.dash.app/dash/openapi/search-filters/postsearchfilterviewsearchfilter.md): Configure a SearchFilter resource as in-use ### Patch a search filter in the account search filter view - [PATCH /search-filter-view/search-filters/{id}](https://api-docs.dash.app/dash/openapi/search-filters/patchsearchfilterviewsearchfilter.md): Change the display position of a SearchFilter resource in the search filter view ### Delete a search filter from the account search filter view - [DELETE /search-filter-view/search-filters/{id}](https://api-docs.dash.app/dash/openapi/search-filters/deletesearchfilterviewsearchfilter.md): Configure a SearchFilter resource as not in-use ## Shopify SKU Settings Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the account Shopify SKU settings - [GET /shopify-sku-settings](https://api-docs.dash.app/dash/openapi/shopify-sku-settings/getshopifyskusettings.md) ### Create or update the account Shopify SKU settings - [PUT /shopify-sku-settings](https://api-docs.dash.app/dash/openapi/shopify-sku-settings/putshopifyskusettings.md) ### Delete the account Shopify SKU settings - [DELETE /shopify-sku-settings](https://api-docs.dash.app/dash/openapi/shopify-sku-settings/deleteshopifyskusettings.md) ## Subscription Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the account subscription - [GET /subscription](https://api-docs.dash.app/dash/openapi/subscription/getsubscription.md): Get the Subscription associated with your account ### Delete the account subscription - [DELETE /subscription](https://api-docs.dash.app/dash/openapi/subscription/deletesubscription.md): Delete the Subscription associated with your account ### Get the subscription estimate - [GET /subscription-estimate](https://api-docs.dash.app/dash/openapi/subscription/getsubscriptionestimate.md): Get an estimate of the upcoming subscription based on current usage ### Create a subscription intent - [POST /subscription-intents](https://api-docs.dash.app/dash/openapi/subscription/postsubscriptionintent.md): Create a new Subscription Intent resource to indicate intent to subscribe to a paid plan ### Get a subscription intent - [GET /subscription-intents/{id}](https://api-docs.dash.app/dash/openapi/subscription/getsubscriptionintent.md): Get a Subscription Intent resource ### Update a subscription intent - [PATCH /subscription-intents/{id}](https://api-docs.dash.app/dash/openapi/subscription/patchsubscriptionintent.md): Update a Subscription Intent resource ### Get subscription usage - [GET /subscription-usage](https://api-docs.dash.app/dash/openapi/subscription/getsubscriptionusage.md): 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. ## Text In Image Settings Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the account text in image settings - [GET /text-in-image-settings](https://api-docs.dash.app/dash/openapi/text-in-image-settings/gettextinimagesettings.md) ### Update the account text in image settings - [PATCH /text-in-image-settings](https://api-docs.dash.app/dash/openapi/text-in-image-settings/patchtextinimagesettings.md) ## Terms and Conditions Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get account terms and conditions - [GET /account-terms-and-conditions/{id}](https://api-docs.dash.app/dash/openapi/terms-and-conditions/getaccounttermsandconditions.md): Get an AccountTermsAndConditions This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ### Delete account terms and conditions - [DELETE /account-terms-and-conditions/{id}](https://api-docs.dash.app/dash/openapi/terms-and-conditions/deleteaccounttermsandconditions.md): Delete an AccountTermsAndConditions ### Create or update account terms and conditions - [PUT /account-terms-and-conditions/{id}](https://api-docs.dash.app/dash/openapi/terms-and-conditions/putaccounttermsandconditions.md): Create or update an AccountTermsAndConditions ### Get the account terms and conditions in effect - [GET /account-terms-and-conditions-in-effect](https://api-docs.dash.app/dash/openapi/terms-and-conditions/getaccounttermsandconditionsineffect.md): Get the latest AccountTermsAndConditions in effect This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ## Theme Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the account theme - [GET /context-types/{contextType}/contexts/{contextId}/theme](https://api-docs.dash.app/dash/openapi/theme/gettheme.md): Get the account's Theme ### Update the account theme - [PATCH /context-types/{contextType}/contexts/{contextId}/theme](https://api-docs.dash.app/dash/openapi/theme/patchtheme.md): Update the Theme of the account. ### Upload a theme image - [POST /context-types/{contextType}/contexts/{contextId}/theme-image-uploads](https://api-docs.dash.app/dash/openapi/theme/postthemeimageupload.md): Post an upload object for one of the images in the account's Theme ### Search for account themes - [POST /theme-searches](https://api-docs.dash.app/dash/openapi/theme/postthemesearch.md): 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 ### Delete the account theme favicon - [DELETE /context-types/{contextType}/contexts/{contextId}/theme/favicon](https://api-docs.dash.app/dash/openapi/theme/deletethemefavicon.md): Delete the favicon from the Theme ### Delete the account theme homepage image - [DELETE /context-types/{contextType}/contexts/{contextId}/theme/homepage-image](https://api-docs.dash.app/dash/openapi/theme/deletethemehomepageimage.md): Delete the homepage image from the Theme ### Delete the account theme login image - [DELETE /context-types/{contextType}/contexts/{contextId}/theme/login-image](https://api-docs.dash.app/dash/openapi/theme/deletethemeloginimage.md): Delete the login image from the Theme ### Delete the account theme logo - [DELETE /context-types/{contextType}/contexts/{contextId}/theme/logo](https://api-docs.dash.app/dash/openapi/theme/deletethemelogo.md): Delete the logo from the Theme ### Get the account theme - [GET /theme](https://api-docs.dash.app/dash/openapi/theme/getthemedeprecated.md): Get the account's Theme ### Update the account theme - [PATCH /theme](https://api-docs.dash.app/dash/openapi/theme/patchthemedeprecated.md): Update the Theme of the account. ### Upload a theme image - [POST /theme-image-uploads](https://api-docs.dash.app/dash/openapi/theme/postthemeimageuploaddeprecated.md): Post an upload object for one of the images in the account's Theme ### Delete the account theme favicon - [DELETE /theme/favicon](https://api-docs.dash.app/dash/openapi/theme/deletethemefavicondeprecated.md): Delete the favicon from the Theme ### Delete the account theme homepage image - [DELETE /theme/homepage-image](https://api-docs.dash.app/dash/openapi/theme/deletethemehomepageimagedeprecated.md): Delete the homepage image from the Theme ### Delete the account theme login image - [DELETE /theme/login-image](https://api-docs.dash.app/dash/openapi/theme/deletethemeloginimagedeprecated.md): Delete the login image from the Theme ### Delete the account theme logo - [DELETE /theme/logo](https://api-docs.dash.app/dash/openapi/theme/deletethemelogodeprecated.md): Delete the logo from the Theme ## AI Image Generations Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Generate an AI Image - [POST /ai-image-generations](https://api-docs.dash.app/dash/openapi/ai-image-generations/postaiimagegenerations.md): Generate an AI Image through an API for downloading or adding to Dash. ## Reference Image Uploads ### Upload a reference image - [POST /reference-image-uploads](https://api-docs.dash.app/dash/openapi/reference-image-uploads/postreferenceimageuploads.md): Generate an S3 bucket key and url for uploading a reference image to for generating an AI Image. ## Assets An [`Asset`](#tag/Assets) is the main resource in Dash. It consists of: * One or more [`AssetFile`](#operation/getAssetFiles) resources, detailing the versions of a file for an [`Asset`](#tag/Assets). Only the current [`AssetFile`](#operation/getAssetFiles) for an [`Asset`](#tag/Assets) is returned with the [`Asset`](#tag/Assets) resource. Use [GET Asset Files](#operation/getAssetFiles) to retrieve all [`AssetFile`](#operation/getAssetFiles) resources for an [`Asset`](#tag/Assets) * [`Asset.metadata`](#tag/Assets) which defines the assigned values for this [`Asset`](#tag/Assets) for [`Field`](#tag/Fields) resources * A number of fixed properties, e.g. `addedBy` the `User.id` of whoever added the [`Asset`](#tag/Assets) For the sake of performance any [`Field`](#tag/Fields) and [`FieldOption`](#tag/Field-Options) resources referenced in the [`Asset.metadata.values`](#tag/Assets) will need to be retrieved separately, if required. ### Searching Searching allows you to find [`Asset`](#tag/Assets) 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`](#tag/Assets) or certain fixed [`Asset`](#tag/Assets) properties. The fixed `KEYWORDS` field can be used for a general purpose search as it will search across all [`Asset.metadata.values`](#tag/Assets) and fixed [`Asset`](#tag/Assets) properties. For searches involving [`Field`](#tag/Fields) resources where [`Field.hasFixedOptions = true`](#tag/Fields) a search using either the [`FieldOption.id`](#tag/Field-Options) or [`FieldOption.name`](#tag/Field-Options) will match. Any [`Asset`](#tag/Assets) which is assigned an [`FieldOption.id`](#tag/Field-Options) value for a [`Field`](#tag/Fields) resource where [`Field.hierarchical = true`](#tag/Fields) implicitly has the values of any parent [`FieldOption`](#tag/Field-Options) resources too. As such, any search using the parents [`FieldOption.id`](#tag/Field-Options) or [`FieldOption.name`](#tag/Field-Options) will match the [`Asset`](#tag/Assets). e.g. Given the hierarchical [`FieldOption`](#tag/Field-Options) structure `Grandparent / Parent / Child`, an [`Asset`](#tag/Assets) assigned the [`FieldOption.id`](#tag/Field-Options) 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`](#tag/Assets) resources that the search [`User`](#tag/Users) 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'`](#tag/Assets).** > **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`](#operation/postAssetSearch) and a [`AssetScrollSearch`](#operation/postAssetScrollSearch).` ### Lifecycle Dash provides a simple lifecycle for [`Asset`](#tag/Assets) 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 * STAGED * PENDING_APPROVAL * LIVE * BINNED Depending on the [`Asset.lifecycleStatus.state`](#tag/Assets) value an [`Asset`](#tag/Assets) resources will only be visible to certain users. [`Asset`](#tag/Assets) resources begin in the `STAGED` state. While in the `STAGED` state [`Asset`](#tag/Assets) resources are only visible to the user who created the [`Asset`](#tag/Assets) and users where `User.isAdmin = true`. A [`User`](#tag/Users) with permission to create new [`Asset`](#tag/Assets) resources may not have the permission to move it to the `LIVE` state. While in the `PENDING_APPROVAL` state [`Asset`](#tag/Assets) resources are only visible to users where `User.isAdmin = true`. Once in the `LIVE` state [`Asset`](#tag/Assets) resources visibility is defined by `UserGroup` permissions (currently only configurable via the Dash frontend, not via the API) [`User`](#tag/Users) can change the state of [`Assets`](#tag/Assets) to `BINNED` when the [`Asset`](#tag/Assets) is `LIVE`. A `BINNED` [`Asset`](#tag/Assets) can be restored to `LIVE`. ### Asset Files An [`AssetFile`](#operation/getAssetFiles) describes a version of a file for an [`Asset`](#tag/Assets). 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`](#operation/getAssetFiles) The current [`AssetFile`](#operation/getAssetFiles) for an [`Asset`](#tag/Assets) is returned with the [`Asset`](#tag/Assets) resource. The [`AssetFile.id`](#operation/getAssetFiles) can be provided when creating an [`AssetDownload`](#tag/Asset-Downloads) to download a specific [`AssetFile`](#operation/getAssetFiles) for an [`Asset`](#tag/Assets). An [`AssetUpload`](#operation/postAssetUpload) resource is created when you want to upload a file to an [`Asset`](#tag/Assets). Upon completion a new [`AssetFile`](#operation/getAssetFiles) is created and will subsequently be returned in [`Asset.currentAssetFile`](#tag/Assets). You can use [GET Asset Files](#operation/getAssetFiles) to retrieve the all [`AssetFile`](#operation/getAssetFiles) resources for an [`Asset`](#tag/Assets). The [`AssetUpload`](#operation/postAssetUpload) 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`](#operation/postAssetUpload): ``` curl --request PUT '' \ --header 'Content-Length: ' \ --header 'Content-Type: ' \ --data '@' ``` The upload is then completed by sending a list of the eTags returned from each of these PUTs to [`AssetUploadComplete`](#operation/postAssetUploadCompletion) ### Get an asset. - [GET /assets/{id}](https://api-docs.dash.app/dash/openapi/assets/getasset.md): Get an Asset ### Delete an asset - [DELETE /assets/{id}](https://api-docs.dash.app/dash/openapi/assets/deleteasset.md): Delete an Asset. All associated AssetFile resources will also be deleted. ### Update an asset - [PATCH /assets/{id}](https://api-docs.dash.app/dash/openapi/assets/patchasset.md): Patch an Asset ### Create some new assets - [POST /assets-creations](https://api-docs.dash.app/dash/openapi/assets/postassetscreations.md): Create a specified number of new Assets without files. AssetUploads can be done separately. ### Create assets and upload files - [POST /asset-and-upload-batch-jobs](https://api-docs.dash.app/dash/openapi/assets/postassetanduploadbatchjob.md): 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. ### Get the status of creating assets and uploading files - [GET /asset-and-upload-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/assets/getassetanduploadbatchjob.md): Get the status and eventual result of an AssetAndUploadBatchJob ### Upload an asset file - [POST /asset-uploads](https://api-docs.dash.app/dash/openapi/assets/postassetupload.md): Create a new AssetUpload resource for an existing Asset. ### Upload files to assets - [POST /asset-upload-batch-jobs](https://api-docs.dash.app/dash/openapi/assets/postassetuploadbatchjob.md): 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 Assets they will still be in Asset.lifecycleStatus.state = 'STAGED'. To send them for approval or put them live see Asset Lifecycle. ### Get the status of uploading files - [GET /asset-upload-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/assets/getassetuploadbatchjob.md): Get the status and eventual result of an AssetUploadBatchJob ### Complete an asset file upload - [POST /asset-upload-completions](https://api-docs.dash.app/dash/openapi/assets/postassetuploadcompletion.md): 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. ### Get an asset's files - [GET /assets/{id}/files](https://api-docs.dash.app/dash/openapi/assets/getassetfiles.md): Get all of the AssetFile resources for the specified Asset. ### Delete an asset file - [DELETE /asset-files/{id}](https://api-docs.dash.app/dash/openapi/assets/deleteassetfile.md): 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.) ### Download assets - [POST /asset-download-batch-jobs](https://api-docs.dash.app/dash/openapi/assets/postassetdownloadbatchjob.md): 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: * Resized any image file, otherwise leave the file untransformed * Convert any image that supports transparency to PNG otherwise convert to JPG A PRESET transformationDescription is similar to a CUSTOM transformation except the transformationDescription has been predefined. These presets are currently only configurable via the Dash frontend, but can be found via a PresetTransformationSearch. ### Get the status of downloading assets - [GET /asset-download-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/assets/getassetdownloadbatchjob.md): Get the status and eventual result of an AssetDownloadBatchJob ### Search for assets - [POST /asset-searches](https://api-docs.dash.app/dash/openapi/assets/postassetsearch.md): 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. ### Scroll search for assets - [POST /asset-scroll-searches](https://api-docs.dash.app/dash/openapi/assets/postassetscrollsearch.md): 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. ### Continue an asset scroll search - [POST /asset-scroll-search-scrolls](https://api-docs.dash.app/dash/openapi/assets/postassetscrollsearchscroll.md): 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 ### Update assets' metadata - [POST /asset-metadata-edit-batch-jobs](https://api-docs.dash.app/dash/openapi/assets/postassetmetadataeditbatchjob.md): Edit the metadata of a set of Assets 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 Assets 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. ### Get the status of updating assets' metadata - [GET /asset-metadata-edit-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/assets/getassetmetadataeditbatchjob.md): Get the status of a Asset Metadata Edit Batch Job ### Get metadata suggestions for assets - [POST /asset-metadata-suggestion-batch-jobs](https://api-docs.dash.app/dash/openapi/assets/postassetmetadatasuggestionbatchjob.md): Get metadata suggestions for a set of Assets by the specified assets selector. Use the BY_IDS selector to get suggestions for a specific list of Asset.ids, or the BY_CRITERION selector to get suggestions for a search criterion, e.g. all Assets in a specific folder. See AssetSearch for more detail on the available criterion. ### Create rejected asset metadata suggestions - [POST /rejected-asset-metadata-suggestion-batches](https://api-docs.dash.app/dash/openapi/assets/postrejectedassetmetadatasuggestionbatches.md): Record the fact that some asset metadata suggestions have been rejected, and should therefore not be suggested again for the given asset. ### Get the status of metadata suggestions for assets - [GET /asset-metadata-suggestion-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/assets/getassetmetadatasuggestionbatchjob.md): Get the status of a Asset Suggestion Edit Batch Job ### Update assets' lifecycle stage - [POST /asset-lifecycle-transition-batch-jobs](https://api-docs.dash.app/dash/openapi/assets/postassetlifecycletransitionbatchjob.md): 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. ### Get the status of updating assets' lifecycle stage - [GET /asset-lifecycle-transition-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/assets/getassetlifecycletransitionbatchjob.md): Get the status of an AssetLifecycleTransitionBatchJob ### Delete assets - [POST /asset-deletion-batch-jobs](https://api-docs.dash.app/dash/openapi/assets/postassetdeletionbatchjob.md): Delete a set of Asset by the specified assets selector ## Asset Comments Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get an asset's comments - [GET /assets/{id}/comments](https://api-docs.dash.app/dash/openapi/asset-comments/getassetcomments.md): Get all of the Comment resources for the specified Asset. ### Create a comment on an asset - [POST /assets/{id}/comments](https://api-docs.dash.app/dash/openapi/asset-comments/postassetcomments.md): Create a new Comment for the specified Asset. ### Update an asset comment - [PATCH /comments/{id}](https://api-docs.dash.app/dash/openapi/asset-comments/patchcomment.md): Patch a Comment ### Delete an asset comment - [DELETE /comments/{id}](https://api-docs.dash.app/dash/openapi/asset-comments/deletecomment.md): Delete a Comment resource. ## Asset Deduplication Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Deduplicate all assets - [POST /asset-deduplication-batch-jobs](https://api-docs.dash.app/dash/openapi/asset-deduplication/postassetdeduplicationbatchjob.md): 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. ## Asset Embeddable Links Embeddable Links provide a way to get a public (although unguessable) link to an optionally transformed [`AssetFile`](#operation/getAssetFiles) of an [`Asset`](#tag/Assets). ### Update an asset embeddable link - [PATCH /embeddable-links/{id}](https://api-docs.dash.app/dash/openapi/asset-embeddable-links/embeddablelink.md): 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. ### Create asset embeddable links - [POST /embeddable-link-batch-jobs](https://api-docs.dash.app/dash/openapi/asset-embeddable-links/postassetembeddablelinkbatchjob.md): 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. ### Get the status of creating asset embeddable links - [GET /embeddable-link-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/asset-embeddable-links/getassetembeddablelinkbatchjob.md): Get the status and eventual result of an AssetEmbeddableLinkBatchJob ### Discard creating asset embeddable links - [DELETE /embeddable-link-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/asset-embeddable-links/deleteassetembeddablelinkbatchjob.md): Stops an AssetEmbeddableLinkBatchJob and deletes it ### Search for asset embeddable links - [POST /embeddable-link-searches](https://api-docs.dash.app/dash/openapi/asset-embeddable-links/postembeddablelinksearches.md): Create a new AssetEmbeddableLinkSearch. The criterion and sort currently support search by ASSET_ID field only. ## Asset Metadata Export Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Export assets' metadata - [POST /asset-metadata-export-batch-jobs](https://api-docs.dash.app/dash/openapi/asset-metadata-export/postmetadataexportbatchjob.md): Export the metadata of all Assets to a CSV file ### Get the status of exporting assets' metadata - [GET /asset-metadata-export-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/asset-metadata-export/getmetadataexportbatchjob.md): Get the status and eventual result of a MetadataExportJob ### Update the status of exporting assets' metadata - [PATCH /asset-metadata-export-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/asset-metadata-export/patchmetadataexportbatchjob.md): Update a MetadataExportJob ### Discard exporting assets' metadata - [DELETE /asset-metadata-export-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/asset-metadata-export/deletemetadataexportbatchjob.md): Stops a MetadataExportJob and deletes it ## Asset Saved Crop Area Summaries An [`Asset Saved Crop Area Summary`](#tag/Asset-Saved-Crop-Area-Summaries) resource is a saved crop area summary for a given [`AssetFile`](#operation/getAssetFiles) of an [`Asset`](#tag/Assets). ### Get an asset's saved crop area summaries - [GET /assets/{id}/saved-crop-area-summaries](https://api-docs.dash.app/dash/openapi/asset-saved-crop-area-summaries/getsavedcropareasummaries.md): Get all of the SavedCropAreaSummaries resources for the specified Asset. ### Search for asset saved crop area summaries - [POST /asset-saved-crop-area-summary-searches](https://api-docs.dash.app/dash/openapi/asset-saved-crop-area-summaries/postassetsavedcropareasummarysearch.md): Create a new Asset Saved Crop Area Summary Search ## Asset Saved Crop Areas An [`Asset Saved Crop Area`](#tag/Asset-Saved-Crop-Areas) resource is a saved crop area for a given [`AssetFile`](#operation/getAssetFiles) of an [`Asset`](#tag/Assets). ### Create a saved crop area for an asset - [POST /assets/{id}/saved-crop-areas](https://api-docs.dash.app/dash/openapi/asset-saved-crop-areas/postsavedcroparea.md): Create a SavedCropArea for the specified Asset. ### Get a saved crop area - [GET /asset-saved-crop-areas/{id}](https://api-docs.dash.app/dash/openapi/asset-saved-crop-areas/getsavedcroparea.md): Get a SavedCropArea resource. ### Update a saved crop area - [PATCH /asset-saved-crop-areas/{id}](https://api-docs.dash.app/dash/openapi/asset-saved-crop-areas/patchsavedcroparea.md): Update a SavedCropArea resource. Only the provided fields will be updated ### Delete a Saved Crop Area - [DELETE /asset-saved-crop-areas/{id}](https://api-docs.dash.app/dash/openapi/asset-saved-crop-areas/deletesavedcroparea.md): Delete a SavedCropArea resource. ## Asset Shares An [`AssetShare`](#tag/Asset-Shares) resource is a set of [`Assets`](#tag/Assets) which has been publicly shared. This can be for a limited period of time or forever. The assets shared can be view only or can also be downloaded. ### Create an asset share - [POST /asset-shares](https://api-docs.dash.app/dash/openapi/asset-shares/createassetshare.md): Create an AssetShare. ### Get an asset share - [GET /asset-shares/{id}](https://api-docs.dash.app/dash/openapi/asset-shares/getassetshare.md): Get an AssetShare This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ### Update an asset share - [PATCH /asset-shares/{id}](https://api-docs.dash.app/dash/openapi/asset-shares/patchassetshare.md): Patch an AssetShare ### Delete an asset share - [DELETE /asset-shares/{id}](https://api-docs.dash.app/dash/openapi/asset-shares/deleteassetshare.md): Delete an AssetShare resource. ### Search for asset shares - [POST /asset-share-searches](https://api-docs.dash.app/dash/openapi/asset-shares/postassetsharesearch.md): Create a new AssetShareSearch ## Asset Share Access Tokens ### Get an asset share access token - [GET /asset-shares/{id}/access-token](https://api-docs.dash.app/dash/openapi/asset-share-access-tokens/getassetshareaccesstoken.md): Get an access token for viewing data which has been shared as part of the AssetShare. Use this access token in the same way as the normal signed-in user token to make requests with the permissions of the share applied. This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ## Asset Share Emails ### Email a link to an asset share - [POST /asset-share-emails](https://api-docs.dash.app/dash/openapi/asset-share-emails/createassetshareemail.md): Send an AssetShare via email to a specified email address ## Collections A [`Collection`](#tag/Collections) is a user defined set of [`Asset`](#tag/Assets) resources. The [`Asset`](#tag/Assets) resources in a [`Collection`](#tag/Collections) are not returned with the [`Collection`](#tag/Collections) resource. To get the [`Asset`](#tag/Assets) resources you must create an [Asset Search](#operation/postAssetSearch) and use the [`Collection.id`](#tag/Collections) as the value in a `COLLECTIONS` : `FIELD_EQUALS` criterion. Searching allows you to find [`Collection`](#tag/Collections) resources in your Dash matching specific criteria. A list of sorts can also be provided to control the order in the which the results are returned. ### Create a collection - [POST /collections](https://api-docs.dash.app/dash/openapi/collections/postcollection.md): Create a new Collection. ### Update a collection - [PATCH /collections/{id}](https://api-docs.dash.app/dash/openapi/collections/patchcollection.md): Patch a Collection ### Search for collections - [POST /collection-searches](https://api-docs.dash.app/dash/openapi/collections/postcollectionsearch.md): Create a new CollectionSearch The most commmon use of an CollectionSearch is to retrieve all the Collection resources associated with a User ## Collection Shares A [`CollectionShare`](#tag/Collection-Shares) is a [`Collection`](#tag/Collection) that has been made accessible to anyone with the `id` or `slug` of the [`Collection`](#tag/Collection). Searching allows you to find [`CollectionShare`](#tag/Collection-Shares) resources in your Dash matching specific criteria. A list of sorts can also be provided to control the order in the which the results are returned. ### Create a collection share - [POST /collection-shares](https://api-docs.dash.app/dash/openapi/collection-shares/postcollectionshare.md): Create a new CollectionShare, making a Collection available to anyone who has one of the CollectionShare.slugs. ### Get a collection share - [GET /collection-shares/{id}](https://api-docs.dash.app/dash/openapi/collection-shares/getcollectionshare.md): Get a CollectionShare This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ### Update a collection share - [PATCH /collection-shares/{id}](https://api-docs.dash.app/dash/openapi/collection-shares/patchcollectionshare.md): Patch a CollectionShare ### Delete a collection share - [DELETE /collection-shares/{id}](https://api-docs.dash.app/dash/openapi/collection-shares/deletecollectionshare.md): Delete a CollectionShare ### Search for collection shares - [POST /collection-share-searches](https://api-docs.dash.app/dash/openapi/collection-shares/postcollectionsharesearch.md): Create a new CollectionShareSearch ### Search for publicly available collection shares - [POST /publicly-available-collection-share-searches](https://api-docs.dash.app/dash/openapi/collection-shares/postpubliclyavailablecollectionsharesearch.md): Create a new CollectionShareSearch This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ## Cloud Connections Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Create a cloud connection - [POST /cloud-connections](https://api-docs.dash.app/dash/openapi/cloud-connections/postcloudconnections.md): Create a new Cloud Connections resource to connect to a cloud storage providers and import assets into Dash ### Get a cloud connection - [GET /cloud-connections/{id}](https://api-docs.dash.app/dash/openapi/cloud-connections/getcloudconnection.md): Get a CloudConnection resource to connect which connects to Cloud Storage Providers in order to import assets into Dash ### Delete a cloud connection - [DELETE /cloud-connections/{id}](https://api-docs.dash.app/dash/openapi/cloud-connections/deletecloudconnection.md): Delete a Cloud Connections resource ### Get the current user's cloud connections - [GET /current-user-cloud-connections](https://api-docs.dash.app/dash/openapi/cloud-connections/getcurrentusercloudconnections.md): Get all the CloudConnection resources for the current user ### Proxy for OAuth callback - [GET /oauth-callback](https://api-docs.dash.app/dash/openapi/cloud-connections/getoauthcallback.md): > This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ## Cloud Import Jobs Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Import cloud objects - [POST /cloud-import-jobs](https://api-docs.dash.app/dash/openapi/cloud-import-jobs/postcloudimportjobs.md): Create a new Cloud Import Job resource to import assets into Dash ### Get the status of a cloud object import - [GET /cloud-import-jobs/{id}](https://api-docs.dash.app/dash/openapi/cloud-import-jobs/getcloudimportjob.md): Get the status and eventual result of a CloudImportJob ### Update the status of a cloud object import - [PATCH /cloud-import-jobs/{id}](https://api-docs.dash.app/dash/openapi/cloud-import-jobs/patchcloudimportjob.md): Update a CloudImportJob. Primarily used to stop a job. ### Delete a cloud object import - [DELETE /cloud-import-jobs/{id}](https://api-docs.dash.app/dash/openapi/cloud-import-jobs/deletecloudimportjob.md): Deletes a CloudImportJob ### Get the current user's cloud imports - [GET /current-user-cloud-import-jobs](https://api-docs.dash.app/dash/openapi/cloud-import-jobs/getcurrentusercloudimportjobs.md): Get all CloudImportJob resources for the current user ## Cloud Objects Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get a cloud object - [GET /cloud-connections/{id}/cloud-objects/{cloudObjectId}](https://api-docs.dash.app/dash/openapi/cloud-objects/getcloudobject.md): Get a CloudObject ### Search for cloud objects - [POST /cloud-object-searches](https://api-docs.dash.app/dash/openapi/cloud-objects/postcloudobjectsearches.md) ## Subdomains A [`SubdomainAvailabilityCheck`](#operation/postSubdomainAvailabilityCheck) is used to check whether a Dash subdomain is in use or not. ### Check subdomain availability - [POST /subdomain-availability-check](https://api-docs.dash.app/dash/openapi/subdomains/postsubdomainavailabilitycheck.md): > This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ## Ping ### Check Dash API availability - [GET /dash-ping](https://api-docs.dash.app/dash/openapi/ping/getping.md): > This endpoint is unauthenticated. Do not send a Bearer Token in the Authorization Header ## Asset Download Events An [`Asset Download Event Search`](#operation/postAssetDownloadEventSearch) 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`](#tag/Portals) and [`Asset`](#tag/Assets) 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 - Search across all downloads and count the number of downloads for each asset - Search downloads for a specific user and count the number of downloads per month Note, an [`Asset Download Event Search`](#operation/postAssetDownloadEventSearch) will only allow you to page to **10,000** but values returned in any aggregations and the `totalResults` property will be correct. ### Search for asset download events - [POST /asset-download-event-searches](https://api-docs.dash.app/dash/openapi/asset-download-events/postassetdownloadeventsearch.md): Create a new Asset Download Event Search ## Fields [`Field`](#tag/Fields) resources define the custom metadata schema for [`Asset`](#tag/Assets) resources in your Dash account. Every [`Asset`](#tag/Assets) in your Dash account can be assigned a value or values for each [`Field`](#tag/Fields) you define. The type and structure of the data stored against the [`Asset`](#tag/Assets) for each [`Field`](#tag/Fields) is described by a series of properties specified on the [`Field`](#tag/Fields). ### Get all fields - [GET /fields](https://api-docs.dash.app/dash/openapi/fields/getfields.md): Get all Field resources ordered by Field.name. ### Create a field - [POST /fields](https://api-docs.dash.app/dash/openapi/fields/postfield.md): Create a Field resource. ### Get a field - [GET /fields/{id}](https://api-docs.dash.app/dash/openapi/fields/getfield.md): Get a Field resource. When Field.hasFixedOptions = true the FieldOption resources for this Field can be retrieved via an FieldOptionSearch ### Update a field - [PATCH /fields/{id}](https://api-docs.dash.app/dash/openapi/fields/patchfield.md): Update a Field resource. ### Delete a field - [DELETE /fields/{id}](https://api-docs.dash.app/dash/openapi/fields/deletefield.md): Delete a Field resource. ## Field Options [`FieldOption`](#tag/Field-Options) resources define the set of valid choices for a [`Field`](#tag/Fields) when [`Field.hasFixedOptions = true`](#tag/Fields). An [`FieldOption`](#tag/Field-Options) has human-readable [`FieldOption.value`](#tag/Field-Options) and an [`FieldOption.position`](#tag/Field-Options) which determines the order in which it appears in relation to the other [`FieldOption`](#tag/Field-Options) resources for a [`Field`](#tag/Fields). If [`Field.hierarchical = true`](#tag/Fields) then [`FieldOption.parent`](#tag/Field-Options) is the [`FieldOption`](#tag/Field-Options) which is the parent node of the [`FieldOption`](#tag/Field-Options) in the tree. [`FieldOption.position`](#tag/Field-Options) then determines the order in which the option appears in relation to the other options with the same [`FieldOption.parent`](#tag/Field-Options). The [`FieldOption`](#tag/Field-Options) resource intentionally does not include the list of child [`FieldOption`](#tag/Field-Options) resources. This is to prevent costly loading of large [`FieldOption`](#tag/Field-Options) tree structures. [`FieldOption.leaf`](#tag/Field-Options) and [`FieldOption.numberOfChildren`](#tag/Field-Options) 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](#operation/getFieldOption) and [POST Field Option Searches](#operation/postFieldOptionSearch) resources for retrieval. e.g. Doing a [GET Field Option](#operation/getFieldOption) with an [`FieldOption.id`](#tag/Field-Options) value found in [`Asset.metadata.values`](#tag/Assets) will give the complete branch of the tree necessary in the context of the viewing that [`Asset`](#tag/Assets) via the [`FieldOption.parent`](#tag/Field-Options) property. For traversing down an [`FieldOption`](#tag/Field-Options) tree [POST Field Option Searches](#operation/postFieldOptionSearch) 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`](#tag/Field-Options) resources in your Dash matching specific criteria Criteria can be constructed based on direct comparison or pattern matching of a set of fixed [`FieldOption`](#tag/Field-Options) 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 field option - [POST /field-options](https://api-docs.dash.app/dash/openapi/field-options/postfieldoption.md): Create a new FieldOption resource adding it to the set of valid choices for an Field where Field.hasFixedOptions = true. ### Get a field option - [GET /field-options/{id}](https://api-docs.dash.app/dash/openapi/field-options/getfieldoption.md): Get an FieldOption resource for an Field where Field.hasFixedOptions = true. ### Delete a field option - [DELETE /field-options/{id}](https://api-docs.dash.app/dash/openapi/field-options/deletefieldoption.md): 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. ### Create field options - [POST /field-option-batches](https://api-docs.dash.app/dash/openapi/field-options/postfieldoptionbatches.md): Create new FieldOption resources adding them to the set of valid choices for an Field where Field.hasFixedOptions = true. ### Search for field options - [POST /field-option-searches](https://api-docs.dash.app/dash/openapi/field-options/postfieldoptionsearch.md): 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. ## Field Option Images Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get field option images - [POST /field-option-images](https://api-docs.dash.app/dash/openapi/field-option-images/postfieldoptionimagebatches.md): Get Field Option Images in batches ### Delete a field option image - [DELETE /field-option-images/{id}](https://api-docs.dash.app/dash/openapi/field-option-images/deletefieldoptionimage.md): Delete a field Option Image ### Upload a field option image - [POST /field-option-image-uploads](https://api-docs.dash.app/dash/openapi/field-option-images/postuploadfieldoptionimage.md) ## Field Views [`FieldView`](#tag/Field-Views)s provide an ordered view of a subset of [`Field`](#tag/Fields)s, which can be configured by admins. This can be used to decide which [`Field`](#tag/Fields)s to show alongside [`Asset`](#tag]/Assets)s in different contexts. ### Get all field views - [GET /field-views](https://api-docs.dash.app/dash/openapi/field-views/getfieldviews.md): Get all FieldViews. ## Guest Uploads Guest Uploads allow guests to upload assets to a specific Folder. ### Create a guest upload - [POST /guest-uploads](https://api-docs.dash.app/dash/openapi/guest-uploads/postguestupload.md): Create a new GuestUpload URL, to share with a guest to upload files to a specified folder ### Get a guest upload - [GET /guest-uploads/{id}](https://api-docs.dash.app/dash/openapi/guest-uploads/getguestupload.md): Get a GuestUpload ### Update a guest upload - [PATCH /guest-uploads/{id}](https://api-docs.dash.app/dash/openapi/guest-uploads/patchguestupload.md): Patch a GuestUpload ### Delete a GuestUpload - [DELETE /guest-uploads/{id}](https://api-docs.dash.app/dash/openapi/guest-uploads/deleteguestupload.md): Delete a GuestUpload. ### Search for guest uploads - [POST /guest-upload-searches](https://api-docs.dash.app/dash/openapi/guest-uploads/postguestuploadsearch.md): Create a new GuestUploadSearch ## Guest Upload Access Tokens ### Create a guest upload access token - [POST /guest-upload-access-tokens](https://api-docs.dash.app/dash/openapi/guest-upload-access-tokens/postguestuploadaccesstoken.md): 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 ## Guest Upload Emails ### Email a link to a guest upload - [POST /guest-upload-emails](https://api-docs.dash.app/dash/openapi/guest-upload-emails/postguestuploademail.md): Send a GuestUpload URL via email to a specified email address ## Publicly Available Guest Upload Data ### Get public guest upload data - [GET /subdomains/{subdomain}/publicly-available-guest-upload-data/{slug}](https://api-docs.dash.app/dash/openapi/publicly-available-guest-upload-data/getpubliclyavailableguestuploaddata.md): Get the publicly available data for a Guest Upload by subdomain and slug ## Corebook At present the Corebook integration with Dash is configured entirely within Corebook. However, Dash allows admins to set their [`CorebookSettings.corebookUrl`](#operation/putCorebookSettings), which will then show up as a "Brand" link to all users. ### Get the account Corebook settings - [GET /corebook-settings](https://api-docs.dash.app/dash/openapi/corebook/getcorebooksettings.md) ### Update the account Corebook settings - [PUT /corebook-settings](https://api-docs.dash.app/dash/openapi/corebook/putcorebooksettings.md) ## Custom ### Get the account custom integration settings - [GET /custom-integration-settings](https://api-docs.dash.app/dash/openapi/custom/getcustomintegrationsettings.md) ### Create or update the account custom integration settings - [PUT /custom-integration-settings](https://api-docs.dash.app/dash/openapi/custom/putcustomintegrationsettings.md) ### Update the account custom integration settings - [PATCH /custom-integration-settings](https://api-docs.dash.app/dash/openapi/custom/patchcustomintegrationsettings.md) ### Delete the account custom integration settings - [DELETE /custom-integration-settings](https://api-docs.dash.app/dash/openapi/custom/deletecustomintegrationsettings.md) ## External App ### Create an external app user - [POST /external-app-users](https://api-docs.dash.app/dash/openapi/external-app/postexternalappuser.md): Associate an external app user ID with the currently authenticated Dash user ### Create an external app SSO token - [POST /external-app-sso-tokens](https://api-docs.dash.app/dash/openapi/external-app/postexternalappssotokens.md): Create external app SSO token for the current user ### Get all external app accounts - [GET /external-app-accounts](https://api-docs.dash.app/dash/openapi/external-app/getexternalappaccounts.md): Get all ExternalAppAccount resources ordered by ExternalAppAccount.externalAppAccountId ### Create an external app account - [POST /external-app-accounts](https://api-docs.dash.app/dash/openapi/external-app/postexternalappaccount.md): Associate an external app account with the account of the currently authenticated Dash user ## Shopify Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the status of exporting to Shopify - [GET /shopify-export-jobs/{id}](https://api-docs.dash.app/dash/openapi/shopify/getshopifyexportjob.md): Get the status and eventual result of a ShopifyExportJob ### Update the status of exporting to Shopify - [PATCH /shopify-export-jobs/{id}](https://api-docs.dash.app/dash/openapi/shopify/patchshopifyexportjob.md): Update a ShopifyExportJob. Primarily used to stop a job. ### Delete a Shopify export - [DELETE /shopify-export-jobs/{id}](https://api-docs.dash.app/dash/openapi/shopify/deleteshopifyexportjob.md): Deletes a ShopifyExportJob ### Export images to products in Shopify - [POST /shopify-export-jobs](https://api-docs.dash.app/dash/openapi/shopify/postshopifyexportjob.md): Create a Shopify export job to upload multiple assets from Dash into your Shopify account. The uploaded assets can be associated with products and their position on the product listing can be specified. Existing Shopify images can also be reordered. ### Get the current user's shopify export jobs - [GET /current-user-shopify-export-jobs](https://api-docs.dash.app/dash/openapi/shopify/getcurrentusershopifyexportjobs.md): Get the status and eventual result of all ShopifyExportJobs for the current user ### Send product images to Shopify - [POST /create-shopify-product-image-batch-jobs](https://api-docs.dash.app/dash/openapi/shopify/postcreateshopifyproductimagebatchjob.md): See AssetDownloadBatchJob for an idea of how to use this endpoint ### Send images to Shopify - [POST /create-shopify-image-batch-jobs](https://api-docs.dash.app/dash/openapi/shopify/postcreateshopifyimagebatchjob.md): See AssetDownloadBatchJob for an idea of how to use this endpoint ### Get a Shopify connection - [GET /shopify-connections/{id}](https://api-docs.dash.app/dash/openapi/shopify/getshopifyconnection.md): Get details about a particular connection to Shopify ### Callback required to install Dash with Shopify - [GET /shopify-callback](https://api-docs.dash.app/dash/openapi/shopify/getshopifycallback.md): This is quite an internal endpoint and is only really in the API due to needing to be on the dash.app domain. ### Search for shopify products - [POST /shopify-product-searches](https://api-docs.dash.app/dash/openapi/shopify/postproductsearches.md): Search for products from a given Shopify store ## WordPress ### Get the account WordPress settings - [GET /wordpress-settings](https://api-docs.dash.app/dash/openapi/wordpress/getwordpresssettings.md) ### Create or update the account WordPress settings - [PUT /wordpress-settings](https://api-docs.dash.app/dash/openapi/wordpress/putwordpresssettings.md) ### Update the account WordPress settings - [PATCH /wordpress-settings](https://api-docs.dash.app/dash/openapi/wordpress/patchwordpresssettings.md) ### Delete the account WordPress settings - [DELETE /wordpress-settings](https://api-docs.dash.app/dash/openapi/wordpress/deletewordpresssettings.md) ## Portals Portals allow a public (or passcode protected) view on [`Assets`](#tag/Assets) within a set of folders. ### Create a portal - [POST /portals](https://api-docs.dash.app/dash/openapi/portals/postportal.md): Create a new Portal, allowing public access to specified folders to anyone who has one of the Portal.slugs. ### Get a portal - [GET /portals/{id}](https://api-docs.dash.app/dash/openapi/portals/getportal.md): Get a Portal ### Update a portal - [PATCH /portals/{id}](https://api-docs.dash.app/dash/openapi/portals/patchportal.md): Patch a Portal ### Delete a portal - [DELETE /portals/{id}](https://api-docs.dash.app/dash/openapi/portals/deleteportal.md): Delete a Portal. ### Search for portals - [POST /portal-searches](https://api-docs.dash.app/dash/openapi/portals/postportalsearch.md): Create a new PortalSearch ## Portal Access Tokens ### Get a portal access token - [GET /portals/{id}/access-token](https://api-docs.dash.app/dash/openapi/portal-access-tokens/getportalaccesstoken.md): 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 ". ## Portal Emails ### Email a link to a portal - [POST /portal-emails](https://api-docs.dash.app/dash/openapi/portal-emails/createportal.md): Send a Portal via email to a specified email address ## Publicly Available Portal Datas ### Get public portal data - [GET /subdomains/{subdomain}/publicly-available-portal-datas/{slug}](https://api-docs.dash.app/dash/openapi/publicly-available-portal-datas/getpubliclyavailableportaldata.md): Get the publicly available data for a portal by subdomain and slug ## Saved Searches 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`](#tag/Saved-Searches) resources in your Dash matching specific criteria. ### Create a saved search - [POST /saved-searches](https://api-docs.dash.app/dash/openapi/saved-searches/postsavedsearch.md): Create a new SavedSearch resource. ### Get a saved search - [GET /saved-searches/{id}](https://api-docs.dash.app/dash/openapi/saved-searches/getsavedsearch.md): Get a SavedSearch resource. ### Update a saved search - [PATCH /saved-searches/{id}](https://api-docs.dash.app/dash/openapi/saved-searches/patchsavedsearch.md): Update a SavedSearch resource. Only the provided fields will be updated ### Search for saved searches - [POST /saved-search-searches](https://api-docs.dash.app/dash/openapi/saved-searches/postsavedsearchsearch.md): Create a new SavedSearchSearch The only use of a SavedSearchSearch as of now is to retrieve all the SavedSearch resources created by a User ## Groups [`Groups`](#tag/Groups) are used to specify the permissions of [`Users`](#tag/Users) in Dash. ### Get all groups - [GET /groups](https://api-docs.dash.app/dash/openapi/groups/getgroups.md): Get all of the Groups in the current Account ### Create a group - [POST /groups](https://api-docs.dash.app/dash/openapi/groups/postgroup.md): Create a Group ### Get a group - [GET /groups/{id}](https://api-docs.dash.app/dash/openapi/groups/getgroup.md): Get a Group ### Update a group - [PATCH /groups/{id}](https://api-docs.dash.app/dash/openapi/groups/patchgroup.md): Update a Group ### Delete a group - [DELETE /groups/{id}](https://api-docs.dash.app/dash/openapi/groups/deletegroup.md): Delete a Group ## Staff Members Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Delete a staff member - [DELETE /staff-members/{id}](https://api-docs.dash.app/dash/openapi/staff-members/deletestaffmember.md): Delete Staff Member with the specified ID. ### Get all staff members - [GET /staff-members](https://api-docs.dash.app/dash/openapi/staff-members/getstaffmembers.md): Get all Staff Members. ### Create a staff member - [POST /staff-members](https://api-docs.dash.app/dash/openapi/staff-members/poststaffmember.md): Create a new Staff Member. Staff Members can log in to any Dash account. ## Users The [`User`](#tag/Users) resource contains information about a user in Dash such as their email address and their name (if provided). ### Create a user - [POST /users](https://api-docs.dash.app/dash/openapi/users/postuser.md): Create a new User in the current account ### Get a user - [GET /users/{id}](https://api-docs.dash.app/dash/openapi/users/getuser.md): Get a User ### Update a user - [PATCH /users/{id}](https://api-docs.dash.app/dash/openapi/users/patchuser.md): Patch a User ### Delete a User - [DELETE /users/{id}](https://api-docs.dash.app/dash/openapi/users/deleteuser.md): Delete a User and delete all AssetShares belonging to that user ### Create users - [POST /user-batch-jobs](https://api-docs.dash.app/dash/openapi/users/postuserbatchjob.md): Create new User resources in the current account ### Get the status of creating users - [GET /user-batch-jobs/{id}](https://api-docs.dash.app/dash/openapi/users/getuserbatchjob.md): Get the status and eventual result of an UserBatchJob ### Search for users - [POST /user-searches](https://api-docs.dash.app/dash/openapi/users/postusersearch.md): Create a new UserSearch ### Delete a user - [POST /user-deletes](https://api-docs.dash.app/dash/openapi/users/postdeleteuser.md): Delete a User with the option to delete all AssetShares belonging to that user ### Get the current user - [GET /current-user](https://api-docs.dash.app/dash/openapi/users/getcurrentuser.md): Get the currently authenticated User ### Check the creation status of the current user - [GET /current-user-creation-status](https://api-docs.dash.app/dash/openapi/users/getcurrentusercreationstatus.md): Get the currently authenticated User's creation status (used for detecting if a temporary signup token has been used) ### Create a platform user - [POST /platform/users](https://api-docs.dash.app/dash/openapi/users/postplatformuser.md): Create a new Platform User ### Patch a platform user - [PATCH /platform/users/{id}](https://api-docs.dash.app/dash/openapi/users/patchplatformuser.md): Update a Platform User ### Get accounts which the current user has a seat in - [POST /platform/current-user-account-searches](https://api-docs.dash.app/dash/openapi/users/postplatformcurrentuseraccountssearch.md): Get accounts which the currently authenticated Platform User's has a seat in ### Request a password reset - [POST /platform/user-forgotten-passwords](https://api-docs.dash.app/dash/openapi/users/postplatformuserforgottenpassword.md): Request a Platform User password reset ### Reset a password - [POST /platform/user-reset-passwords](https://api-docs.dash.app/dash/openapi/users/postplatformuserresetpassword.md): Reset a Platform User password ### Get a sign-up token - [POST /platform/user-sign-up-tokens](https://api-docs.dash.app/dash/openapi/users/postplatformusersignuptoken.md): Get an authentication token needed to create a Platform User ### Request verification code for sign-up - [POST /platform/user-verifications](https://api-docs.dash.app/dash/openapi/users/postplatformuserverification.md): Request verification code needed to retrieve authentication token to create a Platform User ## User Referrer Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the current user's referrer code - [GET /current-user-referrer](https://api-docs.dash.app/dash/openapi/user-referrer/getcurrentuserreferrer.md): Get the currently authenticated User's referrer code ## User Preferences Coming soon; [contact us](mailto:help@dash.app) if you need access to this API endpoint. ### Get the current user's preferences - [GET /current-user-preferences](https://api-docs.dash.app/dash/openapi/user-preferences/getcurrentuserpreferences.md): Get the currently authenticated User's preferences ### Update the current user's preferences - [PATCH /current-user-preferences](https://api-docs.dash.app/dash/openapi/user-preferences/patchcurrentuserpreferences.md): Update the currently authenticated User's preferences