110 lines
3.9 KiB
YAML
110 lines
3.9 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Onboarding Draft Resume Contract
|
|
version: 1.0.0
|
|
description: |
|
|
Internal action contract for managed tenant onboarding draft landing, selection,
|
|
canonical route loading, and lifecycle-safe resume semantics.
|
|
servers:
|
|
- url: https://tenantatlas.internal
|
|
paths:
|
|
/admin/onboarding:
|
|
get:
|
|
operationId: onboardingDraftLanding
|
|
summary: Resolve onboarding landing state for the current workspace
|
|
description: |
|
|
Returns one of three outcomes for the current authorized workspace:
|
|
empty start state, redirect to a single resumable draft, or a picker view
|
|
when multiple resumable drafts exist.
|
|
responses:
|
|
'200':
|
|
description: Landing state rendered directly
|
|
'302':
|
|
description: Redirect to canonical draft route when exactly one resumable draft exists
|
|
'403':
|
|
description: Returned when the actor is in scope but lacks onboarding capability
|
|
'404':
|
|
description: Returned when workspace context is missing or inaccessible
|
|
/admin/onboarding/{onboardingDraft}:
|
|
parameters:
|
|
- name: onboardingDraft
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
get:
|
|
operationId: showOnboardingDraft
|
|
summary: Load one explicit onboarding draft
|
|
description: |
|
|
Loads the requested draft if it exists, belongs to the current workspace,
|
|
is authorized for the actor, and is resumable or otherwise viewable.
|
|
Resume stage must be derived from persisted confirmed data. Non-resumable
|
|
drafts may render a non-editable summary surface instead of the active wizard.
|
|
responses:
|
|
'200':
|
|
description: Draft wizard or non-resumable summary rendered
|
|
'403':
|
|
description: Actor is in scope but lacks capability to access the draft surface
|
|
'404':
|
|
description: Draft not found, outside workspace, or inaccessible
|
|
patch:
|
|
operationId: updateOnboardingDraft
|
|
summary: Persist a confirmed onboarding draft transition
|
|
description: |
|
|
Persists a confirmed step boundary or explicit draft selection outcome.
|
|
Unsaved transient edits are out of scope and are not persisted by this contract.
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
current_step:
|
|
type: string
|
|
state:
|
|
type: object
|
|
additionalProperties: true
|
|
selected_provider_connection_id:
|
|
type:
|
|
- integer
|
|
- 'null'
|
|
verification_operation_run_id:
|
|
type:
|
|
- integer
|
|
- 'null'
|
|
responses:
|
|
'200':
|
|
description: Confirmed state persisted
|
|
'403':
|
|
description: Actor lacks capability for the attempted confirmed transition
|
|
'404':
|
|
description: Draft not found or inaccessible
|
|
post:
|
|
operationId: transitionOnboardingDraftLifecycle
|
|
summary: Apply an explicit lifecycle transition such as cancel or complete
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- action
|
|
properties:
|
|
action:
|
|
type: string
|
|
enum:
|
|
- cancel
|
|
- complete
|
|
reason:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
responses:
|
|
'200':
|
|
description: Lifecycle transition applied
|
|
'403':
|
|
description: Actor lacks permission for the transition
|
|
'404':
|
|
description: Draft not found or inaccessible |