Cart Request Documents
Before checkout, it's possible to upload request documents to help streamline the process.
There are no hard requirements for any content, but keep in mind access may be restricted if abused.
Files should be no larger than 4MB, while larger files MAY be accepted, they are not guaranteed to be supported moving forward, only a limit of 4MB will be guaranteed.
Schema
Type Object
| Name | Type | Description |
|---|---|---|
content_type |
String | Desc. content_type |
expires_at |
String(format:date-time) | Desc. expires_at |
filename |
String | Desc. filename |
id |
String(format:ulid) | Desc. id |
inserted_at |
String(format:date-time) | An ISO8601 formatted timestamp |
name |
String(1..128) | Desc. name |
notes |
String | Desc. notes |
updated_at |
String(format:date-time) | An ISO8601 formatted timestamp |
Desc. content_type
The mime type of the document, this will be returned as the content-type header when downloading the asset.
Desc. expires_at
An ISO8601 timestamp denoting when the document will be considered expired, note you may still be able to retrieve the associated file, but once over the timestamp, it will not be guaranteed.
Desc. filename
The filename of the document.
Desc. id
Another format for UUID, used primarily for tasks, requests and messages.
Desc. name
A unique name identifying the document, must be unique to the request
Desc. notes
Any additional information about the request, may be read by an operations personel in case of manual action
Example
{
"content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"expires_at": "2021-08-13T04:08:44.762841Z",
"filename": "acme_corp-lrn-2025-03-03.docx",
"id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
"inserted_at": "2021-08-13T04:08:44.762841Z",
"name": "LOA",
"notes": "string",
"updated_at": "2021-08-13T04:08:44.762841Z"
}
API
Upload Cart Request Document
POST /api/v1/carts/{cart_id}/requests/{request_id}/documents HTTP/1.1
Attach a document or any file to the request currently in a cart, these documents can be removed later if needed.
Path Parameters
| Name | Type | Description |
|---|---|---|
| request_id | String(format:ulid)! | Path Desc. request_id |
Path Desc. request_id
ULID Another format for UUID, used primarily for tasks, requests and messages.
Request multipart/form-data
POST /api/v1/carts/{cart_id}/requests/{request_id}/documents HTTP/1.1
Accept: application/json
Content-Type: multipart/form-data; boundary=ExampleBoundary7MA4YWxkTrZu0gW
Content-Length: 592
--ExampleBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="example.bin"
Content-Type: application/octet-stream
<binary file contents>
--ExampleBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file_hint"
DEFAULT
--ExampleBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="filename"
abc.pdf
--ExampleBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="name"
LOA
--ExampleBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="notes"
LOA from client on 2026-05-20.
--ExampleBoundary7MA4YWxkTrZu0gW--
Response 201
application/json
HTTP/1.1 201
Content-Type: application/json
Content-Length: 422
{
"data": {
"content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"expires_at": "2021-08-13T04:08:44.762841Z",
"filename": "acme_corp-lrn-2025-03-03.docx",
"id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
"inserted_at": "2021-08-13T04:08:44.762841Z",
"name": "LOA",
"notes": "string",
"updated_at": "2021-08-13T04:08:44.762841Z"
},
"type": "request_document"
}
Response 403
application/json
HTTP/1.1 403
Content-Type: application/json
Content-Length: 312
{
"errors": [
{
"code": "access_denied.no_scope",
"detail": "No scope available to user role",
"params": {
"action": "index",
"level": "guest",
"resource": "resource"
},
"sub_code": "none",
"title": "Access Denied, no scope available"
}
]
}
Response 404
application/json
HTTP/1.1 404
Content-Type: application/json
Content-Length: 314
{
"errors": [
{
"code": "not_found",
"detail": "The specified resource could not be found",
"params": {
"resource": {
"id": "3fbb573a-6049-44a0-a12c-d3a1ffae0b69",
"type": "user"
}
},
"sub_code": "none",
"title": "Not Found"
}
]
}
Response 422
application/json
HTTP/1.1 422
Content-Type: application/json
Content-Length: 241
{
"errors": [
{
"code": "invalid_parameter",
"detail": "The specified resource could not be found",
"source": {
"pointer": "/data/type"
},
"sub_code": "none",
"title": "Not Found"
}
]
}
Delete Cart Request Document
DELETE /api/v1/carts/{cart_id}/requests/{request_id}/documents/{id} HTTP/1.1
Removes a request document and any associated uploaded files.
Path Parameters
| Name | Type | Description |
|---|---|---|
| request_id | String(format:ulid)! | Path Desc. request_id |
Path Desc. request_id
ULID Another format for UUID, used primarily for tasks, requests and messages.
Request
DELETE /api/v1/carts/{cart_id}/requests/{request_id}/documents/{id} HTTP/1.1
Accept: application/json
Response 200
application/json
HTTP/1.1 200
Content-Type: application/json
Content-Length: 422
{
"data": {
"content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"expires_at": "2021-08-13T04:08:44.762841Z",
"filename": "acme_corp-lrn-2025-03-03.docx",
"id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
"inserted_at": "2021-08-13T04:08:44.762841Z",
"name": "LOA",
"notes": "string",
"updated_at": "2021-08-13T04:08:44.762841Z"
},
"type": "request_document"
}
Response 403
application/json
HTTP/1.1 403
Content-Type: application/json
Content-Length: 312
{
"errors": [
{
"code": "access_denied.no_scope",
"detail": "No scope available to user role",
"params": {
"action": "index",
"level": "guest",
"resource": "resource"
},
"sub_code": "none",
"title": "Access Denied, no scope available"
}
]
}
Response 404
application/json
HTTP/1.1 404
Content-Type: application/json
Content-Length: 314
{
"errors": [
{
"code": "not_found",
"detail": "The specified resource could not be found",
"params": {
"resource": {
"id": "3fbb573a-6049-44a0-a12c-d3a1ffae0b69",
"type": "user"
}
},
"sub_code": "none",
"title": "Not Found"
}
]
}
Response 422
application/json
HTTP/1.1 422
Content-Type: application/json
Content-Length: 241
{
"errors": [
{
"code": "invalid_parameter",
"detail": "The specified resource could not be found",
"source": {
"pointer": "/data/type"
},
"sub_code": "none",
"title": "Not Found"
}
]
}
List Cart Request Documents
GET /api/v1/carts/{cart_id}/requests/{request_id}/documents HTTP/1.1
List request documents.
Path Parameters
| Name | Type | Description |
|---|---|---|
| request_id | String(format:ulid)! | Path Desc. request_id |
Query Parameters
| Name | Type | Description |
|---|---|---|
| first | Integer | Query Desc. first |
| last | Integer | Query Desc. last |
| after | String | Query Desc. after |
| before | String | Query Desc. before |
Path Desc. request_id
ULID Another format for UUID, used primarily for tasks, requests and messages.
Query Desc. first
The number of items to return starting from the 'after' cursor
Query Desc. last
The number of items to return behind the 'before' cursor
Query Desc. after
The cursor representing the starting point of a 'first' based paging
Query Desc. before
The cursor representing the starting point of a 'last' based paging
Request
GET /api/v1/carts/{cart_id}/requests/{request_id}/documents HTTP/1.1
Accept: application/json
Response 200
application/json
HTTP/1.1 200
Content-Type: application/json
Content-Length: 635
{
"count": 1,
"page_info": {
"first": "string",
"has_next_page": true,
"has_previous_page": true,
"last": "string"
},
"results": [
{
"data": {
"content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"expires_at": "2021-08-13T04:08:44.762841Z",
"filename": "acme_corp-lrn-2025-03-03.docx",
"id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
"inserted_at": "2021-08-13T04:08:44.762841Z",
"name": "LOA",
"notes": "string",
"updated_at": "2021-08-13T04:08:44.762841Z"
},
"type": "request_document"
}
]
}
Response 403
application/json
HTTP/1.1 403
Content-Type: application/json
Content-Length: 312
{
"errors": [
{
"code": "access_denied.no_scope",
"detail": "No scope available to user role",
"params": {
"action": "index",
"level": "guest",
"resource": "resource"
},
"sub_code": "none",
"title": "Access Denied, no scope available"
}
]
}
Response 404
application/json
HTTP/1.1 404
Content-Type: application/json
Content-Length: 314
{
"errors": [
{
"code": "not_found",
"detail": "The specified resource could not be found",
"params": {
"resource": {
"id": "3fbb573a-6049-44a0-a12c-d3a1ffae0b69",
"type": "user"
}
},
"sub_code": "none",
"title": "Not Found"
}
]
}
Get Cart Request Document
GET /api/v1/carts/{cart_id}/requests/{request_id}/documents/{id} HTTP/1.1
Retrieve a Request Document record by its ID.
Note this is the "record" and not the uploaded file.
Path Parameters
| Name | Type | Description |
|---|---|---|
| request_id | String(format:ulid)! | Path Desc. request_id |
Path Desc. request_id
ULID Another format for UUID, used primarily for tasks, requests and messages.
Request
GET /api/v1/carts/{cart_id}/requests/{request_id}/documents/{id} HTTP/1.1
Accept: application/json
Response 200
application/json
HTTP/1.1 200
Content-Type: application/json
Content-Length: 422
{
"data": {
"content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"expires_at": "2021-08-13T04:08:44.762841Z",
"filename": "acme_corp-lrn-2025-03-03.docx",
"id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
"inserted_at": "2021-08-13T04:08:44.762841Z",
"name": "LOA",
"notes": "string",
"updated_at": "2021-08-13T04:08:44.762841Z"
},
"type": "request_document"
}
Response 403
application/json
HTTP/1.1 403
Content-Type: application/json
Content-Length: 312
{
"errors": [
{
"code": "access_denied.no_scope",
"detail": "No scope available to user role",
"params": {
"action": "index",
"level": "guest",
"resource": "resource"
},
"sub_code": "none",
"title": "Access Denied, no scope available"
}
]
}
Response 404
application/json
HTTP/1.1 404
Content-Type: application/json
Content-Length: 314
{
"errors": [
{
"code": "not_found",
"detail": "The specified resource could not be found",
"params": {
"resource": {
"id": "3fbb573a-6049-44a0-a12c-d3a1ffae0b69",
"type": "user"
}
},
"sub_code": "none",
"title": "Not Found"
}
]
}