ObjectStackObjectStack

Storage schema — API Protocol reference

Storage Service Protocol — Defines the API contract for client-side file operations.

Storage Service Protocol

Defines the API contract for client-side file operations. Focuses on secure, direct-to-cloud uploads (Presigned URLs) rather than proxying bytes through the API server.

Source: packages/spec/src/api/storage.zod.ts

TypeScript Usage

import { CompleteChunkedUploadRequestSchema, CompleteChunkedUploadResponseSchema, CompleteUploadRequestSchema, FileDownloadUrlResponseSchema, FileTypeValidationSchema, FileUploadResponseSchema, GetPresignedUrlRequestSchema, InitiateChunkedUploadRequestSchema, InitiateChunkedUploadResponseSchema, PresignedUrlResponseSchema, RawUploadResponseSchema, UploadChunkRequestSchema, UploadChunkResponseSchema, UploadProgressSchema, UploadScopeSchema } from '@objectstack/spec/api';
import type { CompleteChunkedUploadRequest, CompleteChunkedUploadResponse, CompleteUploadRequest, FileDownloadUrlResponse, FileTypeValidation, FileUploadResponse, GetPresignedUrlRequest, InitiateChunkedUploadRequest, InitiateChunkedUploadResponse, PresignedUrlResponse, RawUploadResponse, UploadChunkRequest, UploadChunkResponse, UploadProgress, UploadScope } from '@objectstack/spec/api';

// Validate data
const result = CompleteChunkedUploadRequestSchema.parse(data);

CompleteChunkedUploadRequest

Properties

PropertyTypeRequiredDescription
uploadIdstring✅Multipart upload session ID
parts{ chunkIndex: integer; eTag: string }[]✅Ordered list of uploaded parts for assembly

Nested Shape: CompleteChunkedUploadRequest.parts[number]

PropertyTypeRequiredDescription
chunkIndexinteger✅Chunk index
eTagstring✅ETag returned from chunk upload

CompleteChunkedUploadResponse

Properties

PropertyTypeRequiredDescription
successboolean✅Operation success status
error{ code: Enum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>; declaredCode?: string; message: string; userMessage?: string; … }optionalError details if success is false
meta{ timestamp: string; duration?: integer; requestId?: string; traceId?: string }optionalResponse metadata
data{ fileId: string; key: string; size: integer; mimeType: string; … }✅

Nested Shape: CompleteChunkedUploadResponse.error

PropertyTypeRequiredDescription
codeEnum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>✅Error code (e.g. VALIDATION_ERROR; StandardErrorCode ∪ the ledger the serving side registers — ERROR_CODE_LEDGER for framework packages)
declaredCodestringoptionalThe producer-declared code, verbatim, when it is not a member of the closed code vocabulary — the open, author-authored channel (app-specific spellings; ADR-0112)
messagestring✅Readable error message
userMessagestringoptionalProducer-marked user-facing refusal text, verbatim. Present exactly when the producer opted in at throw time; consumers render it to end users and keep their generic substitution for anything unmarked. Status-agnostic; never replaces message.
refusaltrueoptionalProducer-declared: the 5xx this envelope carries is a deliberate refusal whose message is authored for the caller, so a boundary that reads the declaration keeps it verbatim (until the withhold arms read it, a declared refusal is still withheld). Absent (the default) on a declared fault, whose message is withheld from the body and logged for the operator; redundant on a 4xx. Presence is the declaration — true is the only value.
categorystringoptionalError category (e.g. validation, authorization)
httpStatusintegeroptionalHTTP status of the response carrying this error
detailsanyoptionalAdditional error context (e.g. field validation errors)
requestIdstringoptionalRequest ID for tracking

Nested Shape: CompleteChunkedUploadResponse.meta

PropertyTypeRequiredDescription
timestampstring✅
durationintegeroptionalServer-side processing duration in milliseconds
requestIdstringoptional
traceIdstringoptional

Nested Shape: CompleteChunkedUploadResponse.data

PropertyTypeRequiredDescription
fileIdstring✅Final file ID
keystring✅Storage key/path of the assembled file
sizeinteger✅Total file size in bytes
mimeTypestring✅File MIME type
eTagstringoptionalFinal ETag of the assembled file
urlstringoptionalDownload URL for the assembled file

