Read an upload ticket
GEThttps://
Returns one of your own upload tickets: its status, the size and SHA-256 of the bytes the server actually received, the media type it detected from them, both deadlines and, while the ticket is still waiting for its bytes, the upload_url to PUT them to.
Access
- Token scope
- api:
read: orapi:project_management read: orapi:project_drive read: orapi:customer_drive read: orapi:organization_drive read: user_drive Without it:
403 insufficient-token-scope. - Permission
- None. The record's own rules still apply.
- Rate cost
- 1 unit, read bucket.
- Also
If-None-Matchanswers304when nothing changed. Never cached:private, no-store. Unknown query parameters are refused, never ignored.
Both are checked, scope first. A token never does more than its user. How access is checked
Use it to check whether an upload landed before registering it, or to recover the media_id of one already registered. A ticket belongs to the credential that created it: somebody else's ticket is 404, and so is one whose permission family your token does not cover. No domain permission is required (the ticket is your own scratch object), but the parent record's write permission was checked when it was created and is checked again when it is registered. Tickets are hard-deleted, so trashed is not an accepted parameter, and a pruned one is 404.
Path parameters
Query parameters
Unknown parameters are refused with 400, naming the parameter.
Request headers
A correlation id of your own. It is recorded in our logs next to the server's request id but never returned: the response header always carries the server's id. A value that does not match the pattern is discarded silently, never rejected.
Response 200
Returns a Upload in the detail view.
Headers
ETag- A strong validator of exactly this representation.
RateLimit- The IETF
httpapi-ratelimit-headersform of your remaining allowance on the tightest bucket this request touched. RateLimit-Policy- The ceiling and window of that bucket, as
<limit>;w=<seconds>. X-Request-Id- The server-generated ULID correlating this response with our logs.
Every response also carries Cache-Control, Vary, X-Content-Type-Options, X-Plnnrly-Api-Version, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Headers and versioning
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.
Errors
8 errors every operation can return: 304, 400, 401, 404, 406, 429, 500, 503
304 Not modified.
400 Bad request.
idempotency-key-requiredinvalid-cursorinvalid-query-parametermalformed-requestunsupported-parameter
401 Unauthenticated.
404 Not found.
406 Not acceptable.
429 Too many requests.
500 Server error.
503 Service unavailable.
This path allows GET, DELETE. Anything else answers 405.
Something wrong or missing on this page? Tell us