Files
tech-log-frontend/src/features/tech-log/contracts/management/management-api.openapi.yaml
T
DongHyeonka c5e8735041 feat: read the profile's topics from Studio, and add working-copy deletion
Two things an author could not control from Studio.

The profile's "주요 관심 주제" was four strings in the JSX. Creating or removing
a topic in Studio changed nothing, and correcting the list meant a rebuild and
a redeploy. It now renders the published topic list. The old literal opened
with "Backend Architecture", which no record in the catalogue actually carries
— the profile was advertising a topic that did not exist, and nothing could
have caught that while the list lived in the markup.

The working-copy list gained a delete control. It routes by kind because the
contract and the storage both do: Case and Reference share one table split by
type, Question is its own. Decision has no delete — its lifecycle is accept,
reject, supersede, which records what happened rather than erasing it — so the
control does not appear for it.

The list summary carries no version, so deletion reads the working copy first
and uses the version it finds. A stale version from a list left open should
fail as a conflict, not delete whatever is there now.
2026-08-21 13:30:37 +09:00

7120 lines
190 KiB
YAML

openapi: 3.1.0
info:
title: Tech Log Studio Management API (Secondary)
version: 1.0.0
description: |-
⚠ 봉투 결정(ADR-006) 부분 반영 — 이 파일에는 두 모양이 공존한다.
topics 4개, projects 5개, releases 7개, 그리고 작업본 삭제 3개
(deleteCaseDraft / deleteReferenceDraft / deleteQuestion)를 studio-v1.yaml과
같은 방식으로 변환했다 (`application/json` + ErrorEnvelope / <Payload>Envelope).
그 19개가 구현된 것이자 소비자가 있는 것이기 때문이다.
나머지 60개는 아직 bare payload + `application/problem+json` + ProblemDetails
다. 구현에 착수할 때 같은 방식으로 따라온다 — 소비자가 없는 operation을 미리
변환해 두면 검증되지 않은 모양이 계약에 고정된다.
Tech Log의 유형별 specialized management 계약이다.
이 계약은 primary Studio orchestration 계약(`studio-v1.yaml`)이 아니다.
현재 Studio UI는 이 operation들을 직접 호출하지 않는다.
존재 이유는 설계 수정 가이드 14장과 23.7의 규칙이다.
> 현재 UI에서 사용하지 않는다는 이유로 Backend capability를 삭제하지 않는다.
> 다만 capability 보존과 endpoint 보존을 동일시하지 않는다.
따라서 Question start/pause/resume/reopen/archive, Project phase change,
Project Activity, Release, Topic/Tag, Profile/Site/Home Focus,
Decision supersede/reject 등의 Domain/Application capability를 여기에 보존하고,
현재 Frontend가 사용하는 통합 편집 흐름은 `studio-v1.yaml`이 소유한다.
## 이 계약을 사용하는 규칙
- primary 흐름(작업본 편집·검증·미리보기·게시)은 반드시 `studio-v1.yaml`을 사용한다.
- 여기의 publish/unpublish 계열 operation은 primary `publishStudioDocument`와
동일한 Publication Event/Snapshot 경로를 거쳐야 한다.
서로 다른 두 개의 게시 경로를 허용하지 않는다.
- 새 UI가 특정 capability를 실제로 사용하기 시작하면 해당 operation을
primary 계약으로 승격하고 여기에서 제거한다.
## 이 계약에서 제거된 것
- `GET /session` : primary `studio-v1.yaml`이 소유한다.
- `/documents` 계열 : primary 통합 Working Copy operation으로 대체되었다.
- `/assets` 계열 : primary `studio-v1.yaml`이 소유한다.
- `/previews`, `/previews/{token}` : Preview Token 계약은 폐기되었다.
인증된 Preview Artifact(`studio-v1.yaml`)로 대체되었다.
servers:
- url: /
security:
- sessionCookie: []
tags:
- name: Cases
- name: References
- name: Questions
- name: Projects
- name: Decisions
- name: Releases
- name: Taxonomy
- name: Identity
paths:
/api/v1/studio/cases:
post:
operationId: createCaseDraft
tags:
- Cases
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftRequest'
security:
- sessionCookie: []
/api/v1/studio/cases/{id}:
get:
operationId: getCaseForEdit
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CaseEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
put:
operationId: updateCaseDraft
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CaseEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CaseUpdateRequest'
security:
- sessionCookie: []
delete:
operationId: deleteCaseDraft
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/references:
post:
operationId: createReferenceDraft
tags:
- References
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftRequest'
security:
- sessionCookie: []
/api/v1/studio/references/{id}:
get:
operationId: getReferenceForEdit
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReferenceEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
put:
operationId: updateReferenceDraft
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReferenceEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReferenceUpdateRequest'
security:
- sessionCookie: []
delete:
operationId: deleteReferenceDraft
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/cases/{id}/validate:
post:
operationId: validateCase
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/cases/{id}/submit-review:
post:
operationId: submitReviewCase
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CaseEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/cases/{id}/return-to-draft:
post:
operationId: returnToDraftCase
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CaseEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/cases/{id}/unpublish:
post:
operationId: unpublishCase
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CaseEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/cases/{id}/archive:
post:
operationId: archiveCase
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CaseEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/cases/{id}/restore:
post:
operationId: restoreCase
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CaseEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/cases/{id}/publish:
post:
operationId: publishCase
tags:
- Cases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PublishResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PublishRequest'
security:
- sessionCookie: []
/api/v1/studio/references/{id}/validate:
post:
operationId: validateReference
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/references/{id}/submit-review:
post:
operationId: submitReviewReference
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReferenceEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/references/{id}/return-to-draft:
post:
operationId: returnToDraftReference
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReferenceEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/references/{id}/unpublish:
post:
operationId: unpublishReference
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReferenceEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/references/{id}/archive:
post:
operationId: archiveReference
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReferenceEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/references/{id}/restore:
post:
operationId: restoreReference
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReferenceEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/references/{id}/publish:
post:
operationId: publishReference
tags:
- References
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PublishResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PublishRequest'
security:
- sessionCookie: []
/api/v1/studio/questions:
post:
operationId: createQuestion
tags:
- Questions
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftRequest'
security:
- sessionCookie: []
get:
operationId: listStudioQuestions
tags:
- Questions
parameters:
- name: page
in: query
schema:
type: integer
minimum: 1
default: 1
- name: size
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionIndexPage'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}:
get:
operationId: getQuestionForEdit
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
put:
operationId: updateQuestion
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionUpdateBody'
security:
- sessionCookie: []
delete:
operationId: deleteQuestion
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/updates:
post:
operationId: addQuestionUpdate
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionUpdateResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionUpdateRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/updates/{updateId}:
put:
operationId: updateQuestionUpdate
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: updateId
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionUpdateResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionUpdateRequest'
security:
- sessionCookie: []
delete:
operationId: deleteQuestionUpdate
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: updateId
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/resolve:
post:
operationId: resolveQuestion
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResolveQuestionResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ResolveQuestionRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/start-investigation:
post:
operationId: startQuestionInvestigation
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/pause:
post:
operationId: pauseQuestion
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/resume:
post:
operationId: resumeQuestion
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/reopen:
post:
operationId: reopenQuestion
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/archive:
post:
operationId: archiveQuestion
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/publish:
post:
operationId: publishQuestion
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PublishResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PublishRequest'
security:
- sessionCookie: []
/api/v1/studio/questions/{id}/unpublish:
post:
operationId: unpublishQuestion
tags:
- Questions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/projects:
post:
operationId: createProject
tags:
- Projects
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftResponseEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftRequest'
security:
- sessionCookie: []
get:
operationId: listStudioProjects
tags:
- Projects
parameters:
- name: page
in: query
schema:
type: integer
minimum: 1
default: 1
- name: size
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectIndexPageEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}:
get:
operationId: getProjectForEdit
tags:
- Projects
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectEditResponseEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
security:
- sessionCookie: []
put:
operationId: updateProject
tags:
- Projects
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectEditResponseEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectUpdateRequest'
security:
- sessionCookie: []
delete:
operationId: deleteProject
tags:
- Projects
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}/change-phase:
post:
operationId: changeProjectPhase
tags:
- Projects
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeProjectPhaseRequest'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}/publish:
post:
operationId: publishProject
tags:
- Projects
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PublishResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PublishRequest'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}/unpublish:
post:
operationId: unpublishProject
tags:
- Projects
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}/decisions:
post:
operationId: createProjectDecision
tags:
- Decisions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DecisionResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDecisionRequest'
security:
- sessionCookie: []
get:
operationId: listStudioProjectDecisions
tags:
- Decisions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DecisionResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}/decisions/{decisionId}:
get:
operationId: getProjectDecision
tags:
- Decisions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: decisionId
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DecisionResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
put:
operationId: updateProjectDecision
tags:
- Decisions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: decisionId
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DecisionResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DecisionUpdateRequest'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}/decisions/{decisionId}/accept:
post:
operationId: acceptProjectDecision
tags:
- Decisions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: decisionId
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DecisionResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}/decisions/{decisionId}/reject:
post:
operationId: rejectProjectDecision
tags:
- Decisions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: decisionId
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DecisionResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}/decisions/{decisionId}/supersede:
post:
operationId: supersedeProjectDecision
tags:
- Decisions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: decisionId
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DecisionResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SupersedeDecisionRequest'
security:
- sessionCookie: []
/api/v1/studio/releases:
post:
operationId: createRelease
tags:
- Releases
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftResponseEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftRequest'
security:
- sessionCookie: []
get:
operationId: listStudioReleases
tags:
- Releases
parameters:
- name: page
in: query
schema:
type: integer
minimum: 1
default: 1
- name: size
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseIndexPageEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
security:
- sessionCookie: []
/api/v1/studio/releases/{id}:
get:
operationId: getReleaseForEdit
tags:
- Releases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseEditResponseEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
security:
- sessionCookie: []
put:
operationId: updateRelease
tags:
- Releases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseEditResponseEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseUpdateRequest'
security:
- sessionCookie: []
delete:
operationId: deleteRelease
tags:
- Releases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/releases/{id}/publish:
post:
operationId: publishRelease
tags:
- Releases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PublishResponseEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/releases/{id}/archive:
post:
operationId: archiveRelease
tags:
- Releases
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseEditResponseEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/topics:
get:
operationId: listStudioTopics
tags:
- Taxonomy
parameters: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TopicEditListEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
security:
- sessionCookie: []
post:
operationId: createTopic
tags:
- Taxonomy
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TopicEditEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TopicEdit'
security:
- sessionCookie: []
/api/v1/studio/topics/{id}:
put:
operationId: updateTopic
tags:
- Taxonomy
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TopicEditEnvelope'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TopicEdit'
security:
- sessionCookie: []
delete:
operationId: deleteTopic
tags:
- Taxonomy
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/tags:
get:
operationId: listStudioTags
tags:
- Taxonomy
parameters: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TagEdit'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
post:
operationId: createTag
tags:
- Taxonomy
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TagEdit'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TagEdit'
security:
- sessionCookie: []
/api/v1/studio/tags/{id}:
put:
operationId: updateTag
tags:
- Taxonomy
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TagEdit'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TagEdit'
security:
- sessionCookie: []
delete:
operationId: deleteTag
tags:
- Taxonomy
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/site:
get:
operationId: getStudioSite
tags:
- Identity
parameters: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SiteConfigResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
put:
operationId: updateStudioSite
tags:
- Identity
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SiteConfigResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SiteConfigRequest'
security:
- sessionCookie: []
/api/v1/studio/profile:
get:
operationId: getStudioProfile
tags:
- Identity
parameters: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
put:
operationId: updateStudioProfile
tags:
- Identity
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileEditRequest'
security:
- sessionCookie: []
/api/v1/studio/profile/publish:
post:
operationId: publishProfile
tags:
- Identity
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PublishResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/profile/unpublish:
post:
operationId: unpublishProfile
tags:
- Identity
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileEditResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpectedVersionRequest'
security:
- sessionCookie: []
/api/v1/studio/home-focus:
get:
operationId: getHomeFocus
tags:
- Identity
parameters: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/HomeFocusResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- sessionCookie: []
put:
operationId: updateHomeFocus
tags:
- Identity
parameters:
- $ref: '#/components/parameters/CsrfToken'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/HomeFocusResponse'
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: Unauthorized
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: Unprocessable Content
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/HomeFocusRequest'
security:
- sessionCookie: []
/api/v1/studio/projects/{id}/activities:
get:
operationId: listStudioProjectActivities
tags:
- Projects
security:
- sessionCookie: []
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectActivityResponse'
'401':
description: '401'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: '403'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: '404'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: '500'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
post:
operationId: createProjectActivity
tags:
- Projects
security:
- sessionCookie: []
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectActivityRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectActivityResponse'
'400':
description: '400'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: '401'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: '403'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: '404'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: '409'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: '422'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: '500'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
/api/v1/studio/projects/{id}/activities/{activityId}:
put:
operationId: updateProjectActivity
tags:
- Projects
security:
- sessionCookie: []
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: activityId
in: path
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/CsrfToken'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectActivityRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectActivityResponse'
'400':
description: '400'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'401':
description: '401'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: '403'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: '404'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'409':
description: '409'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'422':
description: '422'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'500':
description: '500'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
components:
securitySchemes:
sessionCookie:
type: apiKey
in: cookie
name: TECHLOG_SESSION
parameters:
CsrfToken:
name: X-CSRF-TOKEN
in: header
required: true
schema:
type: string
schemas:
# -------------------------------------------------------------------------
# 응답 봉투 (ADR-006)
#
# 이 파일 상단이 예고한 변환이다. 지금은 topics/projects 9개 operation 만
# 옮겼다 — 그 둘이 첫 소비자이기 때문이고, 나머지는 구현에 착수할 때 같은
# 방식으로 따라온다. 그동안 이 파일에는 두 모양이 공존한다: 변환된
# operation 은 `application/json` + Envelope, 나머지는 예전
# `application/problem+json` + ProblemDetails 다.
# -------------------------------------------------------------------------
ResponseMeta:
type: object
additionalProperties: false
required:
- requestId
- traceId
properties:
requestId:
type: string
minLength: 1
maxLength: 200
traceId:
type: string
minLength: 1
maxLength: 200
correlationId:
type:
- string
- 'null'
maxLength: 200
page:
type:
- object
- 'null'
additionalProperties: true
description: 백엔드 템플릿의 ResponseMeta record 가 직렬화하는 자리다. 페이지 정보는 payload 의 `page` 가 소유하므로 이 관리 표면에서는 항상 null 이다.
ApiError:
type: object
additionalProperties: false
required:
- code
- category
- message
- retryable
properties:
code:
type: string
enum:
- AUTHENTICATION_REQUIRED
- STUDIO_ACCESS_DENIED
- REQUEST_VALIDATION_FAILED
- VERSION_CONFLICT
- TOPIC_NOT_FOUND
- TOPIC_NAME_TAKEN
- TOPIC_SLUG_TAKEN
- TOPIC_IN_USE
- PROJECT_NOT_FOUND
- PROJECT_SLUG_TAKEN
- PROJECT_IN_USE
- RELEASE_NOT_FOUND
- RELEASE_VERSION_TAKEN
- RELEASE_NOT_PUBLISHABLE
- DOCUMENT_NOT_FOUND
- DOCUMENT_PUBLISHED
- DOCUMENT_IN_USE
- QUESTION_NOT_FOUND
- QUESTION_IN_USE
- INTERNAL_ERROR
description: '`INTERNAL_ERROR` 는 이 기능이 아니라 스켈레톤의 공통 처리기가 내는 코드다. 계약이 그것까지 열거해야 500 응답이 계약을 벗어나지 않는다.'
category:
type: string
enum:
- VALIDATION
- AUTH
- AUTHZ
- NOT_FOUND
- CONFLICT
- RATE_LIMIT
- TRANSIENT_DEPENDENCY
- PERMANENT_DEPENDENCY
- DATA_INTEGRITY
- INTERNAL
message:
type: string
minLength: 1
maxLength: 5000
retryable:
type: boolean
details:
oneOf:
- $ref: '#/components/schemas/ValidationErrorDetails'
- $ref: '#/components/schemas/VersionConflictDetails'
- type: 'null'
ValidationErrorDetails:
type: object
additionalProperties: false
required:
- fieldErrors
properties:
fieldErrors:
type: array
maxItems: 200
items:
$ref: '#/components/schemas/FieldError'
VersionConflictDetails:
type: object
additionalProperties: false
required:
- currentVersion
properties:
currentVersion:
type: integer
format: int64
minimum: 0
ErrorEnvelope:
type: object
additionalProperties: false
required:
- success
- error
- meta
properties:
success:
type: boolean
const: false
error:
$ref: '#/components/schemas/ApiError'
meta:
$ref: '#/components/schemas/ResponseMeta'
TopicEditEnvelope:
type: object
additionalProperties: false
required:
- success
- data
- meta
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/TopicEdit'
meta:
$ref: '#/components/schemas/ResponseMeta'
TopicEditListEnvelope:
type: object
additionalProperties: false
required:
- success
- data
- meta
properties:
success:
type: boolean
const: true
data:
type: array
maxItems: 500
items:
$ref: '#/components/schemas/TopicEdit'
meta:
$ref: '#/components/schemas/ResponseMeta'
CreateDraftResponseEnvelope:
type: object
additionalProperties: false
required:
- success
- data
- meta
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/CreateDraftResponse'
meta:
$ref: '#/components/schemas/ResponseMeta'
ProjectIndexPageEnvelope:
type: object
additionalProperties: false
required:
- success
- data
- meta
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/ProjectIndexPage'
meta:
$ref: '#/components/schemas/ResponseMeta'
ReleaseIndexPageEnvelope:
type: object
additionalProperties: false
required:
- success
- data
- meta
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/ReleaseIndexPage'
meta:
$ref: '#/components/schemas/ResponseMeta'
ReleaseEditResponseEnvelope:
type: object
additionalProperties: false
required:
- success
- data
- meta
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/ReleaseEditResponse'
meta:
$ref: '#/components/schemas/ResponseMeta'
PublishResponseEnvelope:
type: object
additionalProperties: false
required:
- success
- data
- meta
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/PublishResponse'
meta:
$ref: '#/components/schemas/ResponseMeta'
ProjectEditResponseEnvelope:
type: object
additionalProperties: false
required:
- success
- data
- meta
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/ProjectEditResponse'
meta:
$ref: '#/components/schemas/ResponseMeta'
FieldError:
type: object
required:
- field
- code
- message
properties:
field:
type: string
code:
type: string
message:
type: string
ProblemDetails:
type: object
required:
- type
- title
- status
- code
- detail
- instance
- traceId
properties:
type:
type: string
title:
type: string
status:
type: integer
code:
type: string
detail:
type: string
instance:
type: string
traceId:
type: string
fieldErrors:
type: array
items:
$ref: '#/components/schemas/FieldError'
currentVersion:
type: integer
format: int64
PageMetadata:
type: object
required:
- number
- size
- totalElements
- totalPages
- hasPrevious
- hasNext
properties:
number:
type: integer
minimum: 1
size:
type: integer
minimum: 1
maximum: 100
totalElements:
type: integer
format: int64
minimum: 0
totalPages:
type: integer
minimum: 0
hasPrevious:
type: boolean
hasNext:
type: boolean
TagSummary:
type: object
required:
- name
- slug
properties:
name:
type: string
slug:
type: string
ProjectSummary:
type: object
required:
- name
- slug
- path
properties:
name:
type: string
slug:
type: string
path:
type: string
AssetReference:
type: object
required:
- assetId
- url
properties:
assetId:
type: string
format: uuid
url:
type: string
altText:
type: string
width:
type: integer
height:
type: integer
contentType:
type: string
RelatedEntry:
type: object
required:
- type
- title
- path
properties:
type:
type: string
enum:
- CASE
- REFERENCE
- QUESTION
- PROJECT
- PROJECT_DECISION
- RELEASE
title:
type: string
summary:
type: string
path:
type: string
PublicationStatus:
type: object
required:
- state
- hasUnpublishedChanges
properties:
state:
type: string
enum:
- NEVER_PUBLISHED
- ACTIVE
- WITHDRAWN
publishedSourceVersion:
type: integer
format: int64
hasUnpublishedChanges:
type: boolean
canonicalPath:
type: string
publishedAt:
type: string
format: date-time
ValidationIssue:
type: object
required:
- severity
- code
- message
properties:
severity:
type: string
enum:
- ERROR
- WARNING
code:
type: string
field:
type: string
message:
type: string
ValidationResponse:
type: object
required:
- validForSave
- validForPublish
- issues
properties:
validForSave:
type: boolean
validForPublish:
type: boolean
issues:
type: array
items:
$ref: '#/components/schemas/ValidationIssue'
CreateDraftRequest:
type: object
required:
- title
properties:
title:
type: string
maxLength: 180
CreateDraftResponse:
type: object
required:
- id
- status
- version
- createdAt
properties:
id:
type: string
format: uuid
status:
type: string
enum:
- DRAFT
version:
type: integer
format: int64
createdAt:
type: string
format: date-time
RelationEdit:
type: object
properties:
primaryProjectId:
type: string
format: uuid
relatedProjectIds:
type: array
items:
type: string
format: uuid
originQuestionId:
type: string
format: uuid
relatedDocumentIds:
type: array
items:
type: string
format: uuid
derivedReferenceIds:
type: array
items:
type: string
format: uuid
CaseUpdateRequest:
type: object
required:
- expectedVersion
- title
- problemSummary
- conclusionSummary
- content
- contentFormatVersion
- tagIds
- relations
properties:
expectedVersion:
type: integer
format: int64
title:
type: string
maxLength: 180
slug:
type: string
maxLength: 180
problemSummary:
type: string
maxLength: 600
conclusionSummary:
type: string
maxLength: 600
environmentSummary:
type: array
items:
type: string
content:
type: string
maxLength: 2000000
contentFormatVersion:
type: integer
minimum: 1
primaryTopicId:
type: string
format: uuid
tagIds:
type: array
maxItems: 12
items:
type: string
format: uuid
relations:
$ref: '#/components/schemas/RelationEdit'
coverAssetId:
type: string
format: uuid
lastVerifiedAt:
type: string
format: date-time
targetVisibility:
type: string
enum:
- PRIVATE
- UNLISTED
- PUBLIC
CaseEditResponse:
type: object
required:
- id
- version
- title
- problemSummary
- conclusionSummary
- content
- contentFormatVersion
- tagIds
- relations
- workflowStatus
- targetVisibility
- publication
- updatedAt
properties:
id:
type: string
format: uuid
version:
type: integer
format: int64
title:
type: string
slug:
type: string
problemSummary:
type: string
conclusionSummary:
type: string
environmentSummary:
type: array
items:
type: string
content:
type: string
contentFormatVersion:
type: integer
primaryTopicId:
type: string
format: uuid
tagIds:
type: array
items:
type: string
format: uuid
relations:
$ref: '#/components/schemas/RelationEdit'
coverAssetId:
type: string
format: uuid
lastVerifiedAt:
type: string
format: date-time
workflowStatus:
type: string
targetVisibility:
type: string
publication:
$ref: '#/components/schemas/PublicationStatus'
updatedAt:
type: string
format: date-time
ReferenceUpdateRequest:
type: object
required:
- expectedVersion
- title
- scopeSummary
- appliesTo
- excludedScope
- freshnessStatus
- content
- contentFormatVersion
- tagIds
- relations
properties:
expectedVersion:
type: integer
format: int64
title:
type: string
maxLength: 180
slug:
type: string
maxLength: 180
scopeSummary:
type: string
maxLength: 600
appliesTo:
type: array
items:
type: string
excludedScope:
type: array
items:
type: string
freshnessStatus:
type: string
enum:
- CURRENT
- REVIEW_DUE
- HISTORICAL
content:
type: string
maxLength: 2000000
contentFormatVersion:
type: integer
minimum: 1
primaryTopicId:
type: string
format: uuid
tagIds:
type: array
maxItems: 12
items:
type: string
format: uuid
relations:
$ref: '#/components/schemas/RelationEdit'
coverAssetId:
type: string
format: uuid
lastVerifiedAt:
type: string
format: date-time
targetVisibility:
type: string
enum:
- PRIVATE
- UNLISTED
- PUBLIC
ReferenceEditResponse:
type: object
required:
- id
- version
- title
- scopeSummary
- appliesTo
- excludedScope
- freshnessStatus
- content
- contentFormatVersion
- tagIds
- relations
- workflowStatus
- targetVisibility
- publication
- updatedAt
properties:
id:
type: string
format: uuid
version:
type: integer
format: int64
title:
type: string
slug:
type: string
scopeSummary:
type: string
appliesTo:
type: array
items:
type: string
excludedScope:
type: array
items:
type: string
freshnessStatus:
type: string
content:
type: string
contentFormatVersion:
type: integer
primaryTopicId:
type: string
format: uuid
tagIds:
type: array
items:
type: string
format: uuid
relations:
$ref: '#/components/schemas/RelationEdit'
coverAssetId:
type: string
format: uuid
lastVerifiedAt:
type: string
format: date-time
workflowStatus:
type: string
targetVisibility:
type: string
publication:
$ref: '#/components/schemas/PublicationStatus'
updatedAt:
type: string
format: date-time
ExpectedVersionRequest:
type: object
required:
- expectedVersion
properties:
expectedVersion:
type: integer
format: int64
PublishRequest:
type: object
required:
- expectedVersion
- visibility
properties:
expectedVersion:
type: integer
format: int64
visibility:
type: string
enum:
- PUBLIC
- UNLISTED
PublishResponse:
type: object
required:
- id
- status
- visibility
- canonicalPath
- publishedAt
- version
properties:
id:
type: string
format: uuid
status:
type: string
enum:
- PUBLISHED
visibility:
type: string
enum:
- PUBLIC
- UNLISTED
canonicalPath:
type: string
publishedAt:
type: string
format: date-time
version:
type: integer
format: int64
QuestionPointEdit:
type: object
required:
- kind
- content
- displayOrder
properties:
id:
type: string
format: uuid
kind:
type: string
enum:
- FACT
- ASSUMPTION
- UNKNOWN
- CONSTRAINT
content:
type: string
displayOrder:
type: integer
minimum: 0
QuestionUpdateRequest:
type: object
required:
- expectedVersion
- type
- title
- bodyMarkdown
- visibility
- occurredAt
properties:
type:
type: string
enum:
- OBSERVATION
- EVIDENCE
- SCOPE_CHANGE
- BLOCKER
- NEXT_STEP
- RESOLUTION
- RESOLUTION_REOPENED
title:
type: string
maxLength: 180
bodyMarkdown:
type: string
visibility:
type: string
enum:
- PRIVATE
- PUBLIC
occurredAt:
type: string
format: date-time
expectedVersion:
type: integer
format: int64
QuestionUpdateResponse:
type: object
required:
- id
- questionVersion
- type
- title
- bodyMarkdown
- visibility
- occurredAt
properties:
id:
type: string
format: uuid
questionVersion:
type: integer
format: int64
type:
type: string
title:
type: string
bodyMarkdown:
type: string
visibility:
type: string
occurredAt:
type: string
format: date-time
QuestionUpdateBody:
type: object
required:
- expectedVersion
- question
- summary
- context
- importance
- points
- tagIds
properties:
expectedVersion:
type: integer
format: int64
question:
type: string
maxLength: 300
slug:
type: string
maxLength: 180
summary:
type: string
maxLength: 600
context:
type: string
importance:
type: string
nextVerification:
type: string
targetVisibility:
type: string
enum:
- PRIVATE
- UNLISTED
- PUBLIC
primaryProjectId:
type: string
format: uuid
topicId:
type: string
format: uuid
tagIds:
type: array
maxItems: 12
items:
type: string
format: uuid
points:
type: array
items:
$ref: '#/components/schemas/QuestionPointEdit'
QuestionEditResponse:
type: object
required:
- id
- version
- question
- status
- targetVisibility
- points
- updates
- publication
- updatedAt
properties:
id:
type: string
format: uuid
version:
type: integer
format: int64
question:
type: string
slug:
type: string
summary:
type: string
context:
type: string
importance:
type: string
nextVerification:
type: string
status:
type: string
targetVisibility:
type: string
primaryProjectId:
type: string
format: uuid
topicId:
type: string
format: uuid
tagIds:
type: array
items:
type: string
format: uuid
points:
type: array
items:
$ref: '#/components/schemas/QuestionPointEdit'
updates:
type: array
items:
$ref: '#/components/schemas/QuestionUpdateResponse'
resolution:
type: object
properties:
type:
type: string
summary:
type: string
resolvedAt:
type: string
format: date-time
publication:
$ref: '#/components/schemas/PublicationStatus'
updatedAt:
type: string
format: date-time
ResolveQuestionRequest:
type: object
required:
- expectedVersion
- resolutionType
- resolutionSummary
- resolvedAt
- createCaseDraft
- createProjectDecision
properties:
expectedVersion:
type: integer
format: int64
resolutionType:
type: string
enum:
- DECISION_MADE
- ASSUMPTION_REJECTED
- QUESTION_REFRAMED
- NO_LONGER_RELEVANT
resolutionSummary:
type: string
resolvedAt:
type: string
format: date-time
createCaseDraft:
type: boolean
createProjectDecision:
type: boolean
ResolveQuestionResponse:
type: object
required:
- questionId
- status
- version
properties:
questionId:
type: string
format: uuid
status:
type: string
enum:
- RESOLVED
version:
type: integer
format: int64
createdCaseDraftId:
type: string
format: uuid
createdProjectDecisionId:
type: string
format: uuid
ProjectUpdateRequest:
type: object
required:
- expectedVersion
- name
- oneLinePurpose
- purposeMarkdown
- boundaryMarkdown
- phase
- technologyLabels
- targetVisibility
properties:
expectedVersion:
type: integer
format: int64
name:
type: string
maxLength: 180
slug:
type: string
maxLength: 180
oneLinePurpose:
type: string
maxLength: 600
purposeMarkdown:
type: string
boundaryMarkdown:
type: string
systemOverviewMarkdown:
type: string
phase:
type: string
currentObjective:
type: string
nextStep:
type: string
technologyLabels:
type: array
items:
type: string
targetVisibility:
type: string
enum:
- PRIVATE
- UNLISTED
- PUBLIC
featuredOrder:
type: integer
topicIds:
type: array
items:
type: string
format: uuid
documentLinks:
type: array
items:
$ref: '#/components/schemas/ProjectResourceLinkEdit'
questionLinks:
type: array
items:
$ref: '#/components/schemas/ProjectResourceLinkEdit'
ProjectEditResponse:
type: object
required:
- id
- version
- name
- phase
- workflowStatus
- targetVisibility
- publication
- updatedAt
properties:
id:
type: string
format: uuid
version:
type: integer
format: int64
name:
type: string
slug:
type: string
oneLinePurpose:
type: string
purposeMarkdown:
type: string
boundaryMarkdown:
type: string
systemOverviewMarkdown:
type: string
phase:
type: string
currentObjective:
type: string
nextStep:
type: string
technologyLabels:
type: array
items:
type: string
workflowStatus:
type: string
targetVisibility:
type: string
featuredOrder:
type: integer
publication:
$ref: '#/components/schemas/PublicationStatus'
updatedAt:
type: string
format: date-time
topicIds:
type: array
items:
type: string
format: uuid
documentLinks:
type: array
items:
$ref: '#/components/schemas/ProjectResourceLinkEdit'
questionLinks:
type: array
items:
$ref: '#/components/schemas/ProjectResourceLinkEdit'
ChangeProjectPhaseRequest:
type: object
required:
- expectedVersion
- phase
- reason
- publishActivity
properties:
expectedVersion:
type: integer
format: int64
phase:
type: string
reason:
type: string
publishActivity:
type: boolean
DecisionUpdateRequest:
type: object
required:
- expectedVersion
- statement
- rationaleMarkdown
- consequences
- alternativesMarkdown
- targetVisibility
properties:
expectedVersion:
type: integer
format: int64
statement:
type: string
maxLength: 1000
rationaleMarkdown:
type: string
consequences:
type: array
items:
type: string
alternativesMarkdown:
type: string
targetVisibility:
type: string
enum:
- PRIVATE
- PUBLIC
sourceQuestionId:
type: string
format: uuid
sourceCaseId:
type: string
format: uuid
isFeatured:
type: boolean
decidedAt:
type: string
format: date-time
DecisionResponse:
allOf:
- $ref: '#/components/schemas/DecisionUpdateRequest'
- type: object
required:
- id
- projectId
- status
- version
properties:
id:
type: string
format: uuid
projectId:
type: string
format: uuid
status:
type: string
version:
type: integer
format: int64
supersededById:
type: string
format: uuid
ReleaseUpdateRequest:
type: object
required:
- expectedVersion
- versionLabel
- title
- summary
- changeTypes
- changesMarkdown
- verificationMarkdown
properties:
expectedVersion:
type: integer
format: int64
versionLabel:
type: string
maxLength: 32
title:
type: string
maxLength: 180
summary:
type: string
maxLength: 600
releasedOn:
type: string
format: date
changeTypes:
type: array
items:
type: string
reasonMarkdown:
type: string
changesMarkdown:
type: string
userImpactMarkdown:
type: string
implementationImpactMarkdown:
type: string
verificationMarkdown:
type: string
knownLimitationsMarkdown:
type: string
relatedResources:
type: array
items:
type: object
required:
- resourceType
- resourceId
properties:
resourceType:
type: string
resourceId:
type: string
format: uuid
ReleaseEditResponse:
allOf:
- $ref: '#/components/schemas/ReleaseUpdateRequest'
- type: object
required:
- id
- workflowStatus
- version
- publication
properties:
id:
type: string
format: uuid
workflowStatus:
type: string
version:
type: integer
format: int64
publication:
$ref: '#/components/schemas/PublicationStatus'
TopicEdit:
type: object
required:
- name
- slug
properties:
id:
type: string
format: uuid
description: |-
응답에만 실린다. 경로가 `/topics/{id}`이므로 이 값이 없으면 목록에서 어떤 주제도
주소지정할 수 없다 — ProjectEditResponse / CaseEditResponse는 같은 이유로 이미
id를 싣고 있었고, TopicEdit만 빠져 있었다. 쓰기 요청에 와도 서버는 무시한다;
수정 대상은 경로가 소유한다.
version:
type: integer
format: int64
description: |-
응답에만 실린다. 다음 수정에서 보낼 `expectedVersion`의 출처다. 이것이 없으면
클라이언트가 낙관적 잠금에 쓸 값을 얻을 방법이 없다.
name:
type: string
maxLength: 80
slug:
type: string
maxLength: 100
description:
type: string
maxLength: 600
scope:
type: string
status:
type: string
enum:
- ACTIVE
- ARCHIVED
expectedVersion:
type: integer
format: int64
featuredReferenceId:
type: string
format: uuid
featuredCaseIds:
type: array
maxItems: 3
items:
type: string
format: uuid
TagEdit:
type: object
required:
- name
- slug
properties:
name:
type: string
maxLength: 40
slug:
type: string
maxLength: 60
expectedVersion:
type: integer
format: int64
SiteConfigRequest:
type: object
required:
- expectedVersion
- brandTitle
- identityStatement
- operatorDisplayName
- contacts
properties:
expectedVersion:
type: integer
format: int64
brandTitle:
type: string
identityStatement:
type: string
operatorDisplayName:
type: string
shortIdentity:
type: string
avatarAssetId:
type: string
format: uuid
contacts:
type: array
items:
type: object
ProfileEditRequest:
type: object
required:
- expectedVersion
- headline
- workingModel
- territories
- selectedEvidence
- trajectory
- contacts
- targetVisibility
properties:
expectedVersion:
type: integer
format: int64
headline:
type: string
introductionMarkdown:
type: string
workingModel:
type: array
items:
type: object
territories:
type: array
items:
type: object
selectedEvidence:
type: array
items:
type: object
trajectory:
type: array
items:
type: object
contacts:
type: array
items:
type: object
targetVisibility:
type: string
enum:
- PRIVATE
- PUBLIC
HomeFocusRequest:
type: object
required:
- expectedVersion
properties:
expectedVersion:
type: integer
format: int64
defaultType:
type: string
enum:
- CURRENT_WORK
- OPEN_QUESTION
- RECENT_DECISION
currentProjectId:
type: string
format: uuid
openQuestionId:
type: string
format: uuid
recentDecisionId:
type: string
format: uuid
QuestionIndexItem:
type: object
required:
- id
- question
- status
- targetVisibility
- updatedAt
- version
- publication
properties:
id:
type: string
format: uuid
question:
type: string
status:
type: string
targetVisibility:
type: string
primaryProject:
$ref: '#/components/schemas/ProjectSummary'
nextVerification:
type: string
updatedAt:
type: string
format: date-time
version:
type: integer
format: int64
publication:
$ref: '#/components/schemas/PublicationStatus'
QuestionIndexPage:
type: object
required:
- items
- page
properties:
items:
type: array
items:
$ref: '#/components/schemas/QuestionIndexItem'
page:
$ref: '#/components/schemas/PageMetadata'
ProjectIndexItem:
type: object
required:
- id
- name
- phase
- workflowStatus
- targetVisibility
- updatedAt
- version
- publication
properties:
id:
type: string
format: uuid
name:
type: string
phase:
type: string
workflowStatus:
type: string
targetVisibility:
type: string
currentObjective:
type: string
nextStep:
type: string
updatedAt:
type: string
format: date-time
version:
type: integer
format: int64
publication:
$ref: '#/components/schemas/PublicationStatus'
ProjectIndexPage:
type: object
required:
- items
- page
properties:
items:
type: array
items:
$ref: '#/components/schemas/ProjectIndexItem'
page:
$ref: '#/components/schemas/PageMetadata'
ReleaseIndexItem:
type: object
required:
- id
- versionLabel
- title
- workflowStatus
- updatedAt
- version
- publication
properties:
id:
type: string
format: uuid
versionLabel:
type: string
title:
type: string
releasedOn:
type: string
format: date
workflowStatus:
type: string
updatedAt:
type: string
format: date-time
version:
type: integer
format: int64
publication:
$ref: '#/components/schemas/PublicationStatus'
ReleaseIndexPage:
type: object
required:
- items
- page
properties:
items:
type: array
items:
$ref: '#/components/schemas/ReleaseIndexItem'
page:
$ref: '#/components/schemas/PageMetadata'
SiteConfigResponse:
type: object
required:
- id
- version
- brandTitle
- identityStatement
- operatorDisplayName
- contacts
properties:
id:
type: string
format: uuid
version:
type: integer
format: int64
brandTitle:
type: string
identityStatement:
type: string
operatorDisplayName:
type: string
shortIdentity:
type: string
avatarAssetId:
type: string
format: uuid
contacts:
type: array
items:
type: object
ProfileEditResponse:
type: object
required:
- id
- version
- headline
- workingModel
- territories
- selectedEvidence
- trajectory
- contacts
- targetVisibility
- publication
properties:
id:
type: string
format: uuid
version:
type: integer
format: int64
headline:
type: string
introductionMarkdown:
type: string
workingModel:
type: array
items:
type: object
territories:
type: array
items:
type: object
selectedEvidence:
type: array
items:
type: object
trajectory:
type: array
items:
type: object
contacts:
type: array
items:
type: object
targetVisibility:
type: string
publication:
$ref: '#/components/schemas/PublicationStatus'
HomeFocusResponse:
type: object
required:
- id
- version
properties:
id:
type: string
format: uuid
version:
type: integer
format: int64
defaultType:
type: string
currentProjectId:
type: string
format: uuid
openQuestionId:
type: string
format: uuid
recentDecisionId:
type: string
format: uuid
ProjectResourceLinkEdit:
type: object
required:
- resourceId
- relationType
properties:
resourceId:
type: string
format: uuid
relationType:
type: string
enum:
- PRIMARY
- RELATED
featuredOrder:
type: integer
minimum: 0
CreateDecisionRequest:
type: object
required:
- expectedProjectVersion
- statement
- rationaleMarkdown
- consequences
- alternativesMarkdown
- targetVisibility
properties:
expectedProjectVersion:
type: integer
format: int64
statement:
type: string
maxLength: 1000
rationaleMarkdown:
type: string
consequences:
type: array
items:
type: string
alternativesMarkdown:
type: string
targetVisibility:
type: string
enum:
- PRIVATE
- PUBLIC
sourceQuestionId:
type: string
format: uuid
sourceCaseId:
type: string
format: uuid
isFeatured:
type: boolean
decidedAt:
type: string
format: date-time
SupersedeDecisionRequest:
type: object
required:
- expectedVersion
- supersededById
properties:
expectedVersion:
type: integer
format: int64
supersededById:
type: string
format: uuid
ProjectActivityRequest:
type: object
required:
- expectedProjectVersion
- activityType
- title
- visibility
- occurredAt
properties:
expectedProjectVersion:
type: integer
format: int64
activityType:
type: string
title:
type: string
maxLength: 180
summary:
type: string
maxLength: 600
visibility:
type: string
enum:
- PRIVATE
- PUBLIC
relatedResourceType:
type: string
relatedResourceId:
type: string
format: uuid
occurredAt:
type: string
format: date-time
ProjectActivityResponse:
type: object
required:
- id
- projectId
- activityType
- title
- visibility
- origin
- occurredAt
- version
properties:
id:
type: string
format: uuid
projectId:
type: string
format: uuid
activityType:
type: string
title:
type: string
summary:
type: string
visibility:
type: string
origin:
type: string
relatedResourceType:
type: string
relatedResourceId:
type: string
format: uuid
occurredAt:
type: string
format: date-time
version:
type: integer
format: int64
UpdateProjectActivityRequest:
type: object
required:
- expectedVersion
- title
- visibility
- occurredAt
properties:
expectedVersion:
type: integer
format: int64
title:
type: string
summary:
type: string
visibility:
type: string
enum:
- PRIVATE
- PUBLIC
occurredAt:
type: string
format: date-time