Skip to content

API Endpoint Reference (1.5)

Tenovos has introduced version 1.5 to provide non-breaking improvements over previous versions.

Key Changes:

  • Authentication Standards now include OAuth2 code flow.
  • Client ID is no longer required to be passed when requesting an Authorization token using our Standard Auth from v1.4
  • New endpoints have been added and will continue to be added until v2 is generally available to all customers.
    • Adaptive Template endpoints
    • A new Get Asset endpoint with a simplified Response
    • A new Create Asset endpoint with simplified payloads for the Request and Response
    • A new Update Asset endpoint with simplified payloads for the Request and Response
  • We've made some performance improvements to most endpoints
Download OpenAPI description
Languages
Servers
https://api.uat.tenovos.io/v1
https://api.tenovos.io/v1

ACTIONS

Invoke the Action API to retrieve information about invoked Actions.

Operations

ADAPTIVE TEMPLATES

Invoke the API to retrieve information about invoked Actions.

Operations

ASSETS

Invoke the Asset API to create, retrieve, manipulate, and share Assets. This API also provides operations to manage Asset relationships and download Asset content.

Operations

AUTHENTICATION

Invoke the Authentication API to generate, refresh, and revoke access tokens. An access token is required to perform any authorized API operation.

Operations

CDN (Coming Soon!)

Tenovos Content Delivery Network (CDN) - Coming Soon!

Tenovos CDN: Pull Zone Overview

Tenovos CDN provides global content acceleration and optimization through a pull zone architecture, ensuring that your assets are delivered to end users with maximum speed, reliability, and efficiency. A Content Delivery Network (CDN) works by caching static content—such as images, videos, and other media—on servers distributed across the globe. When an asset is requested, the CDN serves it from the nearest edge location, reducing load times and offloading traffic from the origin server, which in this case is Tenovos DAM.

A pull zone is the core mechanism that powers this system. It automatically fetches content from the origin the first time it is requested, then caches it at the edge. Subsequent requests are served directly from the CDN cache, improving response times and reducing bandwidth consumption.

Through the Tenovos CDN API, you can create, update, and manage pull zones programmatically. Pull zones support advanced features such as global edge caching, cache purging, bandwidth controls, and real-time performance statistics like cache hit rate and geographic request distribution. Optional optimization settings allow you to enhance performance further by enabling image compression, WebP and AVIF support, and content minification.

With just a few API calls, you can fully integrate high-performance content delivery into your Tenovos workflows—no complex infrastructure required.

Operations

COLLECTIONS

Invoke the Collection API to create, retrieve, edit, and delete Collections. Collections are used to group and catalog related Assets for quick access and consumption. Collections can be configured as:

  • private: Visible only to the user who created the Collection.
  • secured: Visible to users with.

When retrieving the Assets within a Collection, the requesting user will only see the Assets that the user has access to view. For example, a librarian may see all Assets within a Collection, but a general consumer user may only see a portion of those Assets, due to limited security access.

Operations

METADATA

Invoke the Metadata API to retrieve Metadata Template to be applied to Assets during Asset creation. A Metadata Template defines a set of Metadata Attributes of varying types, including Text, Date, Controlled Vocabulary, Tabular, and Cascading Attributes. When a Metadata Template is assigned to a new Asset, the corresponding Metadata Attributes will be available for population on the Asset.

Operations

Scan Asset Search Results

Request

Provides the ability to scan a search result set of assets using a cursor to fetch the next set of results pages on the limit (page size) passed.

Security
ApiKeyAuth or BasicAuth
Headers
X-API-Keystringrequired

Customer-specific API key required to invoke API.

Authorizationstringrequired

Provided by Authentication Token creation operation

Content-Typestringrequired
Value"application/json"
Bodyapplication/jsonrequired

The Request Body must be a JSON object

limitinteger

Number of results that will be returned for each page

Example: 100
searchTermArray of strings

List of search terms

Example: ["*"]
includeDeletedboolean