CompleteUploadRequest

Properties

PropertyTypeRequiredDescription
fileIdstring✅File ID returned from presigned request
eTagstringoptionalS3 ETag verification

FileDownloadUrlResponse

Properties

PropertyTypeRequiredDescription
successboolean✅Operation success status
error{ code: Enum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>; declaredCode?: string; message: string; userMessage?: string; … }optionalError details if success is false
meta{ timestamp: string; duration?: integer; requestId?: string; traceId?: string }optionalResponse metadata
data{ url: string }✅

Nested Shape: FileDownloadUrlResponse.error

PropertyTypeRequiredDescription
codeEnum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>✅Error code (e.g. VALIDATION_ERROR; StandardErrorCode ∪ the ledger the serving side registers — ERROR_CODE_LEDGER for framework packages)
declaredCodestringoptionalThe producer-declared code, verbatim, when it is not a member of the closed code vocabulary — the open, author-authored channel (app-specific spellings; ADR-0112)
messagestring✅Readable error message
userMessagestringoptionalProducer-marked user-facing refusal text, verbatim. Present exactly when the producer opted in at throw time; consumers render it to end users and keep their generic substitution for anything unmarked. Status-agnostic; never replaces message.
refusaltrueoptionalProducer-declared: the 5xx this envelope carries is a deliberate refusal whose message is authored for the caller, so a boundary that reads the declaration keeps it verbatim (until the withhold arms read it, a declared refusal is still withheld). Absent (the default) on a declared fault, whose message is withheld from the body and logged for the operator; redundant on a 4xx. Presence is the declaration — true is the only value.
categorystringoptionalError category (e.g. validation, authorization)
httpStatusintegeroptionalHTTP status of the response carrying this error
detailsanyoptionalAdditional error context (e.g. field validation errors)
requestIdstringoptionalRequest ID for tracking

Nested Shape: FileDownloadUrlResponse.meta

PropertyTypeRequiredDescription
timestampstring✅
durationintegeroptionalServer-side processing duration in milliseconds
requestIdstringoptional
traceIdstringoptional

Nested Shape: FileDownloadUrlResponse.data

PropertyTypeRequiredDescription
urlstring✅Short-lived signed download URL; may be server-relative

FileTypeValidation

Properties

PropertyTypeRequiredDescription
modeEnum<'whitelist' | 'blacklist'>✅whitelist = only allow listed types, blacklist = block listed types
mimeTypesstring[]✅List of MIME types to allow or block (e.g., "image/jpeg", "application/pdf")
extensionsstring[]optionalList of file extensions to allow or block (e.g., ".jpg", ".pdf")
maxFileSizeintegeroptionalMaximum file size in bytes
minFileSizeintegeroptionalMinimum file size in bytes (e.g., reject empty files)

FileUploadResponse

Properties

PropertyTypeRequiredDescription
successboolean✅Operation success status
error{ code: Enum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>; declaredCode?: string; message: string; userMessage?: string; … }optionalError details if success is false
meta{ timestamp: string; duration?: integer; requestId?: string; traceId?: string }optionalResponse metadata
data{ path: string; name: string; size: integer; mimeType: string; … }✅Uploaded file metadata

Nested Shape: FileUploadResponse.error

PropertyTypeRequiredDescription
codeEnum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>✅Error code (e.g. VALIDATION_ERROR; StandardErrorCode ∪ the ledger the serving side registers — ERROR_CODE_LEDGER for framework packages)
declaredCodestringoptionalThe producer-declared code, verbatim, when it is not a member of the closed code vocabulary — the open, author-authored channel (app-specific spellings; ADR-0112)
messagestring✅Readable error message
userMessagestringoptionalProducer-marked user-facing refusal text, verbatim. Present exactly when the producer opted in at throw time; consumers render it to end users and keep their generic substitution for anything unmarked. Status-agnostic; never replaces message.
refusaltrueoptionalProducer-declared: the 5xx this envelope carries is a deliberate refusal whose message is authored for the caller, so a boundary that reads the declaration keeps it verbatim (until the withhold arms read it, a declared refusal is still withheld). Absent (the default) on a declared fault, whose message is withheld from the body and logged for the operator; redundant on a 4xx. Presence is the declaration — true is the only value.
categorystringoptionalError category (e.g. validation, authorization)
httpStatusintegeroptionalHTTP status of the response carrying this error
detailsanyoptionalAdditional error context (e.g. field validation errors)
requestIdstringoptionalRequest ID for tracking

