BuildMultipartUploadStartResponse
Response with everything a client needs to upload parts directly to S3. Like upload-session, no build row exists yet: the client uploads the parts, assembles them by POSTing the part ETags to complete_url, then creates the build via POST /{app_id}/builds with upload_id. Unfinished multipart uploads are aborted by the bucket lifecycle rule and abandoned staging objects are swept server-side; abort_url is a courtesy for prompt cleanup.
Properties
| Name | Type | Description |
|---|---|---|
| abort_url | string | Presigned S3 AbortMultipartUpload URL |
| branch_id | object | |
| complete_url | string | Presigned S3 CompleteMultipartUpload URL |
| part_size | integer | Size in bytes of every part except the last |
| parts | array | |
| s3_upload_id | string | Native S3 multipart UploadId. Already embedded in every presigned URL above; surfaced explicitly so a client can persist it and resume an interrupted upload via the multipart-upload/resume route. |
| upload_expires_at | integer | Unix timestamp after which the presigned URLs expire |
| upload_id | string | Staging upload session id, passed to POST /{app_id}/builds |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/revyl/json-schema/revyl-build-multipart-upload-start-response-schema.json",
"title": "BuildMultipartUploadStartResponse",
"description": "Response with everything a client needs to upload parts directly to S3.\n\nLike upload-session, no build row exists yet: the client uploads the\nparts, assembles them by POSTing the part ETags to complete_url, then\ncreates the build via POST /{app_id}/builds with upload_id. Unfinished\nmultipart uploads are aborted by the bucket lifecycle rule and abandoned\nstaging objects are swept server-side; abort_url is a courtesy for\nprompt cleanup.",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/revyl-apps-api-openapi.yml#/components/schemas/BuildMultipartUploadStartResponse",
"properties": {
"abort_url": {
"description": "Presigned S3 AbortMultipartUpload URL",
"title": "Abort Url",
"type": "string"
},
"branch_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Branch Id"
},
"complete_url": {
"description": "Presigned S3 CompleteMultipartUpload URL",
"title": "Complete Url",
"type": "string"
},
"part_size": {
"description": "Size in bytes of every part except the last",
"title": "Part Size",
"type": "integer"
},
"parts": {
"items": {
"$ref": "#/$defs/BuildMultipartUploadPartURL"
},
"title": "Parts",
"type": "array"
},
"s3_upload_id": {
"description": "Native S3 multipart UploadId. Already embedded in every presigned URL above; surfaced explicitly so a client can persist it and resume an interrupted upload via the multipart-upload/resume route.",
"title": "S3 Upload Id",
"type": "string"
},
"upload_expires_at": {
"description": "Unix timestamp after which the presigned URLs expire",
"title": "Upload Expires At",
"type": "integer"
},
"upload_id": {
"description": "Staging upload session id, passed to POST /{app_id}/builds",
"format": "uuid",
"title": "Upload Id",
"type": "string"
}
},
"required": [
"upload_id",
"s3_upload_id",
"part_size",
"upload_expires_at",
"parts",
"complete_url",
"abort_url"
],
"type": "object",
"$defs": {
"BuildMultipartUploadPartURL": {
"description": "A presigned URL for uploading one part of a multipart upload.",
"properties": {
"part_number": {
"description": "1-indexed S3 part number",
"minimum": 1.0,
"title": "Part Number",
"type": "integer"
},
"upload_url": {
"description": "Presigned upload_part URL",
"title": "Upload Url",
"type": "string"
}
},
"required": [
"part_number",
"upload_url"
],
"title": "BuildMultipartUploadPartURL",
"type": "object"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/revyl-build-multipart-upload-start-response"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.