Flag to denote whether or not to include Deleted assets in the result

includeVersionsboolean

Flag to denote whether or not to include prior versions of the asset in the result

sortByArray of objects(Search_sortBy)
operationstring

Operation between search terms

Enum"AND""OR"
Example: "AND"
keywordSearchFieldstring

Specified Search Terms

cursorstring

Optional parameter on the first call. On subsequent calls requires the cursor value returned in the API response.

Example: "WzE2ODI5NTczMDM2NDgsMTY4Mjk1NzI2MzU5NSwxNjgyOTU3MjYzNTk1LCI3ZDkwZTkzMi01MmU4LTQ2NTEtYmQ3Ny03M2Y1OWFjMmY3YTMiLDEyMDI1OTA4NTEzMF0="
assetTypestring

Optional parameter that restricts search results to the asset type specified.

Example: "Base Product"
curl -i -X POST \
  https://api.uat.tenovos.io/v1/asset/scan \
  -H 'Authorization: string' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
    "limit": 100,
    "searchTerm": [
      "*"
    ],
    "includeDeleted": true,
    "includeVersions": true,
    "sortBy": [
      {
        "metadataDefinitionSearchField": "lastUpdatedEpoch",
        "order": "desc"
      }
    ],
    "operation": "AND",
    "keywordSearchField": "string",
    "cursor": "WzE2ODI5NTczMDM2NDgsMTY4Mjk1NzI2MzU5NSwxNjgyOTU3MjYzNTk1LCI3ZDkwZTkzMi01MmU4LTQ2NTEtYmQ3Ny03M2Y1OWFjMmY3YTMiLDEyMDI1OTA4NTEzMF0=",
    "assetType": "Base Product"
  }'

Responses

The Response Body will be a JSON object

Bodyapplication/json
hitCountinteger

Number of Assets return

Example: 1
cursorstring

Cursor returned after the first call to be passed on all subsequent calls to get the next page of results

Example: "WzE2ODI5NTczMDM2NDgsMTY4Mjk1NzI2MzU5NSwxNjgyOTU3MjYzNTk1LCI3ZDkwZTkzMi01MmU4LTQ2NTEtYmQ3Ny03M2Y1OWFjMmY3YTMiLDEyMDI1OTA4NTEzMF0="
resultArray of objects(Asset)

List of Asset objects

facetsArray of objects(SearchFacetList)
Response
application/json
{ "hitCount": 1, "cursor": "WzE2ODI5NTczMDM2NDgsMTY4Mjk1NzI2MzU5NSwxNjgyOTU3MjYzNTk1LCI3ZDkwZTkzMi01MmU4LTQ2NTEtYmQ3Ny03M2Y1OWFjMmY3YTMiLDEyMDI1OTA4NTEzMF0=", "result": [ { … } ], "facets": [ { … } ] }

(NEW!) Search Assets

Request

There are two types of searches available:

  • Simple Keyword Search: Requesting user can get list of Assets against search terms/keywords list. For example ["keyword1", "keyword2"]
  • Facet Search: Requesting user can get list of Assets against Facet value list. For example ["Facet: facet_value"]