Nested Shape: FileUploadResponse.meta

PropertyTypeRequiredDescription
timestampstring✅
durationintegeroptionalServer-side processing duration in milliseconds
requestIdstringoptional
traceIdstringoptional

Nested Shape: FileUploadResponse.data

PropertyTypeRequiredDescription
pathstring✅File path
namestring✅File name
sizeinteger✅File size in bytes
mimeTypestring✅MIME type
lastModifiedstring✅Last modified timestamp
createdstring✅Creation timestamp
etagstringoptionalEntity tag
fileIdstringoptionalOpaque sys_file id (ADR-0104 D3 file-as-reference)

GetPresignedUrlRequest

Properties

PropertyTypeRequiredDescription
filenamestring✅Original filename
mimeTypestring✅File MIME type
sizenumber✅File size in bytes
scopeEnum<'user' | 'tenant' | 'private' | 'temp' | 'attachments'>optional (default: "user")Storage scope the new file is filed under (default user; attachments for the record attachments surface). Not an access setting: the upload doors refuse public, and a file is served without sign-in only when its stored file record carries acl 'public_read' (ADR-0104). The upload request carries no acl; every upload is stored private.
bucketstringoptionalSpecific bucket override (admin only)

InitiateChunkedUploadRequest

Properties

PropertyTypeRequiredDescription
filenamestring✅Original filename
mimeTypestring✅File MIME type
totalSizeinteger✅Total file size in bytes
chunkSizeintegeroptional (default: 5242880)Size of each chunk in bytes (minimum 5MB per S3 spec)
scopeEnum<'user' | 'tenant' | 'private' | 'temp' | 'attachments'>optional (default: "user")Storage scope the new file is filed under (default user; attachments for the record attachments surface). Not an access setting: the upload doors refuse public, and a file is served without sign-in only when its stored file record carries acl 'public_read' (ADR-0104). The upload request carries no acl; every upload is stored private.
bucketstringoptionalSpecific bucket override (admin only)
metadataRecord<string, string>optionalCustom metadata key-value pairs

InitiateChunkedUploadResponse

Properties

PropertyTypeRequiredDescription
successboolean✅Operation success status
error{ code: Enum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>; declaredCode?: string; message: string; userMessage?: string; … }optionalError details if success is false
meta{ timestamp: string; duration?: integer; requestId?: string; traceId?: string }optionalResponse metadata
data{ uploadId: string; resumeToken: string; fileId: string; totalChunks: integer; … }✅

Nested Shape: InitiateChunkedUploadResponse.error

PropertyTypeRequiredDescription
codeEnum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>✅Error code (e.g. VALIDATION_ERROR; StandardErrorCode ∪ the ledger the serving side registers — ERROR_CODE_LEDGER for framework packages)
declaredCodestringoptionalThe producer-declared code, verbatim, when it is not a member of the closed code vocabulary — the open, author-authored channel (app-specific spellings; ADR-0112)
messagestring✅Readable error message
userMessagestringoptionalProducer-marked user-facing refusal text, verbatim. Present exactly when the producer opted in at throw time; consumers render it to end users and keep their generic substitution for anything unmarked. Status-agnostic; never replaces message.
refusaltrueoptionalProducer-declared: the 5xx this envelope carries is a deliberate refusal whose message is authored for the caller, so a boundary that reads the declaration keeps it verbatim (until the withhold arms read it, a declared refusal is still withheld). Absent (the default) on a declared fault, whose message is withheld from the body and logged for the operator; redundant on a 4xx. Presence is the declaration — true is the only value.
categorystringoptionalError category (e.g. validation, authorization)
httpStatusintegeroptionalHTTP status of the response carrying this error
detailsanyoptionalAdditional error context (e.g. field validation errors)
requestIdstringoptionalRequest ID for tracking

