2026-07-13 14:59:50 +09:00
openapi : 3.2 .0
info :
title : Remora API
version : 1.0 .0
2026-07-14 11:50:10 +09:00
description : Mutable implementation contract for public job management and service-authenticated worker operations.
2026-07-19 02:00:47 +09:00
tags : [ ]
2026-07-13 14:59:50 +09:00
paths :
2026-07-19 02:00:47 +09:00
/internal/v1/attempts/{attempt_id}/activate:
2026-07-13 14:59:50 +09:00
post :
2026-07-19 02:00:47 +09:00
operationId : activateAttempt
2026-07-13 14:59:50 +09:00
parameters :
2026-07-19 02:00:47 +09:00
- $ref : "#/components/parameters/Parameters.AttemptId"
responses :
"200" :
description : The request has succeeded.
content :
application/json :
schema :
$ref : "#/components/schemas/ActivationResponse"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-13 14:59:50 +09:00
requestBody :
required : true
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/AttemptActivateRequest"
security :
- serviceAuth : [ ]
/internal/v1/attempts/{attempt_id}/checkpoint:
2026-07-13 14:59:50 +09:00
post :
2026-07-19 02:00:47 +09:00
operationId : persistAttemptCheckpoint
2026-07-13 14:59:50 +09:00
parameters :
2026-07-19 02:00:47 +09:00
- $ref : "#/components/parameters/Parameters.AttemptId"
2026-07-13 14:59:50 +09:00
responses :
2026-07-19 02:00:47 +09:00
"204" :
description : There is no content to send for this request, but the headers may be useful.
"409" :
description : The request conflicts with the current state of the server.
2026-07-13 14:59:50 +09:00
content :
2026-07-19 02:00:47 +09:00
application/problem+json :
2026-07-13 14:59:50 +09:00
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/ApiError"
2026-07-13 14:59:50 +09:00
default :
2026-07-19 02:00:47 +09:00
description : Structured error with user-safe detail only.
2026-07-13 14:59:50 +09:00
content :
2026-07-19 02:00:47 +09:00
application/problem+json :
2026-07-13 14:59:50 +09:00
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/ApiError"
2026-07-14 18:12:28 +09:00
requestBody :
required : true
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/AttemptCheckpointRequest"
security :
- serviceAuth : [ ]
/internal/v1/attempts/{attempt_id}/outcome:
2026-07-14 18:12:28 +09:00
post :
2026-07-19 02:00:47 +09:00
operationId : reportAttemptOutcome
2026-07-14 18:12:28 +09:00
parameters :
2026-07-19 02:00:47 +09:00
- $ref : "#/components/parameters/Parameters.AttemptId"
responses :
"200" :
description : The request has succeeded.
content :
application/json :
schema :
$ref : "#/components/schemas/JobPhaseProjection"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-14 18:12:28 +09:00
requestBody :
required : true
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/AttemptOutcomeRequest"
security :
- serviceAuth : [ ]
/internal/v1/attempts/{attempt_id}/progress:
2026-07-14 18:12:28 +09:00
post :
2026-07-19 02:00:47 +09:00
operationId : reportAttemptProgress
2026-07-14 18:12:28 +09:00
parameters :
2026-07-19 02:00:47 +09:00
- $ref : "#/components/parameters/Parameters.AttemptId"
2026-07-14 18:12:28 +09:00
responses :
2026-07-19 02:00:47 +09:00
"204" :
description : There is no content to send for this request, but the headers may be useful.
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/AttemptProgressRequest"
security :
- serviceAuth : [ ]
/internal/v1/attempts/{attempt_id}/renew:
post :
operationId : renewAttempt
parameters :
- $ref : "#/components/parameters/Parameters.AttemptId"
responses :
"200" :
description : The request has succeeded.
2026-07-14 18:12:28 +09:00
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/LeaseProjection"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-14 18:12:28 +09:00
default :
2026-07-19 02:00:47 +09:00
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/AttemptRenewRequest"
security :
- serviceAuth : [ ]
/internal/v1/attempts/{attempt_id}/resolved-source:
post :
operationId : pinAttemptResolvedSource
parameters :
- $ref : "#/components/parameters/Parameters.AttemptId"
responses :
"204" :
description : There is no content to send for this request, but the headers may be useful.
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/AttemptResolvedSourceRequest"
security :
- serviceAuth : [ ]
/internal/v1/attempts/{attempt_id}/staging/multipart:
post :
operationId : registerAttemptStagingMultipart
parameters :
- $ref : "#/components/parameters/Parameters.AttemptId"
responses :
"204" :
description : There is no content to send for this request, but the headers may be useful.
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/AttemptStagingMultipartRequest"
security :
- serviceAuth : [ ]
/internal/v1/attempts/{attempt_id}/staging/object:
post :
operationId : registerAttemptStagingObject
parameters :
- $ref : "#/components/parameters/Parameters.AttemptId"
responses :
"204" :
description : There is no content to send for this request, but the headers may be useful.
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/AttemptStagingObjectRequest"
security :
- serviceAuth : [ ]
/internal/v1/attempts/{attempt_id}/staging/write-intent:
post :
operationId : registerAttemptStagingWriteIntent
parameters :
- $ref : "#/components/parameters/Parameters.AttemptId"
responses :
"204" :
description : There is no content to send for this request, but the headers may be useful.
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/AttemptStagingWriteIntentRequest"
security :
- serviceAuth : [ ]
/internal/v1/attempts/{attempt_id}/stop:
post :
operationId : stopAttempt
parameters :
- $ref : "#/components/parameters/Parameters.AttemptId"
responses :
"204" :
description : There is no content to send for this request, but the headers may be useful.
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/AttemptStopRequest"
security :
- serviceAuth : [ ]
/internal/v1/jobs/{job_id}/claim:
post :
operationId : claimJob
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
responses :
"200" :
description : The request has succeeded.
content :
application/json :
schema :
$ref : "#/components/schemas/ClaimResponse"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/ClaimRequest"
security :
- serviceAuth : [ ]
2026-07-13 14:59:50 +09:00
/v1/deletions/{operation_id}:
get :
operationId : getDeletionOperation
2026-07-19 02:00:47 +09:00
parameters :
- name : operation_id
in : path
required : true
schema :
$ref : "#/components/schemas/OpaqueId"
2026-07-13 14:59:50 +09:00
responses :
2026-07-19 02:00:47 +09:00
"200" :
description : The request has succeeded.
2026-07-13 14:59:50 +09:00
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/DeletionOperation"
"404" :
description : The server cannot find the requested resource.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-13 14:59:50 +09:00
default :
2026-07-19 02:00:47 +09:00
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-18 00:16:21 +09:00
/v1/event-tickets :
post :
operationId : createEventTicket
2026-07-19 02:00:47 +09:00
description : Creates an independent short-lived, single-use browser WebSocket credential bound to the authenticated principal and request origin. This ephemeral authentication exchange does not enter the public domain mutation idempotency ledger.
parameters : [ ]
2026-07-18 00:16:21 +09:00
responses :
2026-07-19 02:00:47 +09:00
"201" :
description : The request has succeeded and a new resource has been created as a result.
2026-07-18 00:16:21 +09:00
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/EventTicket"
2026-07-18 00:16:21 +09:00
default :
2026-07-19 02:00:47 +09:00
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-13 14:59:50 +09:00
/v1/events :
get :
operationId : connectEvents
parameters :
2026-07-18 00:16:21 +09:00
- name : ticket
in : query
2026-07-19 02:00:47 +09:00
required : false
2026-07-18 00:16:21 +09:00
description : Short-lived single-use browser credential created by createEventTicket. Native clients may use OIDC bearer authentication instead.
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/OpaqueId"
2026-07-13 14:59:50 +09:00
- name : cursor
in : query
2026-07-19 02:00:47 +09:00
required : false
2026-07-13 14:59:50 +09:00
description : Opaque authorization-bound replay cursor from an HTTP snapshot or prior frame.
schema :
type : string
minLength : 16
maxLength : 2048
responses :
2026-07-19 02:00:47 +09:00
"101" :
description : Informational
2026-07-13 14:59:50 +09:00
default :
2026-07-19 02:00:47 +09:00
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-13 14:59:50 +09:00
security :
2026-07-19 02:00:47 +09:00
- oidc : [ ]
- eventTicket : [ ]
/v1/jobs :
get :
operationId : listJobs
parameters :
- $ref : "#/components/parameters/Parameters.Cursor"
- $ref : "#/components/parameters/Parameters.Limit"
- name : include_deleted
in : query
required : false
schema :
type : boolean
2026-07-13 14:59:50 +09:00
responses :
2026-07-19 02:00:47 +09:00
"200" :
description : The request has succeeded.
2026-07-13 14:59:50 +09:00
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/JobPage"
2026-07-13 14:59:50 +09:00
default :
2026-07-19 02:00:47 +09:00
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-13 14:59:50 +09:00
post :
2026-07-19 02:00:47 +09:00
operationId : submitJob
parameters :
- $ref : "#/components/parameters/Parameters.IdempotencyKey"
2026-07-13 14:59:50 +09:00
responses :
2026-07-19 02:00:47 +09:00
"202" :
description : The request has been accepted for processing, but processing has not yet completed.
headers :
Idempotency-Expires-At :
required : false
description : Earliest time at which the server may forget this key.
schema :
type : string
format : http-date
2026-07-14 19:04:00 +09:00
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/Job"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-13 14:59:50 +09:00
default :
2026-07-19 02:00:47 +09:00
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-14 18:12:28 +09:00
requestBody :
required : true
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/JobSubmission"
/v1/jobs/{job_id}:
get :
operationId : getJob
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
2026-07-14 18:12:28 +09:00
responses :
2026-07-19 02:00:47 +09:00
"200" :
description : The request has succeeded.
2026-07-14 18:12:28 +09:00
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/JobResource"
"404" :
description : The server cannot find the requested resource.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-14 18:12:28 +09:00
default :
2026-07-19 02:00:47 +09:00
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/jobs/{job_id}/attempts:
get :
operationId : listJobAttempts
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
- $ref : "#/components/parameters/Parameters.Cursor"
- $ref : "#/components/parameters/Parameters.Limit"
2026-07-17 18:51:44 +09:00
responses :
2026-07-19 02:00:47 +09:00
"200" :
description : The request has succeeded.
2026-07-13 14:59:50 +09:00
content :
application/json :
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/AttemptPage"
"404" :
description : The server cannot find the requested resource.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
2026-07-13 14:59:50 +09:00
default :
2026-07-19 02:00:47 +09:00
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/jobs/{job_id}/cancel:
post :
operationId : cancelJob
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
- $ref : "#/components/parameters/Parameters.IdempotencyKey"
responses :
"202" :
description : The request has been accepted for processing, but processing has not yet completed.
headers :
Idempotency-Expires-At :
required : false
description : Earliest time at which the server may forget this key.
schema :
type : string
format : http-date
content :
application/json :
schema :
$ref : "#/components/schemas/Job"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/jobs/{job_id}/hard-delete:
post :
operationId : hardDeleteJob
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
- $ref : "#/components/parameters/Parameters.IdempotencyKey"
responses :
"202" :
description : The request has been accepted for processing, but processing has not yet completed.
headers :
Idempotency-Expires-At :
required : false
description : Earliest time at which the server may forget this key.
schema :
type : string
format : http-date
content :
application/json :
schema :
$ref : "#/components/schemas/DeletionOperation"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/jobs/{job_id}/restore:
post :
operationId : restoreJob
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
- $ref : "#/components/parameters/Parameters.IdempotencyKey"
responses :
"200" :
description : The request has succeeded.
headers :
Idempotency-Expires-At :
required : false
description : Earliest time at which the server may forget this key.
schema :
type : string
format : http-date
content :
application/json :
schema :
$ref : "#/components/schemas/Job"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/jobs/{job_id}/result:
get :
operationId : getJobResult
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
responses :
"200" :
description : The request has succeeded.
content :
application/json :
schema :
$ref : "#/components/schemas/ResultDescriptor"
"404" :
description : The server cannot find the requested resource.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/jobs/{job_id}/result/members:
get :
operationId : listJobResultMembers
description : Enumerates members only from the visible committed result.
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
- $ref : "#/components/parameters/Parameters.Cursor"
- $ref : "#/components/parameters/Parameters.Limit"
responses :
"200" :
description : The request has succeeded.
content :
application/json :
schema :
$ref : "#/components/schemas/ResultMemberPage"
"404" :
description : The server cannot find the requested resource.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/jobs/{job_id}/result/members/{member_id}/content:
get :
operationId : accessJobResultMember
description : Revalidates current authorization and returns a non-cacheable time-limited URL for the exact committed member identity.
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
- name : member_id
in : path
required : true
schema :
$ref : "#/components/schemas/OpaqueId"
responses :
"200" :
description : The request has succeeded.
headers :
Cache-Control :
required : true
description : Prevents caching of the credential-bearing response.
schema :
type : string
enum :
- no -store
content :
application/json :
schema :
$ref : "#/components/schemas/ResultMemberAccess"
"404" :
description : The server cannot find the requested resource.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/jobs/{job_id}/revoke:
post :
operationId : revokeJobExecutionGrant
description : Administrator-only revocation of an accepted execution grant.
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
- $ref : "#/components/parameters/Parameters.IdempotencyKey"
responses :
"202" :
description : The request has been accepted for processing, but processing has not yet completed.
headers :
Idempotency-Expires-At :
required : false
description : Earliest time at which the server may forget this key.
schema :
type : string
format : http-date
content :
application/json :
schema :
$ref : "#/components/schemas/Job"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/jobs/{job_id}/soft-delete:
post :
operationId : softDeleteJob
parameters :
- $ref : "#/components/parameters/Parameters.JobId"
- $ref : "#/components/parameters/Parameters.IdempotencyKey"
responses :
"200" :
description : The request has succeeded.
headers :
Idempotency-Expires-At :
required : false
description : Earliest time at which the server may forget this key.
schema :
type : string
format : http-date
content :
application/json :
schema :
$ref : "#/components/schemas/Job"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/source-credentials :
get :
operationId : listSourceCredentials
parameters :
- $ref : "#/components/parameters/Parameters.Cursor"
- $ref : "#/components/parameters/Parameters.Limit"
responses :
"200" :
description : The request has succeeded.
content :
application/json :
schema :
$ref : "#/components/schemas/SourceCredentialPage"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
post :
operationId : createSourceCredential
parameters :
- $ref : "#/components/parameters/Parameters.IdempotencyKey"
responses :
"201" :
description : The request has succeeded and a new resource has been created as a result.
headers :
Idempotency-Expires-At :
required : false
description : Earliest time at which the server may forget this key.
schema :
type : string
format : http-date
content :
application/json :
schema :
$ref : "#/components/schemas/SourceCredential"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/SourceCredentialCreate"
/v1/source-credentials/{credential_id}:
get :
operationId : getSourceCredential
parameters :
- $ref : "#/components/parameters/Parameters.CredentialIdParameter"
responses :
"200" :
description : The request has succeeded.
content :
application/json :
schema :
$ref : "#/components/schemas/SourceCredential"
"404" :
description : The server cannot find the requested resource.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/source-credentials/{credential_id}/revoke:
post :
operationId : revokeSourceCredential
parameters :
- $ref : "#/components/parameters/Parameters.CredentialIdParameter"
- $ref : "#/components/parameters/Parameters.IdempotencyKey"
responses :
"200" :
description : The request has succeeded.
headers :
Idempotency-Expires-At :
required : false
description : Earliest time at which the server may forget this key.
schema :
type : string
format : http-date
content :
application/json :
schema :
$ref : "#/components/schemas/SourceCredential"
"404" :
description : The server cannot find the requested resource.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
/v1/source-credentials/{credential_id}/versions:
post :
operationId : rotateSourceCredential
parameters :
- $ref : "#/components/parameters/Parameters.CredentialIdParameter"
- $ref : "#/components/parameters/Parameters.IdempotencyKey"
responses :
"201" :
description : The request has succeeded and a new resource has been created as a result.
headers :
Idempotency-Expires-At :
required : false
description : Earliest time at which the server may forget this key.
schema :
type : string
format : http-date
content :
application/json :
schema :
$ref : "#/components/schemas/SourceCredential"
"404" :
description : The server cannot find the requested resource.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
"409" :
description : The request conflicts with the current state of the server.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
default :
description : Structured error with user-safe detail only.
content :
application/problem+json :
schema :
$ref : "#/components/schemas/ApiError"
requestBody :
required : true
content :
application/json :
schema :
$ref : "#/components/schemas/SourceCredentialRotate"
2026-07-13 14:59:50 +09:00
components :
parameters :
2026-07-19 02:00:47 +09:00
Parameters.AttemptId :
name : attempt_id
in : path
required : true
schema :
$ref : "#/components/schemas/OpaqueId"
Parameters.CredentialIdParameter :
name : credential_id
in : path
required : true
schema :
$ref : "#/components/schemas/CredentialId"
Parameters.Cursor :
name : cursor
in : query
required : false
schema :
type : string
minLength : 16
maxLength : 2048
Parameters.IdempotencyKey :
name : idempotency-key
2026-07-13 14:59:50 +09:00
in : header
required : true
description : Subject- and operation-scoped key retained for at least 24 hours.
schema :
type : string
2026-07-19 02:00:47 +09:00
pattern : ^[A-Za-z0-9._~-]{16,128}$
Parameters.JobId :
name : job_id
in : path
required : true
2026-07-13 14:59:50 +09:00
schema :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/OpaqueId"
Parameters.Limit :
2026-07-13 14:59:50 +09:00
name : limit
in : query
2026-07-19 02:00:47 +09:00
required : false
2026-07-13 14:59:50 +09:00
schema :
type : integer
minimum : 1
maximum : 200
default : 50
schemas :
2026-07-19 02:00:47 +09:00
ActivationResponse :
2026-07-13 14:59:50 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- authority
- execution
- lease
2026-07-13 14:59:50 +09:00
properties :
2026-07-19 02:00:47 +09:00
authority :
$ref : "#/components/schemas/AttemptAuthority"
execution :
$ref : "#/components/schemas/ExecutionEnvelope"
lease :
$ref : "#/components/schemas/LeaseProjection"
ApiError :
2026-07-14 11:50:10 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- code
- message
- request_id
2026-07-14 11:50:10 +09:00
properties :
2026-07-19 02:00:47 +09:00
code :
2026-07-14 11:50:10 +09:00
type : string
2026-07-19 02:00:47 +09:00
enum :
- invalid_request
- unauthenticated
- forbidden
- not_found
- idempotency_conflict
- precondition_failed
- cursor_invalid
- cursor_expired
- rate_limited
- unavailable
- internal
message :
2026-07-14 11:50:10 +09:00
type : string
2026-07-19 02:00:47 +09:00
maxLength : 500
request_id :
$ref : "#/components/schemas/OpaqueId"
fields :
2026-07-14 18:12:28 +09:00
type : array
items :
2026-07-19 02:00:47 +09:00
type : object
properties :
pointer :
type : string
maxLength : 500
code :
type : string
maxLength : 100
required :
- pointer
- code
maxItems : 100
AttemptActivateRequest :
type : object
required :
- operation_id
- fence
- worker_incarnation
properties :
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
AttemptAuthority :
type : object
required :
- attempt_id
- fence
- worker_incarnation
properties :
attempt_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
AttemptCheckpointRequest :
type : object
required :
- operation_id
- fence
- worker_incarnation
- checkpoint_ref
- resolved_source_id
- validated_bytes
- validated_members
properties :
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
checkpoint_ref :
$ref : "#/components/schemas/CheckpointDescriptorRef"
resolved_source_id :
$ref : "#/components/schemas/OpaqueId"
validated_bytes :
type : integer
minimum : 0
validated_members :
type : integer
minimum : 0
staging_multipart :
$ref : "#/components/schemas/StagingMultipartIdentity"
AttemptMutation :
type : object
required :
- operation_id
- fence
- worker_incarnation
properties :
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
AttemptOutcomeRequest :
type : object
required :
- operation_id
- fence
- worker_incarnation
- outcome
properties :
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
outcome :
oneOf :
- type : object
properties :
kind :
type : string
enum :
- success
result :
$ref : "#/components/schemas/ResultDescriptor"
required :
- kind
- result
- type : object
properties :
kind :
type : string
enum :
- failure
failure :
$ref : "#/components/schemas/AttemptRuntimeFailure"
required :
- kind
- failure
AttemptPage :
type : object
required :
- items
- next_cursor
properties :
items :
2026-07-14 18:12:28 +09:00
type : array
items :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/AttemptRecord"
next_cursor :
anyOf :
- type : string
- type : "null"
AttemptProgressRequest :
2026-07-13 14:59:50 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- operation_id
- fence
- worker_incarnation
- progress
2026-07-13 14:59:50 +09:00
properties :
2026-07-19 02:00:47 +09:00
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
progress :
$ref : "#/components/schemas/ProgressValue"
AttemptRecord :
type : object
required :
- id
- fence
- worker_incarnation
- state
- progress
- result
- failure
- created_at
- updated_at
properties :
id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
state :
2026-07-13 14:59:50 +09:00
type : string
2026-07-19 02:00:47 +09:00
enum :
- AttemptAuthorized
- AttemptExecuting
- AttemptStopped
- AttemptCommitted
progress :
oneOf :
- $ref : "#/components/schemas/Progress"
- type : "null"
result :
oneOf :
- $ref : "#/components/schemas/ResultDescriptor"
- type : "null"
failure :
oneOf :
- $ref : "#/components/schemas/JobFailure"
- type : "null"
created_at :
2026-07-13 14:59:50 +09:00
type : string
2026-07-19 02:00:47 +09:00
format : date-time
updated_at :
type : string
format : date-time
AttemptRenewRequest :
type : object
required :
- operation_id
- fence
- worker_incarnation
properties :
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
AttemptResolvedSourceRequest :
type : object
required :
- operation_id
- fence
- worker_incarnation
- resolved_source_ref
properties :
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
resolved_source_ref :
$ref : "#/components/schemas/ResolvedSourceDescriptorRef"
AttemptRuntimeFailure :
type : object
required :
- class
- message
properties :
class :
type : string
enum :
- authorization
- source_not_found
- source_changed
- transient_source
- transient_target
- integrity
- capacity
- internal
message :
type : string
maxLength : 500
safe_details :
type : object
unevaluatedProperties :
$ref : "#/components/schemas/SafeDetailValue"
AttemptStagingMultipartRequest :
type : object
required :
- operation_id
- fence
- worker_incarnation
- multipart
properties :
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
multipart :
$ref : "#/components/schemas/StagingMultipartIdentity"
AttemptStagingObjectRequest :
type : object
required :
- operation_id
- fence
- worker_incarnation
- object
properties :
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
object :
$ref : "#/components/schemas/StagingObjectIdentity"
completed_upload_id :
2026-07-13 14:59:50 +09:00
type : string
minLength : 1
2026-07-19 02:00:47 +09:00
AttemptStagingWriteIntentRequest :
2026-07-14 18:12:28 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- operation_id
- fence
- worker_incarnation
- intent
2026-07-14 18:12:28 +09:00
properties :
2026-07-19 02:00:47 +09:00
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
intent :
$ref : "#/components/schemas/StagingWriteIntent"
AttemptStopRequest :
2026-07-14 18:12:28 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- operation_id
- fence
- worker_incarnation
2026-07-14 18:12:28 +09:00
properties :
2026-07-19 02:00:47 +09:00
operation_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
BasicAuthCredentialCreate :
2026-07-14 18:12:28 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- label
- kind
- material
2026-07-14 18:12:28 +09:00
properties :
2026-07-13 14:59:50 +09:00
label :
type : string
minLength : 1
maxLength : 200
2026-07-19 02:00:47 +09:00
kind :
type : string
enum :
- basic_auth
material :
$ref : "#/components/schemas/BasicAuthMaterial"
2026-07-14 19:04:00 +09:00
BasicAuthMaterial :
2026-07-14 18:12:28 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- username
- password
2026-07-14 19:04:00 +09:00
properties :
username :
type : string
minLength : 1
maxLength : 1024
password :
type : string
minLength : 1
maxLength : 16384
2026-07-19 02:00:47 +09:00
BearerTokenCredentialCreate :
2026-07-14 19:04:00 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- label
- kind
- material
2026-07-14 19:04:00 +09:00
properties :
2026-07-19 02:00:47 +09:00
label :
2026-07-14 19:04:00 +09:00
type : string
minLength : 1
2026-07-19 02:00:47 +09:00
maxLength : 200
kind :
type : string
enum :
- bearer_token
material :
$ref : "#/components/schemas/TokenMaterial"
BucketName :
type : string
pattern : ^(?!.*\.\.)[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
CheckpointDescriptorRef :
type : object
required :
- id
- kind
- schema_version
- byte_length
- checksum
properties :
id :
$ref : "#/components/schemas/OpaqueId"
kind :
type : string
enum :
- checkpoint
schema_version :
type : integer
minimum : 1
byte_length :
type : integer
minimum : 0
item_count :
type : integer
minimum : 0
checksum :
$ref : "#/components/schemas/Sha256Digest"
CheckpointProjection :
type : object
required :
- reusable
- validated_bytes
- validated_members
properties :
reusable :
type : boolean
validated_bytes :
type : integer
minimum : 0
validated_members :
type : integer
minimum : 0
ClaimRequest :
type : object
required :
- operation_id
- worker_incarnation
properties :
operation_id :
$ref : "#/components/schemas/OpaqueId"
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
ClaimResponse :
type : object
required :
- authority
- execution
properties :
authority :
$ref : "#/components/schemas/AttemptAuthority"
execution :
$ref : "#/components/schemas/ExecutionEnvelope"
CredentialGrantVersion :
type : object
required :
- credential_id
- version_id
properties :
credential_id :
$ref : "#/components/schemas/CredentialId"
version_id :
$ref : "#/components/schemas/CredentialVersionId"
CredentialId :
type : string
pattern : ^[A-Za-z0-9][A-Za-z0-9_-]{7,127}$
description : Owner-authorized source credential registry identifier.
CredentialMaterial :
oneOf :
- $ref : "#/components/schemas/BasicAuthMaterial"
- $ref : "#/components/schemas/TokenMaterial"
- $ref : "#/components/schemas/HttpHeadersMaterial"
- $ref : "#/components/schemas/ObjectStoreCredentialMaterial"
description : Write-only material whose closed shape must match the credential kind. Values are never returned or logged.
CredentialVersionId :
type : string
pattern : ^[A-Za-z0-9][A-Za-z0-9_-]{7,127}$
description : Immutable application credential-version identifier; backend secret-store coordinates are never exposed.
DeletionChanged :
type : object
required :
- kind
- job_id
- operation_id
- state
properties :
kind :
type : string
enum :
- deletion_changed
job_id :
$ref : "#/components/schemas/OpaqueId"
operation_id :
$ref : "#/components/schemas/OpaqueId"
state :
type : string
enum :
- queued
- running
- retry_wait
- blocked
- completed
allOf :
- $ref : "#/components/schemas/EventBase"
DeletionOperation :
type : object
required :
- id
- job_id
- state
- problem
- created_at
- updated_at
properties :
id :
$ref : "#/components/schemas/OpaqueId"
job_id :
$ref : "#/components/schemas/OpaqueId"
state :
type : string
enum :
- queued
- running
- retry_wait
- blocked
- completed
problem :
oneOf :
- $ref : "#/components/schemas/DeletionProblem"
- type : "null"
created_at :
type : string
format : date-time
updated_at :
type : string
format : date-time
DeletionProblem :
type : object
required :
- class
- message
properties :
class :
type : string
enum :
- authorization
- target_unavailable
- configuration
- internal
message :
type : string
maxLength : 500
DurableDescriptorRef :
type : object
required :
- id
- kind
- schema_version
- byte_length
- checksum
properties :
id :
$ref : "#/components/schemas/OpaqueId"
kind :
type : string
enum :
- resolved_source
- checkpoint
schema_version :
type : integer
minimum : 1
byte_length :
type : integer
minimum : 0
item_count :
type : integer
minimum : 0
checksum :
$ref : "#/components/schemas/Sha256Digest"
EventAttempt :
type : object
required :
- attempt_id
- fence
properties :
attempt_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
EventBase :
type : object
required :
- schema_version
- event_id
- sequence
- cursor
- occurred_at
properties :
schema_version :
type : number
enum :
- 1
event_id :
$ref : "#/components/schemas/OpaqueId"
sequence :
type : integer
minimum : 1
cursor :
$ref : "#/components/schemas/EventCursor"
occurred_at :
type : string
format : date-time
EventCursor :
type : string
minLength : 16
maxLength : 2048
EventFrame :
type : object
oneOf :
- $ref : "#/components/schemas/JobChanged"
- $ref : "#/components/schemas/DeletionChanged"
- $ref : "#/components/schemas/ResyncRequired"
- $ref : "#/components/schemas/Heartbeat"
discriminator :
propertyName : kind
mapping :
job_changed : "#/components/schemas/JobChanged"
deletion_changed : "#/components/schemas/DeletionChanged"
resync_required : "#/components/schemas/ResyncRequired"
heartbeat : "#/components/schemas/Heartbeat"
EventProgress :
type : object
required :
- attempt_id
- fence
- completed_bytes
- completed_members
properties :
attempt_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
completed_bytes :
type : integer
minimum : 0
total_bytes :
anyOf :
- type : integer
- type : "null"
minimum : 0
completed_members :
type : integer
minimum : 0
total_members :
anyOf :
- type : integer
- type : "null"
minimum : 0
EventTicket :
type : object
required :
- ticket
- expires_at
properties :
ticket :
$ref : "#/components/schemas/OpaqueId"
expires_at :
type : string
format : date-time
ExecutionEnvelope :
type : object
required :
- id
- job_id
- attempt_id
- fence
- worker_incarnation
- source
- sensitive_source_ref
- credential_version
- resolved_source_ref
- target
- staging_target
- execution_grant_ref
- checkpoint_ref
properties :
id :
$ref : "#/components/schemas/OpaqueId"
job_id :
$ref : "#/components/schemas/OpaqueId"
attempt_id :
$ref : "#/components/schemas/OpaqueId"
fence :
type : integer
minimum : 1
worker_incarnation :
$ref : "#/components/schemas/OpaqueId"
source :
$ref : "#/components/schemas/SourceProjection"
sensitive_source_ref :
$ref : "#/components/schemas/OpaqueId"
description : Opaque grant-bound reference to the complete accepted source input; credential_version identifies any pinned credential separately.
credential_version :
oneOf :
- $ref : "#/components/schemas/CredentialGrantVersion"
- type : "null"
resolved_source_ref :
oneOf :
- $ref : "#/components/schemas/DurableDescriptorRef"
- type : "null"
target :
$ref : "#/components/schemas/Target"
staging_target :
$ref : "#/components/schemas/StagingTarget"
execution_grant_ref :
$ref : "#/components/schemas/OpaqueId"
checkpoint_ref :
oneOf :
- $ref : "#/components/schemas/DurableDescriptorRef"
- type : "null"
Heartbeat :
type : object
required :
- kind
properties :
kind :
type : string
enum :
- heartbeat
allOf :
- $ref : "#/components/schemas/EventBase"
HttpHeadersCredentialCreate :
type : object
required :
- label
- kind
- material
properties :
label :
type : string
minLength : 1
maxLength : 200
kind :
type : string
enum :
- http_headers
material :
$ref : "#/components/schemas/HttpHeadersMaterial"
2026-07-14 19:04:00 +09:00
HttpHeadersMaterial :
type : object
2026-07-19 02:00:47 +09:00
required :
- headers
2026-07-14 19:04:00 +09:00
properties :
headers :
type : object
2026-07-19 02:00:47 +09:00
unevaluatedProperties :
2026-07-14 19:04:00 +09:00
type : string
description : Canonical lowercase end-to-end headers. Connection-nominated and routing, framing, cookie, proxy, and authentication headers are rejected.
2026-07-19 02:00:47 +09:00
HttpSourceProjection :
type : object
required :
- kind
- display_url
- result_path
properties :
kind :
type : string
enum :
- http
display_url :
type : string
format : uri
maxLength : 8192
description : Sanitized URL without userinfo, sensitive query values, or fragments.
result_path :
$ref : "#/components/schemas/ResultPath"
credential_id :
$ref : "#/components/schemas/CredentialId"
HttpSourceSubmission :
type : object
required :
- kind
- url
- result_path
properties :
kind :
type : string
enum :
- http
url :
type : string
format : uri
maxLength : 8192
description : Sensitive execution input. Public projections expose only display_url.
result_path :
$ref : "#/components/schemas/ResultPath"
credential_id :
$ref : "#/components/schemas/CredentialId"
HuggingFaceCredentialCreate :
type : object
required :
- label
- kind
- material
properties :
label :
type : string
minLength : 1
maxLength : 200
kind :
type : string
enum :
- hugging_face
material :
$ref : "#/components/schemas/TokenMaterial"
HuggingFaceRepositoryId :
type : string
pattern : ^[A-Za-z0-9._-]+/[A-Za-z0-9._-]+$
HuggingFaceSelection :
type : object
properties :
paths :
type : array
items :
$ref : "#/components/schemas/ResultPath"
maxItems : 10000
prefixes :
type : array
items :
$ref : "#/components/schemas/ResultPath"
maxItems : 10000
HuggingFaceSourceProjection :
type : object
required :
- kind
- repository_type
- repository_id
- revision
properties :
kind :
type : string
enum :
- hugging_face
repository_type :
type : string
enum :
- model
- dataset
- space
repository_id :
$ref : "#/components/schemas/HuggingFaceRepositoryId"
revision :
type : string
minLength : 1
maxLength : 256
selection :
$ref : "#/components/schemas/HuggingFaceSelection"
credential_id :
$ref : "#/components/schemas/CredentialId"
HuggingFaceSourceSubmission :
type : object
required :
- kind
- repository_type
- repository_id
- revision
properties :
kind :
type : string
enum :
- hugging_face
repository_type :
type : string
enum :
- model
- dataset
- space
repository_id :
$ref : "#/components/schemas/HuggingFaceRepositoryId"
revision :
type : string
minLength : 1
maxLength : 256
selection :
$ref : "#/components/schemas/HuggingFaceSelection"
credential_id :
$ref : "#/components/schemas/CredentialId"
Job :
type : object
required :
- resource_kind
- id
- owner
- label
- revision
- phase
- lifecycle
- source
- target
- authoritative_attempt
- progress
- checkpoint
- result
- failure
- created_at
- updated_at
- event_cursor
properties :
resource_kind :
type : string
enum :
- job
id :
$ref : "#/components/schemas/OpaqueId"
owner :
$ref : "#/components/schemas/PrincipalId"
label :
anyOf :
- type : string
- type : "null"
minLength : 1
maxLength : 200
revision :
type : integer
minimum : 1
phase :
$ref : "#/components/schemas/JobPhase"
lifecycle :
$ref : "#/components/schemas/JobLifecycle"
source :
$ref : "#/components/schemas/SourceProjection"
target :
$ref : "#/components/schemas/Target"
authoritative_attempt :
oneOf :
- $ref : "#/components/schemas/AttemptAuthority"
- type : "null"
progress :
oneOf :
- $ref : "#/components/schemas/Progress"
- type : "null"
checkpoint :
oneOf :
- $ref : "#/components/schemas/CheckpointProjection"
- type : "null"
result :
oneOf :
- $ref : "#/components/schemas/ResultDescriptor"
- type : "null"
failure :
oneOf :
- $ref : "#/components/schemas/JobFailure"
- type : "null"
created_at :
type : string
format : date-time
updated_at :
type : string
format : date-time
event_cursor :
type : string
minLength : 16
JobChanged :
type : object
required :
- kind
- job_id
- job_revision
- phase
- lifecycle
- authoritative_attempt
- progress
properties :
kind :
type : string
enum :
- job_changed
job_id :
$ref : "#/components/schemas/OpaqueId"
job_revision :
type : integer
minimum : 1
phase :
$ref : "#/components/schemas/JobPhase"
lifecycle :
$ref : "#/components/schemas/JobLifecycle"
authoritative_attempt :
oneOf :
- $ref : "#/components/schemas/EventAttempt"
- type : "null"
progress :
oneOf :
- $ref : "#/components/schemas/EventProgress"
- type : "null"
allOf :
- $ref : "#/components/schemas/EventBase"
JobFailure :
oneOf :
- $ref : "#/components/schemas/PermanentJobFailure"
- $ref : "#/components/schemas/RetryableJobFailure"
JobLifecycle :
type : string
enum :
- visible
- soft_deleted
- hard_deleting
- hard_deleted
JobPage :
type : object
required :
- items
- next_cursor
- event_cursor
- management_capabilities
properties :
items :
type : array
items :
$ref : "#/components/schemas/JobResource"
next_cursor :
anyOf :
- type : string
- type : "null"
event_cursor :
type : string
minLength : 16
management_capabilities :
$ref : "#/components/schemas/ManagementCapabilities"
JobPhase :
type : string
enum :
- Queued
- Running
- RetryWait
- Cancelling
- Succeeded
- Failed
- Cancelled
JobPhaseProjection :
type : object
required :
- phase
properties :
phase :
$ref : "#/components/schemas/JobPhase"
JobResource :
type : object
oneOf :
- $ref : "#/components/schemas/Job"
- $ref : "#/components/schemas/JobTombstone"
discriminator :
propertyName : resource_kind
mapping :
job : "#/components/schemas/Job"
tombstone : "#/components/schemas/JobTombstone"
JobSubmission :
type : object
required :
- source
properties :
source :
$ref : "#/components/schemas/SourceSubmission"
target :
$ref : "#/components/schemas/TargetOverride"
description : Fields omitted here are taken from the configured default target before authorization.
label :
type : string
minLength : 1
maxLength : 200
JobTombstone :
type : object
required :
- resource_kind
- id
- owner
- target
- terminal_phase
- deletion_operation_id
- created_at
- hard_delete_started_at
- updated_at
- event_cursor
properties :
resource_kind :
type : string
enum :
- tombstone
id :
$ref : "#/components/schemas/OpaqueId"
owner :
$ref : "#/components/schemas/PrincipalId"
target :
$ref : "#/components/schemas/Target"
terminal_phase :
$ref : "#/components/schemas/TerminalJobPhase"
deletion_operation_id :
$ref : "#/components/schemas/OpaqueId"
created_at :
type : string
format : date-time
hard_delete_started_at :
type : string
format : date-time
updated_at :
type : string
format : date-time
event_cursor :
type : string
minLength : 16
LeaseProjection :
type : object
required :
- expires_at
- renew_after
properties :
expires_at :
type : string
format : date-time
description : Expiry of the exact coordination lease established for this authority.
renew_after :
type : string
format : date-time
description : Earliest recommended renewal time, strictly before expires_at.
ManagementCapabilities :
type : object
required :
- revoke_execution_grants
properties :
revoke_execution_grants :
type : boolean
description : Current caller may administratively revoke accepted execution grants.
ObjectIdentity :
type : object
required :
- store
- bucket
- key
- checksum
- size
properties :
store :
type : string
bucket :
type : string
key :
type : string
version_id :
type : string
checksum :
$ref : "#/components/schemas/Sha256Digest"
size :
type : integer
minimum : 0
ObjectStoreCredentialCreate :
type : object
required :
- label
- kind
- material
properties :
label :
type : string
minLength : 1
maxLength : 200
kind :
type : string
enum :
- object_store
material :
$ref : "#/components/schemas/ObjectStoreCredentialMaterial"
2026-07-14 19:04:00 +09:00
ObjectStoreCredentialMaterial :
type : object
2026-07-19 02:00:47 +09:00
required :
- access_key_id
- secret_access_key
2026-07-14 19:04:00 +09:00
properties :
access_key_id :
type : string
minLength : 1
maxLength : 1024
secret_access_key :
type : string
minLength : 1
maxLength : 16384
session_token :
type : string
minLength : 1
maxLength : 16384
2026-07-19 02:00:47 +09:00
ObjectStoreSourceProjection :
2026-07-14 18:12:28 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- kind
- store
- bucket
- key
- result_path
2026-07-14 18:12:28 +09:00
properties :
2026-07-19 02:00:47 +09:00
kind :
type : string
enum :
- object_store
store :
2026-07-14 18:12:28 +09:00
type : string
minLength : 1
2026-07-19 02:00:47 +09:00
maxLength : 128
bucket :
type : string
minLength : 3
maxLength : 63
key :
2026-07-14 19:04:00 +09:00
type : string
minLength : 1
2026-07-19 02:00:47 +09:00
maxLength : 4096
2026-07-14 18:12:28 +09:00
version_id :
2026-07-19 02:00:47 +09:00
type : string
maxLength : 1024
result_path :
$ref : "#/components/schemas/ResultPath"
credential_id :
$ref : "#/components/schemas/CredentialId"
ObjectStoreSourceSubmission :
2026-07-14 18:12:28 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- kind
- store
- bucket
- key
- result_path
2026-07-14 18:12:28 +09:00
properties :
2026-07-19 02:00:47 +09:00
kind :
type : string
enum :
- object_store
store :
2026-07-14 18:12:28 +09:00
type : string
minLength : 1
2026-07-19 02:00:47 +09:00
maxLength : 128
bucket :
2026-07-14 18:12:28 +09:00
type : string
2026-07-19 02:00:47 +09:00
minLength : 3
maxLength : 63
key :
2026-07-14 18:12:28 +09:00
type : string
2026-07-19 02:00:47 +09:00
minLength : 1
maxLength : 4096
version_id :
2026-07-14 18:12:28 +09:00
type : string
2026-07-19 02:00:47 +09:00
maxLength : 1024
result_path :
$ref : "#/components/schemas/ResultPath"
credential_id :
$ref : "#/components/schemas/CredentialId"
OpaqueId :
2026-07-13 14:59:50 +09:00
type : string
2026-07-19 02:00:47 +09:00
pattern : ^[A-Za-z0-9][A-Za-z0-9_-]{7,127}$
PermanentJobFailure :
2026-07-17 09:16:46 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- class
- retryable
- message
2026-07-17 09:16:46 +09:00
properties :
2026-07-19 02:00:47 +09:00
class :
2026-07-14 19:04:00 +09:00
type : string
2026-07-19 02:00:47 +09:00
enum :
- validation
- authorization
- source_not_found
- source_changed
- cancelled
retryable :
type : boolean
enum :
- false
message :
2026-07-14 19:04:00 +09:00
type : string
2026-07-19 02:00:47 +09:00
maxLength : 500
safe_details :
type : object
unevaluatedProperties :
$ref : "#/components/schemas/SafeDetailValue"
PrincipalId :
type : string
pattern : ^[A-Za-z0-9][A-Za-z0-9_-]{7,127}$
description : Internal stable principal identifier mapped to one exact OIDC issuer and subject pair.
2026-07-13 14:59:50 +09:00
Progress :
type : object
2026-07-19 02:00:47 +09:00
required :
- attempt_id
- fence
- completed_bytes
- completed_members
- observed_at
2026-07-13 14:59:50 +09:00
properties :
attempt_id :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/OpaqueId"
2026-07-13 14:59:50 +09:00
fence :
type : integer
minimum : 1
completed_bytes :
type : integer
minimum : 0
total_bytes :
2026-07-19 02:00:47 +09:00
anyOf :
- type : integer
- type : "null"
2026-07-13 14:59:50 +09:00
minimum : 0
completed_members :
type : integer
minimum : 0
total_members :
2026-07-19 02:00:47 +09:00
anyOf :
- type : integer
- type : "null"
2026-07-13 14:59:50 +09:00
minimum : 0
observed_at :
type : string
format : date-time
2026-07-14 11:50:10 +09:00
ProgressValue :
type : object
2026-07-19 02:00:47 +09:00
required :
- completed_bytes
- completed_members
2026-07-14 11:50:10 +09:00
properties :
completed_bytes :
type : integer
minimum : 0
total_bytes :
2026-07-19 02:00:47 +09:00
anyOf :
- type : integer
- type : "null"
2026-07-14 11:50:10 +09:00
minimum : 0
completed_members :
type : integer
minimum : 0
total_members :
2026-07-19 02:00:47 +09:00
anyOf :
- type : integer
- type : "null"
2026-07-14 11:50:10 +09:00
minimum : 0
2026-07-19 02:00:47 +09:00
ResolvedSourceDescriptorRef :
2026-07-13 14:59:50 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- id
- kind
- schema_version
- byte_length
- checksum
2026-07-14 19:04:00 +09:00
properties :
id :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/OpaqueId"
2026-07-14 19:04:00 +09:00
kind :
type : string
2026-07-19 02:00:47 +09:00
enum :
- resolved_source
2026-07-14 19:04:00 +09:00
schema_version :
type : integer
minimum : 1
byte_length :
type : integer
minimum : 0
item_count :
type : integer
minimum : 0
checksum :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/Sha256Digest"
ResultDescriptor :
type : object
required :
- kind
- manifest_id
- schema_version
- manifest
- member_count
- total_bytes
properties :
kind :
type : string
enum :
- manifest
manifest_id :
$ref : "#/components/schemas/OpaqueId"
schema_version :
type : integer
minimum : 1
manifest :
$ref : "#/components/schemas/ObjectIdentity"
member_count :
type : integer
minimum : 1
total_bytes :
type : integer
minimum : 0
2026-07-14 12:12:13 +09:00
ResultMember :
type : object
2026-07-19 02:00:47 +09:00
required :
- id
- path
- size
- object
2026-07-14 12:12:13 +09:00
properties :
id :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/OpaqueId"
2026-07-14 12:12:13 +09:00
path :
2026-07-13 14:59:50 +09:00
type : string
2026-07-14 12:12:13 +09:00
minLength : 1
maxLength : 4096
description : NFC-normalized relative POSIX path validated under architecture.md.
size :
type : integer
minimum : 0
object :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/ObjectIdentity"
2026-07-18 01:49:00 +09:00
ResultMemberAccess :
type : object
2026-07-19 02:00:47 +09:00
required :
- url
- expires_at
2026-07-18 01:49:00 +09:00
properties :
url :
type : string
format : uri
2026-07-19 02:00:47 +09:00
pattern : ^https?://
2026-07-18 01:49:00 +09:00
description : Sensitive time-limited HTTP(S) exact-object URL.
expires_at :
type : string
format : date-time
2026-07-19 02:00:47 +09:00
ResultMemberPage :
2026-07-13 14:59:50 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- items
- next_cursor
2026-07-13 14:59:50 +09:00
properties :
items :
type : array
items :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/ResultMember"
2026-07-13 14:59:50 +09:00
next_cursor :
2026-07-19 02:00:47 +09:00
anyOf :
- type : string
- type : "null"
ResultPath :
type : string
minLength : 1
maxLength : 4096
description : NFC-normalized relative POSIX path validated under architecture.md.
ResyncRequired :
2026-07-18 01:49:00 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- kind
- reason
2026-07-18 01:49:00 +09:00
properties :
2026-07-19 02:00:47 +09:00
kind :
type : string
enum :
- resync_required
reason :
type : string
enum :
- cursor_absent
- cursor_invalid
- cursor_expired
- authorization_changed
- history_unavailable
2026-07-14 12:12:13 +09:00
allOf :
2026-07-19 02:00:47 +09:00
- $ref : "#/components/schemas/EventBase"
RetryableJobFailure :
2026-07-14 11:50:10 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- class
- retryable
- message
2026-07-14 11:50:10 +09:00
properties :
class :
type : string
2026-07-19 02:00:47 +09:00
enum :
- transient_source
- transient_target
- integrity
- capacity
- internal
- lost_attempt
retryable :
type : boolean
enum :
- true
2026-07-14 11:50:10 +09:00
message :
type : string
maxLength : 500
2026-07-19 02:00:47 +09:00
safe_details :
type : object
unevaluatedProperties :
$ref : "#/components/schemas/SafeDetailValue"
SafeDetailValue :
anyOf :
- type : string
- type : integer
format : int64
- type : boolean
- type : "null"
Sha256Digest :
type : string
pattern : ^sha256:[a-f0-9]{64}$
SourceCredential :
2026-07-13 14:59:50 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- id
- owner
- label
- kind
- status
- active_version
- created_at
- updated_at
2026-07-13 14:59:50 +09:00
properties :
id :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/CredentialId"
owner :
$ref : "#/components/schemas/PrincipalId"
label :
2026-07-13 14:59:50 +09:00
type : string
2026-07-19 02:00:47 +09:00
minLength : 1
maxLength : 200
kind :
$ref : "#/components/schemas/SourceCredentialKind"
status :
type : string
enum :
- active
- revoked
active_version :
2026-07-14 11:50:10 +09:00
oneOf :
2026-07-19 02:00:47 +09:00
- $ref : "#/components/schemas/SourceCredentialVersion"
- type : "null"
2026-07-13 14:59:50 +09:00
created_at :
type : string
format : date-time
updated_at :
type : string
format : date-time
2026-07-19 02:00:47 +09:00
SourceCredentialCreate :
2026-07-18 00:16:21 +09:00
type : object
2026-07-19 02:00:47 +09:00
oneOf :
- $ref : "#/components/schemas/BasicAuthCredentialCreate"
- $ref : "#/components/schemas/BearerTokenCredentialCreate"
- $ref : "#/components/schemas/HttpHeadersCredentialCreate"
- $ref : "#/components/schemas/ObjectStoreCredentialCreate"
- $ref : "#/components/schemas/HuggingFaceCredentialCreate"
discriminator :
propertyName : kind
mapping :
basic_auth : "#/components/schemas/BasicAuthCredentialCreate"
bearer_token : "#/components/schemas/BearerTokenCredentialCreate"
http_headers : "#/components/schemas/HttpHeadersCredentialCreate"
object_store : "#/components/schemas/ObjectStoreCredentialCreate"
hugging_face : "#/components/schemas/HuggingFaceCredentialCreate"
SourceCredentialKind :
type : string
enum :
- basic_auth
- bearer_token
- http_headers
- object_store
- hugging_face
SourceCredentialPage :
2026-07-13 14:59:50 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- items
- next_cursor
2026-07-13 14:59:50 +09:00
properties :
2026-07-19 02:00:47 +09:00
items :
2026-07-13 14:59:50 +09:00
type : array
items :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/SourceCredential"
next_cursor :
anyOf :
- type : string
- type : "null"
SourceCredentialRotate :
2026-07-13 14:59:50 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- material
2026-07-13 14:59:50 +09:00
properties :
2026-07-19 02:00:47 +09:00
material :
$ref : "#/components/schemas/CredentialMaterial"
description : The material shape must match the stored credential kind; rotation never changes kind.
SourceCredentialVersion :
2026-07-14 11:50:10 +09:00
type : object
2026-07-19 02:00:47 +09:00
required :
- id
- created_at
2026-07-14 11:50:10 +09:00
properties :
id :
2026-07-19 02:00:47 +09:00
$ref : "#/components/schemas/CredentialVersionId"
created_at :
type : string
format : date-time
SourceProjection :
2026-07-14 11:50:10 +09:00
type : object
2026-07-19 02:00:47 +09:00
oneOf :
- $ref : "#/components/schemas/HttpSourceProjection"
- $ref : "#/components/schemas/ObjectStoreSourceProjection"
- $ref : "#/components/schemas/HuggingFaceSourceProjection"
discriminator :
propertyName : kind
mapping :
http : "#/components/schemas/HttpSourceProjection"
object_store : "#/components/schemas/ObjectStoreSourceProjection"
hugging_face : "#/components/schemas/HuggingFaceSourceProjection"
SourceSubmission :
2026-07-14 18:12:28 +09:00
type : object
2026-07-19 02:00:47 +09:00
oneOf :
- $ref : "#/components/schemas/HttpSourceSubmission"
- $ref : "#/components/schemas/ObjectStoreSourceSubmission"
- $ref : "#/components/schemas/HuggingFaceSourceSubmission"
discriminator :
propertyName : kind
mapping :
http : "#/components/schemas/HttpSourceSubmission"
object_store : "#/components/schemas/ObjectStoreSourceSubmission"
hugging_face : "#/components/schemas/HuggingFaceSourceSubmission"
2026-07-17 18:51:44 +09:00
StagingMultipartIdentity :
type : object
2026-07-19 02:00:47 +09:00
required :
- store
- bucket
- key
- upload_id
2026-07-17 18:51:44 +09:00
properties :
store :
type : string
minLength : 1
bucket :
type : string
minLength : 1
key :
type : string
minLength : 1
upload_id :
type : string
minLength : 1
2026-07-19 02:00:47 +09:00
StagingObjectIdentity :
type : object
required :
- store
- bucket
- key
properties :
store :
type : string
minLength : 1
bucket :
type : string
minLength : 1
key :
type : string
minLength : 1
version_id :
type : string
minLength : 1
StagingTarget :
type : object
required :
- store
- bucket
- prefix
properties :
store :
type : string
minLength : 1
maxLength : 128
bucket :
$ref : "#/components/schemas/BucketName"
prefix :
type : string
minLength : 1
maxLength : 1024
description : Exact attempt-scoped internal prefix selected by the service.
StagingWriteIntent :
type : object
required :
- store
- bucket
- key
properties :
store :
type : string
minLength : 1
bucket :
type : string
minLength : 1
key :
type : string
minLength : 1
Target :
type : object
required :
- store
- bucket
- prefix
properties :
store :
type : string
minLength : 1
maxLength : 128
bucket :
$ref : "#/components/schemas/BucketName"
prefix :
type : string
maxLength : 1024
description : NFC-normalized target segments; semantic validation follows architecture.md.
TargetOverride :
type : object
properties :
bucket :
$ref : "#/components/schemas/BucketName"
prefix :
type : string
maxLength : 1024
description : NFC-normalized target segments; semantic validation follows architecture.md.
TerminalJobPhase :
type : string
enum :
- Succeeded
- Failed
- Cancelled
TokenMaterial :
type : object
required :
- token
properties :
token :
type : string
minLength : 1
maxLength : 16384
securitySchemes :
oidc :
type : openIdConnect
openIdConnectUrl : https://identity.invalid/.well-known/openid-configuration
serviceAuth :
type : mutualTLS
eventTicket :
type : apiKey
in : query
name : ticket
servers :
- url : /api
variables : {}
security :
- oidc : [ ]