Specifying a value in the 'keywordSearchField' attribute in the request allows you to target keyword searches against Filename, Asset ID, Metadata, or Content (extracted text from documents.

By default, if not specified in the request, the search operation type will be set to 'AND' for search terms and/or facets. If the 'relevancy' field is passed as true, this will negate the operation selection used in legacy search and will leverage the relevancy search matching. When relevancy is set to true, the 'metadataDefinitionSearchField' field within the sortBy object should be set to 'relevance', and the 'order' field should be set to 'desc'.

By default, up to 50 Assets will return from the search. Should you want to limit the amount of assets returned in each response, the value for 'limit' can be set to a number up to 50. You can also set search offset by setting the 'from' property. For example, for the first page, set 'from' to 0. After that set 'from' to 50, 100, 150, etc.

This endpoint will only return a handful of metadata fields by default. To include more metadata fields in the response, those fields should be included in the 'includes' array. System metadata fields, such as Metadata Template ID, should be entered using camel case (ie, metadataTemplateId). Custom metadata fields should be entered by their attribute search term, prefixed by metadataDocument. For example, to retrieve an attribute called Published Channel, a user would include "metadataDocument.published_channel" in the includes array. Fields included in this array will be returned in an object called 'metadataDocument' if those attributes exist on the asset.

Average Response Time: 691ms

Security
ApiKeyAuth or BasicAuth
Headers
X-API-Keystringrequired

Customer-specific API key required to invoke API.

Authorizationstringrequired

Provided by Authentication Token creation operation

Content-Typestringrequired
Value"application/json"
Bodyapplication/jsonrequired

The Request Body must be a JSON object

searchTermArray of strings

Comma separated array of search term values.

Example: ["Gilfoyle","Dinesh","Erlich"]
frominteger

Search offset from which index search will start

Example: 0
limitinteger<= 100

Limits the number of results that are returned.

Example: 50
includesArray of strings

System metadata fields, such as Metadata Template ID, should be entered using camel case (ie, metadataTemplateId). Custom metadata fields should be entered by their attribute search term, prefixed by metadataDocument. For example, to retrieve an attribute called Published Channel, a user would include "metadataDocument.published_channel" in the includes array. Fields included in this array will be returned in an object called 'metadataDocument' if those attributes exist on the asset.

Example: ["metadataTemplateId","metadataDocument.asset_description","metadataDocument.file_size","metadataDocument.compression_type"]
includeDeletedboolean

Flag to denote whether or not to include Deleted assets in the result

includeVersionsboolean

Flag to denote whether or not to include prior versions of the asset in the result

sortByArray of objects
operationstring

Operation between search terms

Enum"AND""OR"
Example: "AND"
aggregationsboolean

Boolean field to indicate whether or not to return filter menu aggregation counts for the search term. Set to false to significant improve speed and reduce payload size.

Example: false
keywordSearchFieldstring

Specified Search Target. Valid values are - filename, assetId, metadata, content

Enum"filename""assetId""metadata""content"
Example: "filename"
relevancyboolean

If the 'relevancy' field is passed as true, this will negate the operation selection used in legacy search and will leverage the relevancy search matching. When relevancy is set to true, the 'metadataDefinitionSearchField' field within the sortBy object should be set to 'relevance', and the 'order' field should be set to 'desc'.

Example: true
curl -i -X POST \
  https://api.uat.tenovos.io/v1/search \
  -H 'Authorization: string' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
    "searchTerm": [
      "Gilfoyle",
      "Dinesh",
      "Erlich"
    ],
    "from": 0,
    "limit": 50,
    "includes": [
      "metadataTemplateId",
      "metadataDocument.asset_description",
      "metadataDocument.file_size",
      "metadataDocument.compression_type"
    ],
    "includeDeleted": true,
    "includeVersions": true,
    "sortBy": [
      {
        "metadataDefinitionSearchField": "lastUpdatedEpoch",
        "order": "desc"
      }
    ],
    "operation": "AND",
    "aggregations": false,
    "keywordSearchField": "filename",
    "relevancy": true
  }'

Responses

The Response Body will be a JSON object

Bodyapplication/json
totalinteger

Provides the total number of search results based on the search criteria provided.

Example: 1
resultsobject(search-result)

List of asset objects

facetsstring(facets)

string containing JSON of filter facets