Nested Shape: InitiateChunkedUploadResponse.meta

PropertyTypeRequiredDescription
timestampstring✅
durationintegeroptionalServer-side processing duration in milliseconds
requestIdstringoptional
traceIdstringoptional

Nested Shape: InitiateChunkedUploadResponse.data

PropertyTypeRequiredDescription
uploadIdstring✅Multipart upload session ID
resumeTokenstring✅Opaque token for resuming interrupted uploads
fileIdstring✅Assigned file ID
totalChunksinteger✅Expected number of chunks
chunkSizeinteger✅Chunk size in bytes
expiresAtstring✅Upload session expiration timestamp

PresignedUrlResponse

Properties

PropertyTypeRequiredDescription
successboolean✅Operation success status
error{ code: Enum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>; declaredCode?: string; message: string; userMessage?: string; … }optionalError details if success is false
meta{ timestamp: string; duration?: integer; requestId?: string; traceId?: string }optionalResponse metadata
data{ uploadUrl: string; downloadUrl?: string; fileId: string; method: Enum<'PUT' | 'POST'>; … }✅

Nested Shape: PresignedUrlResponse.error

PropertyTypeRequiredDescription
codeEnum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>✅Error code (e.g. VALIDATION_ERROR; StandardErrorCode ∪ the ledger the serving side registers — ERROR_CODE_LEDGER for framework packages)
declaredCodestringoptionalThe producer-declared code, verbatim, when it is not a member of the closed code vocabulary — the open, author-authored channel (app-specific spellings; ADR-0112)
messagestring✅Readable error message
userMessagestringoptionalProducer-marked user-facing refusal text, verbatim. Present exactly when the producer opted in at throw time; consumers render it to end users and keep their generic substitution for anything unmarked. Status-agnostic; never replaces message.
refusaltrueoptionalProducer-declared: the 5xx this envelope carries is a deliberate refusal whose message is authored for the caller, so a boundary that reads the declaration keeps it verbatim (until the withhold arms read it, a declared refusal is still withheld). Absent (the default) on a declared fault, whose message is withheld from the body and logged for the operator; redundant on a 4xx. Presence is the declaration — true is the only value.
categorystringoptionalError category (e.g. validation, authorization)
httpStatusintegeroptionalHTTP status of the response carrying this error
detailsanyoptionalAdditional error context (e.g. field validation errors)
requestIdstringoptionalRequest ID for tracking

Nested Shape: PresignedUrlResponse.meta

PropertyTypeRequiredDescription
timestampstring✅
durationintegeroptionalServer-side processing duration in milliseconds
requestIdstringoptional
traceIdstringoptional

Nested Shape: PresignedUrlResponse.data

PropertyTypeRequiredDescription
uploadUrlstring✅PUT/POST URL for direct upload
downloadUrlstringoptionalPublic/Private preview URL
fileIdstring✅Temporary File ID
methodEnum<'PUT' | 'POST'>✅HTTP Method to use
headersRecord<string, string>optionalRequired headers for upload
expiresInnumber✅URL expiry in seconds (unit per AWS S3 presigned URL expiresIn (@aws-sdk/s3-request-presigner))

RawUploadResponse

Properties

PropertyTypeRequiredDescription
successboolean✅Operation success status
error{ code: Enum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>; declaredCode?: string; message: string; userMessage?: string; … }optionalError details if success is false
meta{ timestamp: string; duration?: integer; requestId?: string; traceId?: string }optionalResponse metadata
data{ key: string }✅

Nested Shape: RawUploadResponse.error

