Returns a paginated collection of the tenant's non-image files (documents, spreadsheets, archives, …), filtered and sorted using OData query options ($filter, $orderby, $top, $skip).
Requires a valid API key in the X-API-KEY header.
The page is wrapped in the house collection envelope — the files are under value, never at the top level:
{
"value": [
{
"reference": "product-datasheet.pdf",
"numLinks": 3,
"status": "Ok",
"modifiedOn": "2024-04-05T08:44:33",
"fileType": "pdf",
"createdOn": "2024-04-05T08:44:33",
"tags": ["datasheets", "catalog"],
"url": "https://cdn.example.com/product-datasheet.pdf",
"sizeInBytes": 102400
}
],
"@count": 137,
"@readLink": "https://api2.saleslayer.com/dam/files?$top=50",
"@nextLink": "https://api2.saleslayer.com/dam/files?$top=50&$skip=50"
}Notes on the payload:
statustells you whether the file is usable yet — see the status values below.urlandsizeInBytescome from the stored metadata and are empty /0until processing has recorded them.tagsis stored as a comma-separated string, so a tag that itself contains a comma comes back split into several tags.@countis the total number of matches, ignoring$top/$skip.@readLinkis the canonical URL of this collection — this request, echoed back.@nextLinkis the URL of the next page and is omitted on the last page.
The @-prefixed hypermedia links (@readLink, @nextLink) are only emitted when hypermedia enrichment is configured for the deployment; @count is always present. Where the links are absent, page forward by incrementing $skip yourself until fewer than $top items come back.
Only these fields can be used in $filter and $orderby:
reference, numLinks, status, modifiedOn, fileType, createdOn
Field names are case-insensitive. Every other field — including tags, url and sizeInBytes — is not queryable: naming one in $filter or $orderby returns 400. $orderby honours only the first sort expression.
$select and $expand are not supported and are ignored.
- Comparison:
eq,ne,gt,ge,lt,le - Logical:
and,or,not - Sets:
in - Functions:
contains,startswith,endswith
Vd- Void (not yet started processing)Up- Updating (being uploaded/updated)Ok- Processed correctly (ready to use)Re- ReprocessingEr- Error (processing failed)Dv- Deleted/void
Results are not filtered by status, so files in any of these states can be returned. Filter on status explicitly if you only want usable files.
GET /files?$filter=fileType eq 'pdf'
GET /files?$filter=status eq 'Ok'
GET /files?$filter=fileType eq 'csv' and status eq 'Ok'
GET /files?$filter=status in ('Ok', 'Re')
GET /files?$filter=contains(reference, 'datasheet')
GET /files?$filter=startswith(reference, 'product-') and numLinks gt 0
GET /files?$orderby=createdOn desc
GET /files?$filter=fileType ne 'txt'&$orderby=numLinks desc&$skip=0&$top=50- 400 Bad Request: Invalid
$filtersyntax, a field that is not queryable in$filteror$orderby, a negative$skip, or a$topthat is not between 1 and 100 - 401 Unauthorized: Missing or invalid API key. Returned by the API gateway as
{ "message": "Unauthorized", "request_id": "d8aafa5b8f3e400b60bea0123dd33317" } - 403 Forbidden: The API key does not have read permissions for this operation. Same body shape as the 401
- 500 Internal Server Error: Technical error (e.g. database unavailable)
A 400 uses the shared validation envelope, keyed by the offending parameter:
{
"validationFailures": {
"$orderby": [
{
"PropertyName": "$orderby",
"ErrorMessage": "Ordering by 'tags' is not supported. Supported fields: reference, numlinks, status, modifiedon, filetype, createdon (Parameter 'propertyName')",
"AttemptedValue": null
}
]
}
}curl -i -X GET \
'https://api2.saleslayer.com/dam/files?%24filter=string&%24orderby=string&%24top=0&%24skip=0' \
-H 'X-API-KEY: string'OK
The files in this page, at most $top (default and maximum 100).
Canonical URL of this collection — this request, echoed back. Present only when hypermedia enrichment is enabled.
{ "value": [ { … } ], "@count": 0, "@readLink": "string", "@nextLink": "string" }