Example: "{\"Company\":{\"buckets\":[{\"key\":\"Pied Piper\",\"doc_count\":47},{\"key\":\"Hooli\",\"doc_count\":4}]}"
Response
application/json
{ "total": 1, "results": { "createdEpoch": 1727724108027, "metadataDocument": { … }, "fileId": "445c273a-235f-4d3b-8397-567f02f312e0", "filename": "gilfoyle_anton.png", "originalFileId": "2d69d72f-91be-4aeb-9d62-4fbd3759e451", "createdBy": "d6197e75-74e2-4a81-9c39-429148ab27a1", "objectId": "c5e24f53-cb77-4882-927c-0e8dddf5f7c9", "customerId": 1588091945182, "metadataTemplateId": "f5a66fac-7e81-44c1-b6eb-20997c559982", "renditionsDocument": { … }, "securityTemplateIds": [ … ] }, "facets": "{\"Company\":{\"buckets\":[{\"key\":\"Pied Piper\",\"doc_count\":47},{\"key\":\"Hooli\",\"doc_count\":4}]}" }

Search Collections

Request

Retrieve the collection list against the list of search terms/keywords. By default AND operation will be applied between the search terms.

By default 50 collections will return, you can also set search offset by setting from attribute, for example for first page set from to zero and after that you set 50, 100, 150 and so on.

Average Response Time: 244ms

Security
ApiKeyAuth or BasicAuth
Headers
X-API-Keystringrequired

Customer-specific API key required to invoke API.

Authorizationstringrequired

Provided by Authentication Token creation operation

Content-Typestringrequired
Value"application/json"
Bodyapplication/jsonrequired

The Request Body must be a JSON-formatted list of collections which include the following properties.

frominteger

Search offset from which index search will start

Example: 0
searchTermArray of strings

List of search terms with AND operation be default

Example: ["*"]
includeDeletedboolean

Flag to denote whether or not to include Deleted assets in the result

includeVersionsboolean

Flag to denote whether or not to include prior versions of the asset in the result

sortByArray of objects(Search_sortBy)
operationstring

Operation between search terms

Enum"AND""OR"
Example: "AND"
aggregationsboolean

Boolean field to indicate whether or not to return filter menu aggregation counts for the search term. Set to false to significant improve speed and reduce payload size.

Example: false
keywordSearchFieldstring

Specified Search Target. Valid values are - filename, assetId, metadata, content

Enum"filename""assetId""metadata""content"
Example: "filename"
curl -i -X POST \
  https://api.uat.tenovos.io/v1/search/collection \
  -H 'Authorization: string' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
    "from": 0,
    "searchTerm": [
      "*"
    ],
    "includeDeleted": true,
    "includeVersions": true,
    "sortBy": [
      {
        "metadataDefinitionSearchField": "lastUpdatedEpoch",
        "order": "desc"
      }
    ],
    "operation": "AND",
    "aggregations": false,
    "keywordSearchField": "filename"
  }'

Responses

The Response Body must be a JSON object

Bodyapplication/jsonArray [
hitCountinteger

Number of Collections found

Example: 0
resultArray of objects(CollectionSearchItem)

List of Collection objects

facetsArray of objects
]
Response
application/json
[ { "hitCount": 0, "result": [ … ], "facets": [ … ] } ]

Search Assets by Keyword

Request

To Retrieve the Assets list there is two types of searches available,

Simple Keyword Search: Requesting user can get list of Assets against search terms/keywords list. For example ["keyword1", "keyword2"]

Facet Search: Requesting user can get list of Assets against Facet value list. For example ["Facet: facet_value"]

Targeted Search: Requesting user can target keyword searches against Filename, Asset ID, Metadata, or Content (extracted text from documents) by passing the optional property of keywordSearchField.

Requesting user can apply the combination of both searches and if there is no keyword/facet in requesting body it will apply wildcard search.

By default AND operation will be applied with search terms and/or facets.

By default, up to 50 Assets will return from the search.You can also set search offset by setting the from property. For example, for the first page, set from to zero. After that set from to 50, 100, 150, etc.

Average Response Time: 4185ms

Security
ApiKeyAuth or BasicAuth
Headers
X-API-Keystringrequired

Customer-specific API key required to invoke API.

Authorizationstringrequired

Provided by Authentication Token creation operation

Content-Typestringrequired
Value"application/json"
Bodyapplication/jsonrequired

The Request Body must be a JSON object

frominteger

Search offset from which index search will start

