Upload
curl --request POST \
--url https://api.sortx.co.uk/documents/{id}/file \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form file=@example-fileconst form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.sortx.co.uk/documents/{id}/file', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sortx.co.uk/documents/{id}/file"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text){
"id": "<string>",
"subjectKind": "<string>",
"subjectId": "<string>",
"kind": "<string>",
"name": "<string>",
"storageKey": "<string>",
"contentType": "<string>",
"sizeBytes": 123,
"reference": "<string>",
"issuedOn": "<string>",
"expiresOn": "<string>",
"notes": "<string>",
"contentDigest": "<string>",
"bytesState": "<string>",
"fileIntent": "<string>",
"revision": 123,
"supersedesDraftId": "<string>",
"supersedesId": "<string>",
"uploadedByUserId": "<string>",
"archivedAt": "<string>",
"createdAt": "<string>",
"eicrOutcome": "<string>",
"remedialsDueOn": "<string>",
"remedialsCompletedOn": "<string>",
"epcRating": "<string>",
"coAlarmChecked": true,
"certificateDetail": null
}{
"_tag": "TenantCreateRejected",
"reason": "<string>",
"field": "<string>"
}{
"_tag": "Unauthenticated"
}{
"_tag": "TenantSuspended",
"tenantId": "<string>",
"reason": "<string>"
}{
"_tag": "EntitlementMissing",
"tenantId": "<string>",
"moduleId": "<string>"
}{
"_tag": "TenantNotFound",
"slug": "<string>"
}{
"_tag": "WebhookDuplicate",
"integration": "<string>",
"externalId": "<string>"
}{
"_tag": "RateLimited",
"key": "<string>",
"retryAfterSeconds": 123,
"message": "<string>"
}{
"_tag": "IntegrationUnavailable",
"integration": "<string>",
"detail": "<string>"
}documents
Upload
Seal a document’s file. Identical bytes replay; different bytes conflict and must be superseded.
POST
/
documents
/
{id}
/
file
Upload
curl --request POST \
--url https://api.sortx.co.uk/documents/{id}/file \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form file=@example-fileconst form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.sortx.co.uk/documents/{id}/file', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sortx.co.uk/documents/{id}/file"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text){
"id": "<string>",
"subjectKind": "<string>",
"subjectId": "<string>",
"kind": "<string>",
"name": "<string>",
"storageKey": "<string>",
"contentType": "<string>",
"sizeBytes": 123,
"reference": "<string>",
"issuedOn": "<string>",
"expiresOn": "<string>",
"notes": "<string>",
"contentDigest": "<string>",
"bytesState": "<string>",
"fileIntent": "<string>",
"revision": 123,
"supersedesDraftId": "<string>",
"supersedesId": "<string>",
"uploadedByUserId": "<string>",
"archivedAt": "<string>",
"createdAt": "<string>",
"eicrOutcome": "<string>",
"remedialsDueOn": "<string>",
"remedialsCompletedOn": "<string>",
"epcRating": "<string>",
"coAlarmChecked": true,
"certificateDetail": null
}{
"_tag": "TenantCreateRejected",
"reason": "<string>",
"field": "<string>"
}{
"_tag": "Unauthenticated"
}{
"_tag": "TenantSuspended",
"tenantId": "<string>",
"reason": "<string>"
}{
"_tag": "EntitlementMissing",
"tenantId": "<string>",
"moduleId": "<string>"
}{
"_tag": "TenantNotFound",
"slug": "<string>"
}{
"_tag": "WebhookDuplicate",
"integration": "<string>",
"externalId": "<string>"
}{
"_tag": "RateLimited",
"key": "<string>",
"retryAfterSeconds": 123,
"message": "<string>"
}{
"_tag": "IntegrationUnavailable",
"integration": "<string>",
"detail": "<string>"
}Authorizations
A workspace API key (Settings → API keys), scoped to <group>:read / <group>:write.
Path Parameters
Body
multipart/form-data
Response
Success