Upload
An upload ticket: the server's permission for you to place one file's bytes in storage, and the record of what arrived.
- Summary view
- UploadList, 20 fields. What a list returns by default.
- Detail view
- Upload, 20 fields. The default for a single read and for every write.
Create one against the record you want to attach to, PUT the raw bytes to upload_url, then POST its id as upload_id to that record's file collection to turn the bytes into a file. Tickets are yours alone, are single-use, expire, and can be deleted while unregistered.
Used by
Fields
- Detail only
- Only in the detail view.
- Only with include
- Only when you ask for it with include.
- Server-assigned
- Set by plnnrly, never by a request.
The work item this ticket attaches to, or null when it targets a drive item.
The drive item this ticket attaches to, or null when it targets a work item.
The media collection the file will land in. Always attachments: it is chosen by the route, and no request field can change it.
The sanitized file name the file will carry. Sent when the ticket is created; control characters are stripped and #, /, \ and spaces become hyphens, so what you read back can differ from what you sent.
The size you declared when creating the ticket. A declaration, not a bound: the server counts the bytes it actually receives.
The optional SHA-256 you declared when creating the ticket. When present the server refuses bytes that do not match it.
The number of bytes that actually arrived, measured by the server. Null until the upload lands.
The SHA-256 the server computed over the bytes it received. Null until the upload lands.
The media type detected from the received bytes. Detected, never declared: the API accepts no content type when creating the ticket and ignores the Content-Type of the upload itself.
Where the ticket is in its lifecycle.
pendinguploadedcommittingcommittedexpiredrevoked
New values may be added.
Where to PUT the file. An opaque absolute URL: send the raw file as the body of a PUT whose only header is your Authorization bearer token. No Content-Type is read and the body is stored exactly as sent, so a form envelope would become part of the file. Present only while status is pending.
The deadline for the PUT. After it the ticket is dead and a new one must be created.
The deadline for the registration, set when the bytes land and measured from that moment, so a slow upload does not eat into the time you have to register. Null until the upload lands.
When the bytes became a file. Null until they do.
The id of the file this ticket became. Null until it is registered, and set exactly once.
Variants
UploadList 20 fields
What a collection returns, and what ?view=summary returns on a single record.
The same fields as the detail object.
UploadLinks 1 field
The links object on this resource.
Keys: self
Columns deliberately not published
created_by_idA ticket is bound to its issuer and a caller only ever sees their own.diskStorage location chosen by plnnrly; a caller-chosen one could write outside your organisation.model_idThe other half of that target reference, withheld with it.model_typePublished as work_item_id or drive_item_id, the target the ticket was created on.organization_idThe organisation is implied by the host you authenticated against.permission_prefixThe permission family the ticket was created under; checked again on every step.storage_keyServer-derived storage key; publishing it would let a caller reach the staged bytes directly.storage_tokenThe unguessable segment of the storage key; it is never disclosed.ulidThe secret part of upload_url; id is the ticket's public identifier.Something wrong or missing on this page? Tell us