PropertyTypeRequiredDescription
codeEnum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>✅Error code (e.g. VALIDATION_ERROR; StandardErrorCode ∪ the ledger the serving side registers — ERROR_CODE_LEDGER for framework packages)
declaredCodestringoptionalThe producer-declared code, verbatim, when it is not a member of the closed code vocabulary — the open, author-authored channel (app-specific spellings; ADR-0112)
messagestring✅Readable error message
userMessagestringoptionalProducer-marked user-facing refusal text, verbatim. Present exactly when the producer opted in at throw time; consumers render it to end users and keep their generic substitution for anything unmarked. Status-agnostic; never replaces message.
refusaltrueoptionalProducer-declared: the 5xx this envelope carries is a deliberate refusal whose message is authored for the caller, so a boundary that reads the declaration keeps it verbatim (until the withhold arms read it, a declared refusal is still withheld). Absent (the default) on a declared fault, whose message is withheld from the body and logged for the operator; redundant on a 4xx. Presence is the declaration — true is the only value.
categorystringoptionalError category (e.g. validation, authorization)
httpStatusintegeroptionalHTTP status of the response carrying this error
detailsanyoptionalAdditional error context (e.g. field validation errors)
requestIdstringoptionalRequest ID for tracking

Nested Shape: RawUploadResponse.meta

PropertyTypeRequiredDescription
timestampstring✅
durationintegeroptionalServer-side processing duration in milliseconds
requestIdstringoptional
traceIdstringoptional

Nested Shape: RawUploadResponse.data

PropertyTypeRequiredDescription
keystring✅Storage key the bytes were written to

UploadChunkRequest

Properties

PropertyTypeRequiredDescription
uploadIdstring✅Multipart upload session ID
chunkIndexinteger✅Zero-based chunk index
resumeTokenstring✅Resume token from initiate response

UploadChunkResponse

Properties

PropertyTypeRequiredDescription
successboolean✅Operation success status
error{ code: Enum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>; declaredCode?: string; message: string; userMessage?: string; … }optionalError details if success is false
meta{ timestamp: string; duration?: integer; requestId?: string; traceId?: string }optionalResponse metadata
data{ chunkIndex: integer; eTag: string; bytesReceived: integer }✅

Nested Shape: UploadChunkResponse.error

PropertyTypeRequiredDescription
codeEnum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>✅Error code (e.g. VALIDATION_ERROR; StandardErrorCode ∪ the ledger the serving side registers — ERROR_CODE_LEDGER for framework packages)
declaredCodestringoptionalThe producer-declared code, verbatim, when it is not a member of the closed code vocabulary — the open, author-authored channel (app-specific spellings; ADR-0112)
messagestring✅Readable error message
userMessagestringoptionalProducer-marked user-facing refusal text, verbatim. Present exactly when the producer opted in at throw time; consumers render it to end users and keep their generic substitution for anything unmarked. Status-agnostic; never replaces message.
refusaltrueoptionalProducer-declared: the 5xx this envelope carries is a deliberate refusal whose message is authored for the caller, so a boundary that reads the declaration keeps it verbatim (until the withhold arms read it, a declared refusal is still withheld). Absent (the default) on a declared fault, whose message is withheld from the body and logged for the operator; redundant on a 4xx. Presence is the declaration — true is the only value.
categorystringoptionalError category (e.g. validation, authorization)
httpStatusintegeroptionalHTTP status of the response carrying this error
detailsanyoptionalAdditional error context (e.g. field validation errors)
requestIdstringoptionalRequest ID for tracking

Nested Shape: UploadChunkResponse.meta

PropertyTypeRequiredDescription
timestampstring✅
durationintegeroptionalServer-side processing duration in milliseconds
requestIdstringoptional
traceIdstringoptional

Nested Shape: UploadChunkResponse.data

PropertyTypeRequiredDescription
chunkIndexinteger✅Chunk index that was uploaded
eTagstring✅Chunk ETag for multipart completion
bytesReceivedinteger✅Bytes received for this chunk

UploadProgress

Properties

PropertyTypeRequiredDescription
successboolean✅Operation success status
error{ code: Enum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>; declaredCode?: string; message: string; userMessage?: string; … }optionalError details if success is false
meta{ timestamp: string; duration?: integer; requestId?: string; traceId?: string }optionalResponse metadata
data{ uploadId: string; fileId: string; filename: string; totalSize: integer; … }✅

Nested Shape: UploadProgress.error

