1102 lines
28 KiB
YAML
1102 lines
28 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: AIOS ChatGPT Actions - Governed GitOps and Release
|
|
version: V1R1C0-chatgpt-actions-governed-release
|
|
description: Trust-domain import from the exact union of the 31-operation main source and 30-operation
|
|
immutable public runtime; operation, server route, and declared security are preserved.
|
|
servers:
|
|
- url: https://cnnetmkt.top
|
|
security: []
|
|
components:
|
|
securitySchemes:
|
|
bearerAuth:
|
|
type: http
|
|
scheme: bearer
|
|
bearerFormat: opaque-token
|
|
schemas:
|
|
PublicationState:
|
|
type: string
|
|
description: Canonical durable publication state. Legacy TAG_CREATED_LOCAL is normalized on read
|
|
and is never emitted by new writes.
|
|
enum:
|
|
- PENDING
|
|
- LOCAL_TAG_CREATED
|
|
- REMOTE_PUSH_PENDING
|
|
- REMOTE_PUSH_CONFIRMED
|
|
- GITEA_API_CONFIRMED
|
|
- BASELINE_UPDATE_PENDING
|
|
- BASELINE_UPDATED
|
|
- PRODUCTION_DEPLOYED
|
|
- RECONCILIATION_REQUIRED
|
|
- MANUAL_OWNER_REVIEW_REQUIRED
|
|
PublicationStatus:
|
|
type: object
|
|
required:
|
|
- version
|
|
- state
|
|
properties:
|
|
version:
|
|
type: string
|
|
state:
|
|
$ref: '#/components/schemas/PublicationState'
|
|
fail_closed:
|
|
type: boolean
|
|
BranchRequest:
|
|
type: object
|
|
required:
|
|
- branch
|
|
properties:
|
|
branch:
|
|
type: string
|
|
example: patch/chatgpt-actions-demo
|
|
base:
|
|
type: string
|
|
default: main
|
|
message:
|
|
type: string
|
|
FileCommitRequest:
|
|
type: object
|
|
required:
|
|
- branch
|
|
- path
|
|
- content
|
|
properties:
|
|
branch:
|
|
type: string
|
|
base:
|
|
type: string
|
|
default: main
|
|
create_branch:
|
|
type: boolean
|
|
default: false
|
|
path:
|
|
type: string
|
|
example: docs/gitops/chatgpt-change.md
|
|
content:
|
|
type: string
|
|
message:
|
|
type: string
|
|
AtomicFileCommitRequest:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- branch
|
|
- path
|
|
- content
|
|
- message
|
|
- expected_head_oid
|
|
- idempotency_key
|
|
properties:
|
|
branch:
|
|
type: string
|
|
pattern: ^patch/[A-Za-z0-9._/-]+$
|
|
path:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 512
|
|
content:
|
|
type: string
|
|
maxLength: 1048576
|
|
message:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 200
|
|
expected_head_oid:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
idempotency_key:
|
|
type: string
|
|
pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$
|
|
CommitRequest:
|
|
type: object
|
|
properties:
|
|
branch:
|
|
type: string
|
|
paths:
|
|
type: array
|
|
items:
|
|
type: string
|
|
message:
|
|
type: string
|
|
PatchRequest:
|
|
type: object
|
|
required:
|
|
- patch_name
|
|
properties:
|
|
patch_name:
|
|
type: string
|
|
branch:
|
|
type: string
|
|
base:
|
|
type: string
|
|
default: main
|
|
risk:
|
|
type: string
|
|
enum:
|
|
- low
|
|
- medium
|
|
- high
|
|
description:
|
|
type: string
|
|
message:
|
|
type: string
|
|
TagRequest:
|
|
type: object
|
|
required:
|
|
- version
|
|
- target_oid
|
|
- evidence_closure_oid
|
|
- approval_plan_id
|
|
properties:
|
|
version:
|
|
type: string
|
|
example: V1R1C1
|
|
target_oid:
|
|
type: string
|
|
pattern: ^[0-9a-fA-F]{40}$
|
|
description: Full approved commit OID. The tag is created explicitly at this commit, never implicitly
|
|
at workspace HEAD.
|
|
evidence_closure_oid:
|
|
type: string
|
|
pattern: ^[0-9a-fA-F]{40}$
|
|
description: Required evidence closure commit. target_oid must be its ancestor.
|
|
approval_plan_id:
|
|
type: string
|
|
description: Audited owner-approved release or tag plan identifier.
|
|
message:
|
|
type: string
|
|
execute:
|
|
type: boolean
|
|
description: Owner-approved calls only. Otherwise an approval request commit is created.
|
|
RollbackRequest:
|
|
type: object
|
|
required:
|
|
- target_version
|
|
properties:
|
|
target_version:
|
|
type: string
|
|
reason:
|
|
type: string
|
|
branch:
|
|
type: string
|
|
ModelRequest:
|
|
type: object
|
|
required:
|
|
- provider_name
|
|
- base_url
|
|
- model_name
|
|
properties:
|
|
username:
|
|
type: string
|
|
provider_name:
|
|
type: string
|
|
base_url:
|
|
type: string
|
|
model_name:
|
|
type: string
|
|
display_name:
|
|
type: string
|
|
api_key_secret_ref:
|
|
type: string
|
|
description: Preferred. Git stores this secret_ref only.
|
|
api_key:
|
|
type: string
|
|
writeOnly: true
|
|
description: Accepted only for runtime secret storage; never committed to Git or logs.
|
|
branch:
|
|
type: string
|
|
message:
|
|
type: string
|
|
ModelPriorityRequest:
|
|
type: object
|
|
required:
|
|
- items
|
|
properties:
|
|
username:
|
|
type: string
|
|
branch:
|
|
type: string
|
|
items:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
model_id:
|
|
type: string
|
|
priority:
|
|
type: integer
|
|
enabled:
|
|
type: boolean
|
|
fallback_policy:
|
|
type: string
|
|
NLRequest:
|
|
type: object
|
|
required:
|
|
- text
|
|
properties:
|
|
text:
|
|
type: string
|
|
branch:
|
|
type: string
|
|
DeploymentPlan:
|
|
type: object
|
|
required:
|
|
- service
|
|
- release_path
|
|
- release_root
|
|
- cutover_link
|
|
- dropin_path
|
|
- dropin_sha256
|
|
- systemd_unit_sha256
|
|
- rollback_path
|
|
- rollback_sha256
|
|
- source_commit
|
|
- tree_oid
|
|
- artifact_sha256
|
|
- manifest_sha256
|
|
- package_closure_sha256
|
|
- authoritative_git_dir
|
|
- repository_identity
|
|
- writer_expected
|
|
- baseline_before_sha256
|
|
- registry_before_sha256
|
|
- production_tag_refset_before_sha256
|
|
- health_contract_version
|
|
- timeout_policy
|
|
- retry_policy
|
|
- policy_sha256
|
|
- health_contract
|
|
properties:
|
|
service:
|
|
type: string
|
|
release_path:
|
|
type: string
|
|
release_root:
|
|
type: string
|
|
cutover_link:
|
|
type: string
|
|
dropin_path:
|
|
type: string
|
|
dropin_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
systemd_unit_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
rollback_path:
|
|
type: string
|
|
rollback_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
source_commit:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
tree_oid:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
artifact_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
manifest_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
package_closure_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
authoritative_git_dir:
|
|
type: string
|
|
repository_identity:
|
|
type: string
|
|
writer_expected:
|
|
type: boolean
|
|
enum:
|
|
- false
|
|
baseline_before_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
registry_before_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
production_tag_refset_before_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
health_contract_version:
|
|
type: string
|
|
timeout_policy:
|
|
type: object
|
|
retry_policy:
|
|
type: object
|
|
policy_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
health_contract:
|
|
type: object
|
|
additionalProperties: true
|
|
ReleaseCandidateInput:
|
|
type: object
|
|
required:
|
|
- source_commit
|
|
- version
|
|
additionalProperties: false
|
|
properties:
|
|
candidate_id:
|
|
type: string
|
|
pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{2,127}$
|
|
source_commit:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
version:
|
|
type: string
|
|
pattern: ^V[0-9]+R[0-9]+C[0-9]+(?:[-.][A-Za-z0-9][A-Za-z0-9.-]*)?$
|
|
ReleaseIntentInput:
|
|
type: object
|
|
required:
|
|
- event_id
|
|
- source_commit
|
|
additionalProperties: false
|
|
properties:
|
|
event_id:
|
|
type: string
|
|
pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]{2,255}$
|
|
source_commit:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
SignedReleasePlanApproval:
|
|
type: object
|
|
required:
|
|
- release_plan_id
|
|
- candidate_id
|
|
- source_commit
|
|
- tree_oid
|
|
- artifact_sha256
|
|
- manifest_sha256
|
|
- deployment_plan_sha256
|
|
- release_plan_sha256
|
|
- policy_sha256
|
|
- approval_plan_id
|
|
- evidence_closure_oid
|
|
- owner_approval_record_oid
|
|
- capabilities
|
|
- owner_identity
|
|
- trust_domain
|
|
- issued_at
|
|
- not_before
|
|
- expires_at
|
|
- nonce
|
|
- key_id
|
|
- signature
|
|
properties:
|
|
release_plan_id:
|
|
type: string
|
|
candidate_id:
|
|
type: string
|
|
source_commit:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
tree_oid:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
artifact_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
manifest_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
deployment_plan_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
release_plan_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
policy_sha256:
|
|
type: string
|
|
pattern: ^[0-9a-f]{64}$
|
|
approval_plan_id:
|
|
type: string
|
|
evidence_closure_oid:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
owner_approval_record_oid:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
owner_identity:
|
|
type: string
|
|
trust_domain:
|
|
type: string
|
|
issued_at:
|
|
type: string
|
|
format: date-time
|
|
not_before:
|
|
type: string
|
|
format: date-time
|
|
capabilities:
|
|
type: array
|
|
uniqueItems: true
|
|
items:
|
|
type: string
|
|
enum:
|
|
- runtime_switch
|
|
- tag_publish
|
|
- baseline_registry_finalize
|
|
expires_at:
|
|
type: string
|
|
format: date-time
|
|
nonce:
|
|
type: string
|
|
minLength: 16
|
|
key_id:
|
|
type: string
|
|
signature:
|
|
type: string
|
|
format: byte
|
|
writeOnly: true
|
|
StartDeploymentRequest:
|
|
type: object
|
|
required:
|
|
- candidate_id
|
|
additionalProperties: false
|
|
properties:
|
|
candidate_id:
|
|
type: string
|
|
Oid40:
|
|
type: string
|
|
pattern: ^[0-9a-f]{40}$
|
|
CreateGovernedTaskRequest:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- task_id
|
|
- repository
|
|
- base_oid
|
|
- target_branch
|
|
- risk
|
|
- description
|
|
- idempotency_key
|
|
properties:
|
|
task_id:
|
|
type: string
|
|
repository:
|
|
type: string
|
|
const: aios/aios
|
|
base_oid:
|
|
$ref: '#/components/schemas/Oid40'
|
|
target_branch:
|
|
type: string
|
|
pattern: ^agent/
|
|
risk:
|
|
type: string
|
|
enum:
|
|
- low
|
|
- medium
|
|
- high
|
|
- engineering
|
|
description:
|
|
type: string
|
|
idempotency_key:
|
|
type: string
|
|
expected_branch_oid:
|
|
$ref: '#/components/schemas/Oid40'
|
|
generation:
|
|
type: integer
|
|
minimum: 1
|
|
WriterLeaseRequest:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- schema
|
|
- task_id
|
|
- repository
|
|
- branch_mode
|
|
- base_oid
|
|
- expected_branch_oid
|
|
- target_branch
|
|
- generation
|
|
- lease_seconds
|
|
properties:
|
|
schema:
|
|
type: string
|
|
task_id:
|
|
type: string
|
|
repository:
|
|
type: string
|
|
const: aios/aios
|
|
branch_mode:
|
|
type: string
|
|
enum:
|
|
- CREATE_NEW
|
|
- CONTINUE_EXISTING
|
|
base_oid:
|
|
$ref: '#/components/schemas/Oid40'
|
|
expected_branch_oid:
|
|
$ref: '#/components/schemas/Oid40'
|
|
target_branch:
|
|
type: string
|
|
pattern: ^agent/
|
|
generation:
|
|
type: integer
|
|
minimum: 1
|
|
lease_seconds:
|
|
type: integer
|
|
minimum: 1
|
|
maximum: 86400
|
|
CommitFileGovernedRequest:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- task_id
|
|
- repository
|
|
- expected_branch_oid
|
|
- target_branch
|
|
- generation
|
|
- idempotency_key
|
|
- path
|
|
- content_base64
|
|
- message
|
|
properties:
|
|
task_id:
|
|
type: string
|
|
repository:
|
|
type: string
|
|
const: aios/aios
|
|
expected_branch_oid:
|
|
$ref: '#/components/schemas/Oid40'
|
|
target_branch:
|
|
type: string
|
|
pattern: ^agent/
|
|
generation:
|
|
type: integer
|
|
minimum: 1
|
|
idempotency_key:
|
|
type: string
|
|
path:
|
|
type: string
|
|
content_base64:
|
|
type: string
|
|
message:
|
|
type: string
|
|
CommitFilesGovernedRequest:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- task_id
|
|
- repository
|
|
- expected_branch_oid
|
|
- target_branch
|
|
- generation
|
|
- idempotency_key
|
|
- files
|
|
- message
|
|
properties:
|
|
task_id:
|
|
type: string
|
|
repository:
|
|
type: string
|
|
const: aios/aios
|
|
expected_branch_oid:
|
|
$ref: '#/components/schemas/Oid40'
|
|
target_branch:
|
|
type: string
|
|
pattern: ^agent/
|
|
generation:
|
|
type: integer
|
|
minimum: 1
|
|
idempotency_key:
|
|
type: string
|
|
files:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: Base64 encoded file bytes
|
|
message:
|
|
type: string
|
|
CreateOnlineAgentTaskRequest:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- goal
|
|
- instructions
|
|
- success_criteria
|
|
- idempotency_key
|
|
properties:
|
|
task_id:
|
|
type: string
|
|
goal:
|
|
type: string
|
|
instructions:
|
|
type: string
|
|
success_criteria:
|
|
type: array
|
|
items: {}
|
|
required_capabilities:
|
|
type: array
|
|
items:
|
|
type: string
|
|
constraints:
|
|
type: object
|
|
additionalProperties: true
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
deadline:
|
|
type: string
|
|
format: date-time
|
|
priority:
|
|
type: integer
|
|
minimum: -100
|
|
maximum: 100
|
|
max_attempts:
|
|
type: integer
|
|
minimum: 1
|
|
maximum: 20
|
|
idempotency_key:
|
|
type: string
|
|
paths:
|
|
/createReleaseIntent:
|
|
post:
|
|
operationId: createReleaseIntent
|
|
summary: Create an idempotent intent; all build evidence comes from the trusted builder
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReleaseIntentInput'
|
|
responses:
|
|
'200':
|
|
description: Intent created or idempotently returned
|
|
'400':
|
|
description: Caller evidence or invalid intent rejected
|
|
x-openai-isConsequential: true
|
|
/createReleaseCandidate:
|
|
post:
|
|
operationId: createReleaseCandidate
|
|
summary: Submit release intent to the trusted builder; caller evidence is rejected
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReleaseCandidateInput'
|
|
responses:
|
|
'200':
|
|
description: Candidate created or idempotently returned
|
|
'400':
|
|
description: Invalid or conflicting candidate evidence
|
|
'401':
|
|
description: Unauthorized
|
|
x-openai-isConsequential: true
|
|
/getReleaseCandidate:
|
|
get:
|
|
operationId: getReleaseCandidate
|
|
summary: Read a durable release candidate
|
|
parameters:
|
|
- in: query
|
|
name: candidate_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Candidate
|
|
'404':
|
|
description: Candidate not found
|
|
/getReleasePlan:
|
|
get:
|
|
operationId: getReleasePlan
|
|
parameters:
|
|
- in: query
|
|
name: candidate_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Immutable release plan
|
|
'404':
|
|
description: Candidate not found
|
|
/getReleaseAcceptance:
|
|
get:
|
|
operationId: getReleaseAcceptance
|
|
parameters:
|
|
- in: query
|
|
name: candidate_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Builder attestation and acceptance checks
|
|
'404':
|
|
description: Candidate not found
|
|
/getApprovalEnvelope:
|
|
get:
|
|
operationId: getApprovalEnvelope
|
|
summary: Generate the immutable owner-signature payload
|
|
parameters:
|
|
- in: query
|
|
name: candidate_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Approval envelope fingerprint inputs
|
|
'404':
|
|
description: Candidate not found
|
|
/submitOwnerApproval:
|
|
post:
|
|
operationId: submitOwnerApproval
|
|
summary: Verify and durably store a signed owner release plan
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SignedReleasePlanApproval'
|
|
responses:
|
|
'200':
|
|
description: Signature verified and approval stored
|
|
'400':
|
|
description: Invalid approval
|
|
'403':
|
|
description: Signature
|
|
key: null
|
|
expiry: null
|
|
or revocation failure: null
|
|
'409':
|
|
description: Conflicting release plan
|
|
x-openai-isConsequential: true
|
|
/submitSignedApproval:
|
|
post:
|
|
operationId: submitSignedApproval
|
|
summary: Alias for immutable signed owner approval submission
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SignedReleasePlanApproval'
|
|
responses:
|
|
'200':
|
|
description: Signature verified and approval stored
|
|
'403':
|
|
description: Production approval backend unavailable or signature invalid
|
|
x-openai-isConsequential: true
|
|
/startDeployment:
|
|
post:
|
|
operationId: startDeployment
|
|
summary: Resume the durable approved Saga; caller cannot replace approval
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/StartDeploymentRequest'
|
|
responses:
|
|
'200':
|
|
description: Shadow result or deployment Saga result
|
|
'403':
|
|
description: Execution disabled or approval invalid
|
|
'409':
|
|
description: Saga conflict
|
|
x-openai-isConsequential: true
|
|
/getReleaseSaga:
|
|
get:
|
|
operationId: getReleaseSaga
|
|
summary: Read durable Saga state and event journal
|
|
parameters:
|
|
- in: query
|
|
name: candidate_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Saga snapshot
|
|
'404':
|
|
description: Saga not found
|
|
/getCapabilityStatus:
|
|
get:
|
|
operationId: getCapabilityStatus
|
|
parameters:
|
|
- in: query
|
|
name: candidate_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Durable single-use capability records
|
|
/getRecoveryStatus:
|
|
get:
|
|
operationId: getRecoveryStatus
|
|
responses:
|
|
'200':
|
|
description: Fail-closed recovery classification
|
|
/api/tag-publication-status:
|
|
get:
|
|
operationId: getTagPublicationStatus
|
|
summary: Read durable publication Saga status without mutation
|
|
parameters:
|
|
- in: query
|
|
name: version
|
|
required: true
|
|
schema:
|
|
type: string
|
|
pattern: ^V\d+R\d+C\d+(?:-[A-Za-z0-9_.-]+)?$
|
|
responses:
|
|
'200':
|
|
description: Canonical publication state or fail-closed UNKNOWN
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PublicationStatus'
|
|
'400':
|
|
description: Version required
|
|
/api/release-consistency:
|
|
get:
|
|
operationId: getReleaseConsistency
|
|
summary: Compare Registry, Baseline, remote tag, Gitea API, listing, repository identity, and expected
|
|
target
|
|
parameters:
|
|
- in: query
|
|
name: version
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: target_oid
|
|
required: true
|
|
schema:
|
|
type: string
|
|
pattern: ^[0-9a-fA-F]{40}$
|
|
- in: query
|
|
name: evidence_closure_oid
|
|
required: true
|
|
schema:
|
|
type: string
|
|
pattern: ^[0-9a-fA-F]{40}$
|
|
- in: query
|
|
name: approval_plan_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: PASS
|
|
FAIL: null
|
|
or fail-closed UNKNOWN: null
|
|
/api/release-acceptance:
|
|
get:
|
|
operationId: runReleaseAcceptance
|
|
summary: Run read-only release acceptance; UNKNOWN is not accepted
|
|
parameters:
|
|
- in: query
|
|
name: version
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: target_oid
|
|
required: true
|
|
schema:
|
|
type: string
|
|
pattern: ^[0-9a-fA-F]{40}$
|
|
- in: query
|
|
name: evidence_closure_oid
|
|
required: true
|
|
schema:
|
|
type: string
|
|
pattern: ^[0-9a-fA-F]{40}$
|
|
- in: query
|
|
name: approval_plan_id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Acceptance result with accepted boolean
|
|
/api/tag:
|
|
post:
|
|
operationId: requestOrCreateTag
|
|
summary: Request tag creation; owner execution is required for direct tag
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TagRequest'
|
|
responses:
|
|
'200':
|
|
description: Gitea-confirmed tag and fail-closed baseline result
|
|
'400':
|
|
description: Missing governance evidence or invalid OID
|
|
'403':
|
|
description: Forbidden
|
|
'409':
|
|
description: Existing tag target conflict or evidence lineage mismatch
|
|
'502':
|
|
description: Gitea reconciliation required
|
|
'503':
|
|
description: Remote push pending
|
|
x-openai-isConsequential: true
|
|
/api/rollback:
|
|
post:
|
|
operationId: requestRollback
|
|
summary: Commit a rollback request requiring owner/admin approval
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RollbackRequest'
|
|
responses:
|
|
'200':
|
|
description: Rollback request committed
|
|
'401':
|
|
description: Unauthorized
|
|
x-openai-isConsequential: true
|
|
/api/governed-write-capabilities:
|
|
get:
|
|
operationId: getGovernedWriteCapabilities
|
|
responses:
|
|
'200':
|
|
description: Governed and legacy write capability status
|
|
/api/control-plane-snapshot:
|
|
get:
|
|
operationId: getControlPlaneSnapshot
|
|
responses:
|
|
'200':
|
|
description: Non-sensitive control-plane snapshot
|
|
/createGovernedTask:
|
|
post:
|
|
operationId: createGovernedTask
|
|
x-openai-isConsequential: true
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateGovernedTaskRequest'
|
|
responses:
|
|
'200':
|
|
description: Governed task binding
|
|
/acquireWriterLease:
|
|
post:
|
|
operationId: acquireWriterLease
|
|
x-openai-isConsequential: true
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WriterLeaseRequest'
|
|
responses:
|
|
'200':
|
|
description: Writer lease binding
|
|
/commitFileGoverned:
|
|
post:
|
|
operationId: commitFileGoverned
|
|
x-openai-isConsequential: true
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommitFileGovernedRequest'
|
|
responses:
|
|
'200':
|
|
description: Durable GitOps job receipt
|
|
/commitFilesGoverned:
|
|
post:
|
|
operationId: commitFilesGoverned
|
|
x-openai-isConsequential: true
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommitFilesGovernedRequest'
|
|
responses:
|
|
'200':
|
|
description: Durable GitOps job receipt
|
|
/getGitOpsJob:
|
|
post:
|
|
operationId: getGitOpsJob
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- job_id
|
|
properties:
|
|
job_id:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Job receipt
|
|
/resumeGitOpsJob:
|
|
post:
|
|
operationId: resumeGitOpsJob
|
|
x-openai-isConsequential: true
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- job_id
|
|
- expected_revision
|
|
properties:
|
|
job_id:
|
|
type: string
|
|
expected_revision:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: Resumed job receipt
|
|
/reconcileGitOpsJob:
|
|
post:
|
|
operationId: reconcileGitOpsJob
|
|
x-openai-isConsequential: true
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- job_id
|
|
- expected_revision
|
|
properties:
|
|
job_id:
|
|
type: string
|
|
expected_revision:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: Reconciliation receipt
|
|
x-aios-schema-reconciliation:
|
|
source_schema: docs/gitops/openapi-chatgpt-actions.yaml
|
|
public_runtime_schema: docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml
|
|
trust_domain: governed-release
|
|
operation_count: 26
|
|
public_action_import: true
|