Example: 0
searchTermArray of strings

List of search terms with AND operation be default

Example: ["*"]
includeDeletedboolean

Flag to denote whether or not to include Deleted assets in the result

includeVersionsboolean

Flag to denote whether or not to include prior versions of the asset in the result

sortByArray of objects(Search_sortBy)
operationstring

Operation between search terms

Enum"AND""OR"
Example: "AND"
aggregationsboolean

Boolean field to indicate whether or not to return filter menu aggregation counts for the search term. Set to false to significant improve speed and reduce payload size.

Example: false
keywordSearchFieldstring

Specified Search Target. Valid values are - filename, assetId, metadata, content

Enum"filename""assetId""metadata""content"
Example: "filename"
curl -i -X POST \
  https://api.uat.tenovos.io/v1/search/keyword \
  -H 'Authorization: string' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
    "from": 0,
    "searchTerm": [
      "*"
    ],
    "includeDeleted": true,
    "includeVersions": true,
    "sortBy": [
      {
        "metadataDefinitionSearchField": "lastUpdatedEpoch",
        "order": "desc"
      }
    ],
    "operation": "AND",
    "aggregations": false,
    "keywordSearchField": "filename"
  }'

Responses

The Response Body will be a JSON object

Bodyapplication/json
hitCountinteger

Number of Assets return

Example: 1
resultArray of objects(Asset)

List of Asset objects

facetsArray of objects(SearchFacetList)
Response
application/json
{ "hitCount": 1, "result": [ { … } ], "facets": [ { … } ] }

Search User Profiles

Request

Use this endpoint to retrieve a list of User Profiles matching the search keyword provided in the request parameter. Do not enter your search term wrapped in quotation marks. Provided keyword will be matched against the user attributes case insensitively - First Name, Last Name, Friendly Name, Username, Email, Phone, Company, Contact, Country, Status, Group Names, and Role Name. Entering "*" as your search term will return all users. The response is formatted as an area of objects, with each user account being returned as an object, as well as a key called 'count', which indicates how many accounts met the search critera. A maximum limit of 100 accounts will be returned in the response. In the case that more than 100 accounts meet the search criteria, pagination using the optional 'from' and 'limit' query parameters will be required to retrieve all accounts.

The user performing this action must have the 'User Management' role privilege.

How to use pagination: Pagination should be used when the amount of user accounts that match the entered search term exceeds the amount of users (100) returned in a single response. Paginating through the results will require making more than one call to this endpoint. To retrieve the first 100 users, in your query parameters, set your 'from' value to 0, and your 'limit' value to 100. To return the next set of 100 users, leave your 'limit' value as 100, but set your 'from' value to 100.

Continue to repeat this process of adding 100 to your 'from' value until all user account results are captured.

Security
ApiKeyAuth or BasicAuth
Path
searchTextstringrequired

Specify searchText to search across user attributes.

Query
fromstringrequired

Specify the starting position for the next result set.

limitstringrequired

Specify the maximum number of records to return each call.

Headers
X-API-Keystringrequired

Customer-specific API key required to invoke API.

Authorizationstringrequired

Provided by Authentication Token creation operation

curl -i -X GET \
  'https://api.uat.tenovos.io/v1/search/users/{searchText}?from=string&limit=string' \
  -H 'Authorization: string' \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Responses

The Response Body will be a JSON object

Bodyapplication/json
statusstring
Example: "success"
dataArray of objects(User)

List of User objects

Response
application/json
{ "status": "success", "data": [ { … } ] }

REQUESTS

Invoke these API's to create new Requests and manage existing Requests.

Operations

SECURITY

Invoke the Metadata API to retrieve Security Template information to be applied to Assets during Asset creation or edit.

Operations

PEOPLE

Invoke the User API to retrieve User profile information.

Operations

WEBHOOKS

Tenovos Webhook Subscriptions

For more information about our Webhooks, see the Webhook section of our Developer Portal

Operations

PROOFING

Operations