PropertyTypeRequiredDescription
codeEnum<'VALIDATION_ERROR' | 'INVALID_FIELD' | 'MISSING_REQUIRED_FIELD' | …>✅Error code (e.g. VALIDATION_ERROR; StandardErrorCode ∪ the ledger the serving side registers — ERROR_CODE_LEDGER for framework packages)
declaredCodestringoptionalThe producer-declared code, verbatim, when it is not a member of the closed code vocabulary — the open, author-authored channel (app-specific spellings; ADR-0112)
messagestring✅Readable error message
userMessagestringoptionalProducer-marked user-facing refusal text, verbatim. Present exactly when the producer opted in at throw time; consumers render it to end users and keep their generic substitution for anything unmarked. Status-agnostic; never replaces message.
refusaltrueoptionalProducer-declared: the 5xx this envelope carries is a deliberate refusal whose message is authored for the caller, so a boundary that reads the declaration keeps it verbatim (until the withhold arms read it, a declared refusal is still withheld). Absent (the default) on a declared fault, whose message is withheld from the body and logged for the operator; redundant on a 4xx. Presence is the declaration — true is the only value.
categorystringoptionalError category (e.g. validation, authorization)
httpStatusintegeroptionalHTTP status of the response carrying this error
detailsanyoptionalAdditional error context (e.g. field validation errors)
requestIdstringoptionalRequest ID for tracking

Nested Shape: UploadProgress.meta

PropertyTypeRequiredDescription
timestampstring✅
durationintegeroptionalServer-side processing duration in milliseconds
requestIdstringoptional
traceIdstringoptional

Nested Shape: UploadProgress.data

PropertyTypeRequiredDescription
uploadIdstring✅Multipart upload session ID
fileIdstring✅Assigned file ID
filenamestring✅Original filename
totalSizeinteger✅Total file size in bytes
uploadedSizeinteger✅Bytes uploaded so far
totalChunksinteger✅Total expected chunks
uploadedChunksinteger✅Number of chunks uploaded
percentCompletenumber✅Upload progress percentage
statusEnum<'in_progress' | 'completing' | 'completed' | 'failed' | 'expired'>✅Current upload session status
startedAtstring✅Upload session start timestamp
expiresAtstring✅Session expiration timestamp

UploadScope

Storage scope an uploaded file is filed under

Allowed Values

  • user
  • tenant
  • private
  • temp
  • attachments

On this page

TypeScript UsageCompleteChunkedUploadRequestPropertiesNested Shape: CompleteChunkedUploadRequest.parts[number]CompleteChunkedUploadResponsePropertiesNested Shape: CompleteChunkedUploadResponse.errorNested Shape: CompleteChunkedUploadResponse.metaNested Shape: CompleteChunkedUploadResponse.dataCompleteUploadRequestPropertiesFileDownloadUrlResponsePropertiesNested Shape: FileDownloadUrlResponse.errorNested Shape: FileDownloadUrlResponse.metaNested Shape: FileDownloadUrlResponse.dataFileTypeValidationPropertiesFileUploadResponsePropertiesNested Shape: FileUploadResponse.errorNested Shape: FileUploadResponse.metaNested Shape: FileUploadResponse.dataGetPresignedUrlRequestPropertiesInitiateChunkedUploadRequestPropertiesInitiateChunkedUploadResponsePropertiesNested Shape: InitiateChunkedUploadResponse.errorNested Shape: InitiateChunkedUploadResponse.metaNested Shape: InitiateChunkedUploadResponse.dataPresignedUrlResponsePropertiesNested Shape: PresignedUrlResponse.errorNested Shape: PresignedUrlResponse.metaNested Shape: PresignedUrlResponse.dataRawUploadResponsePropertiesNested Shape: RawUploadResponse.errorNested Shape: RawUploadResponse.metaNested Shape: RawUploadResponse.dataUploadChunkRequestPropertiesUploadChunkResponsePropertiesNested Shape: UploadChunkResponse.errorNested Shape: UploadChunkResponse.metaNested Shape: UploadChunkResponse.dataUploadProgressPropertiesNested Shape: UploadProgress.errorNested Shape: UploadProgress.metaNested Shape: UploadProgress.dataUploadScopeAllowed Values