contract: discriminator enum 정정 반영해 studio 계약 재생성

design-package d170392이 discriminator 판별 필드를 const에서 단일값
enum으로 바꿨다(wire 의미 동일, openapi-generator 7.18.0의
discriminator+const NPE를 피하려는 정정). vendor된 계약과 생성 타입을
다시 맞춘다. 실질적인 리터럴 타입은 그대로다 — JSDoc 태그만
@constant에서 @enum {string}으로 바뀌었다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
DongHyeonka
2026-08-18 22:32:32 +09:00
co-authored by Claude Opus 5
parent d23a18f659
commit 9244f5c15d
3 changed files with 45 additions and 45 deletions
@@ -1,8 +1,8 @@
{ {
"packageId": "@tech-log/studio-contract", "packageId": "@tech-log/studio-contract",
"version": "3.0.0", "version": "3.0.0",
"digest": "sha256:25ed2e9f5b76bfeacf66e5a84ea8daf05979faa0b54e4980781f02115bbf0627", "digest": "sha256:8ec2170ccdb27bd7ef29b46d732527987cf69d2c9818f7fe1943cb4d12b0dde4",
"sourceRevision": "3e8a164", "sourceRevision": "d170392",
"operationIds": [ "operationIds": [
"getStudioSession", "getStudioSession",
"getStudioDashboard", "getStudioDashboard",
@@ -588,7 +588,7 @@ export interface components {
relations: components["schemas"]["RelationInput"][]; relations: components["schemas"]["RelationInput"][];
}; };
CaseInput: components["schemas"]["WorkingCopyInputBase"] & { CaseInput: components["schemas"]["WorkingCopyInputBase"] & {
/** @constant */ /** @enum {string} */
kind: "CASE"; kind: "CASE";
problem: string; problem: string;
conclusion: string; conclusion: string;
@@ -608,7 +608,7 @@ export interface components {
kind: "CASE"; kind: "CASE";
}; };
ReferenceInput: components["schemas"]["WorkingCopyInputBase"] & { ReferenceInput: components["schemas"]["WorkingCopyInputBase"] & {
/** @constant */ /** @enum {string} */
kind: "REFERENCE"; kind: "REFERENCE";
purpose: string; purpose: string;
rules: components["schemas"]["ReferenceRule"][]; rules: components["schemas"]["ReferenceRule"][];
@@ -625,7 +625,7 @@ export interface components {
kind: "REFERENCE"; kind: "REFERENCE";
}; };
QuestionInput: components["schemas"]["WorkingCopyInputBase"] & { QuestionInput: components["schemas"]["WorkingCopyInputBase"] & {
/** @constant */ /** @enum {string} */
kind: "QUESTION"; kind: "QUESTION";
/** /**
* @description Backend Inquiry lifecycle의 축약 view다. * @description Backend Inquiry lifecycle의 축약 view다.
@@ -652,7 +652,7 @@ export interface components {
kind: "QUESTION"; kind: "QUESTION";
}; };
ProjectDecisionInput: components["schemas"]["WorkingCopyInputBase"] & { ProjectDecisionInput: components["schemas"]["WorkingCopyInputBase"] & {
/** @constant */ /** @enum {string} */
kind: "PROJECT_DECISION"; kind: "PROJECT_DECISION";
/** /**
* @description UI 용어다. Backend Domain의 `ACCEPTED`/`ADOPTED` 명칭이 다르면 * @description UI 용어다. Backend Domain의 `ACCEPTED`/`ADOPTED` 명칭이 다르면
@@ -687,7 +687,7 @@ export interface components {
updatedAt: string; updatedAt: string;
}; };
CaseWorkingCopy: components["schemas"]["WorkingCopyBase"] & { CaseWorkingCopy: components["schemas"]["WorkingCopyBase"] & {
/** @constant */ /** @enum {string} */
kind: "CASE"; kind: "CASE";
problem: string; problem: string;
conclusion: string; conclusion: string;
@@ -704,7 +704,7 @@ export interface components {
kind: "CASE"; kind: "CASE";
}; };
ReferenceWorkingCopy: components["schemas"]["WorkingCopyBase"] & { ReferenceWorkingCopy: components["schemas"]["WorkingCopyBase"] & {
/** @constant */ /** @enum {string} */
kind: "REFERENCE"; kind: "REFERENCE";
purpose: string; purpose: string;
rules: components["schemas"]["ReferenceRule"][]; rules: components["schemas"]["ReferenceRule"][];
@@ -721,7 +721,7 @@ export interface components {
kind: "REFERENCE"; kind: "REFERENCE";
}; };
QuestionWorkingCopy: components["schemas"]["WorkingCopyBase"] & { QuestionWorkingCopy: components["schemas"]["WorkingCopyBase"] & {
/** @constant */ /** @enum {string} */
kind: "QUESTION"; kind: "QUESTION";
/** @enum {string|null} */ /** @enum {string|null} */
questionStatus: "OPEN" | "RESOLVED" | null; questionStatus: "OPEN" | "RESOLVED" | null;
@@ -740,7 +740,7 @@ export interface components {
kind: "QUESTION"; kind: "QUESTION";
}; };
ProjectDecisionWorkingCopy: components["schemas"]["WorkingCopyBase"] & { ProjectDecisionWorkingCopy: components["schemas"]["WorkingCopyBase"] & {
/** @constant */ /** @enum {string} */
kind: "PROJECT_DECISION"; kind: "PROJECT_DECISION";
/** @enum {string|null} */ /** @enum {string|null} */
decisionStatus: "PROPOSED" | "ADOPTED" | null; decisionStatus: "PROPOSED" | "ADOPTED" | null;
@@ -911,7 +911,7 @@ export interface components {
}; };
Inline: components["schemas"]["InlineText"] | components["schemas"]["InlineEmphasis"] | components["schemas"]["InlineStrong"] | components["schemas"]["InlineCode"] | components["schemas"]["InlineLink"] | components["schemas"]["InlineStatus"]; Inline: components["schemas"]["InlineText"] | components["schemas"]["InlineEmphasis"] | components["schemas"]["InlineStrong"] | components["schemas"]["InlineCode"] | components["schemas"]["InlineLink"] | components["schemas"]["InlineStatus"];
InlineEmphasis: components["schemas"]["InlineContainer"] & { InlineEmphasis: components["schemas"]["InlineContainer"] & {
/** @constant */ /** @enum {string} */
type?: "EMPHASIS"; type?: "EMPHASIS";
} & { } & {
/** /**
@@ -921,7 +921,7 @@ export interface components {
type: "EMPHASIS"; type: "EMPHASIS";
}; };
InlineStrong: components["schemas"]["InlineContainer"] & { InlineStrong: components["schemas"]["InlineContainer"] & {
/** @constant */ /** @enum {string} */
type?: "STRONG"; type?: "STRONG";
} & { } & {
/** /**
@@ -966,7 +966,7 @@ export interface components {
items: components["schemas"]["ListItem"][]; items: components["schemas"]["ListItem"][];
}; };
UnorderedListBlock: components["schemas"]["ListBlockBase"] & { UnorderedListBlock: components["schemas"]["ListBlockBase"] & {
/** @constant */ /** @enum {string} */
type?: "UNORDERED_LIST"; type?: "UNORDERED_LIST";
} & { } & {
/** /**
@@ -976,7 +976,7 @@ export interface components {
type: "UNORDERED_LIST"; type: "UNORDERED_LIST";
}; };
OrderedListBlock: components["schemas"]["ListBlockBase"] & { OrderedListBlock: components["schemas"]["ListBlockBase"] & {
/** @constant */ /** @enum {string} */
type?: "ORDERED_LIST"; type?: "ORDERED_LIST";
} & { } & {
/** /**
@@ -1074,7 +1074,7 @@ export interface components {
}; };
CaseRenderBlock: components["schemas"]["HeadingBlock"] | components["schemas"]["ParagraphBlock"] | components["schemas"]["BlockquoteBlock"] | components["schemas"]["UnorderedListBlock"] | components["schemas"]["OrderedListBlock"] | components["schemas"]["CodeBlock"] | components["schemas"]["DataTableBlock"] | components["schemas"]["CalloutBlock"] | components["schemas"]["EvidenceFigureBlock"]; CaseRenderBlock: components["schemas"]["HeadingBlock"] | components["schemas"]["ParagraphBlock"] | components["schemas"]["BlockquoteBlock"] | components["schemas"]["UnorderedListBlock"] | components["schemas"]["OrderedListBlock"] | components["schemas"]["CodeBlock"] | components["schemas"]["DataTableBlock"] | components["schemas"]["CalloutBlock"] | components["schemas"]["EvidenceFigureBlock"];
CasePublicRenderModel: components["schemas"]["PublicRenderModelBase"] & { CasePublicRenderModel: components["schemas"]["PublicRenderModelBase"] & {
/** @constant */ /** @enum {string} */
kind: "CASE"; kind: "CASE";
problem: string; problem: string;
conclusion: string; conclusion: string;
@@ -1091,7 +1091,7 @@ export interface components {
kind: "CASE"; kind: "CASE";
}; };
ReferencePublicRenderModel: components["schemas"]["PublicRenderModelBase"] & { ReferencePublicRenderModel: components["schemas"]["PublicRenderModelBase"] & {
/** @constant */ /** @enum {string} */
kind: "REFERENCE"; kind: "REFERENCE";
purpose: string; purpose: string;
rules: components["schemas"]["ReferenceRule"][]; rules: components["schemas"]["ReferenceRule"][];
@@ -1113,7 +1113,7 @@ export interface components {
linkLabel: string; linkLabel: string;
}; };
QuestionPublicRenderModel: components["schemas"]["PublicRenderModelBase"] & { QuestionPublicRenderModel: components["schemas"]["PublicRenderModelBase"] & {
/** @constant */ /** @enum {string} */
kind: "QUESTION"; kind: "QUESTION";
/** /**
* @description 공개 표현용 축약 상태다. Domain의 `INVESTIGATING`/`PAUSED`는 `OPEN`으로 표현된다. * @description 공개 표현용 축약 상태다. Domain의 `INVESTIGATING`/`PAUSED`는 `OPEN`으로 표현된다.
@@ -1135,7 +1135,7 @@ export interface components {
kind: "QUESTION"; kind: "QUESTION";
}; };
ProjectDecisionPublicRenderModel: components["schemas"]["PublicRenderModelBase"] & { ProjectDecisionPublicRenderModel: components["schemas"]["PublicRenderModelBase"] & {
/** @constant */ /** @enum {string} */
kind: "PROJECT_DECISION"; kind: "PROJECT_DECISION";
/** @enum {string} */ /** @enum {string} */
status: "PROPOSED" | "ADOPTED"; status: "PROPOSED" | "ADOPTED";
@@ -928,7 +928,7 @@ components:
- type: object - type: object
required: [kind, problem, conclusion, environment, reproduction, lastVerifiedOn, bodyMarkdown] required: [kind, problem, conclusion, environment, reproduction, lastVerifiedOn, bodyMarkdown]
properties: properties:
kind: { type: string, const: CASE } kind: { type: string, enum: [CASE] }
problem: { type: string, maxLength: 100000 } problem: { type: string, maxLength: 100000 }
conclusion: { type: string, maxLength: 100000 } conclusion: { type: string, maxLength: 100000 }
environment: { type: string, maxLength: 100000 } environment: { type: string, maxLength: 100000 }
@@ -947,7 +947,7 @@ components:
- type: object - type: object
required: [kind, purpose, rules, applyWhen, exceptions, examples, verifiedOn] required: [kind, purpose, rules, applyWhen, exceptions, examples, verifiedOn]
properties: properties:
kind: { type: string, const: REFERENCE } kind: { type: string, enum: [REFERENCE] }
purpose: { type: string, maxLength: 100000 } purpose: { type: string, maxLength: 100000 }
rules: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/ReferenceRule" } } rules: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/ReferenceRule" } }
applyWhen: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } } applyWhen: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
@@ -961,7 +961,7 @@ components:
- type: object - type: object
required: [kind, questionStatus, facts, assumptions, unknowns, constraints, options, nextValidation, resolution] required: [kind, questionStatus, facts, assumptions, unknowns, constraints, options, nextValidation, resolution]
properties: properties:
kind: { type: string, const: QUESTION } kind: { type: string, enum: [QUESTION] }
questionStatus: questionStatus:
type: [string, "null"] type: [string, "null"]
enum: [OPEN, RESOLVED, null] enum: [OPEN, RESOLVED, null]
@@ -988,7 +988,7 @@ components:
- type: object - type: object
required: [kind, decisionStatus, decidedOn, statement, rationale, consequences] required: [kind, decisionStatus, decidedOn, statement, rationale, consequences]
properties: properties:
kind: { type: string, const: PROJECT_DECISION } kind: { type: string, enum: [PROJECT_DECISION] }
decisionStatus: decisionStatus:
type: [string, "null"] type: [string, "null"]
enum: [PROPOSED, ADOPTED, null] enum: [PROPOSED, ADOPTED, null]
@@ -1035,7 +1035,7 @@ components:
- type: object - type: object
required: [kind, problem, conclusion, environment, reproduction, lastVerifiedOn, bodyMarkdown] required: [kind, problem, conclusion, environment, reproduction, lastVerifiedOn, bodyMarkdown]
properties: properties:
kind: { type: string, const: CASE } kind: { type: string, enum: [CASE] }
problem: { type: string, maxLength: 100000 } problem: { type: string, maxLength: 100000 }
conclusion: { type: string, maxLength: 100000 } conclusion: { type: string, maxLength: 100000 }
environment: { type: string, maxLength: 100000 } environment: { type: string, maxLength: 100000 }
@@ -1049,7 +1049,7 @@ components:
- type: object - type: object
required: [kind, purpose, rules, applyWhen, exceptions, examples, verifiedOn] required: [kind, purpose, rules, applyWhen, exceptions, examples, verifiedOn]
properties: properties:
kind: { type: string, const: REFERENCE } kind: { type: string, enum: [REFERENCE] }
purpose: { type: string, maxLength: 100000 } purpose: { type: string, maxLength: 100000 }
rules: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/ReferenceRule" } } rules: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/ReferenceRule" } }
applyWhen: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } } applyWhen: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
@@ -1063,7 +1063,7 @@ components:
- type: object - type: object
required: [kind, questionStatus, facts, assumptions, unknowns, constraints, options, nextValidation, resolution] required: [kind, questionStatus, facts, assumptions, unknowns, constraints, options, nextValidation, resolution]
properties: properties:
kind: { type: string, const: QUESTION } kind: { type: string, enum: [QUESTION] }
questionStatus: { type: [string, "null"], enum: [OPEN, RESOLVED, null] } questionStatus: { type: [string, "null"], enum: [OPEN, RESOLVED, null] }
facts: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } } facts: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
assumptions: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } } assumptions: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
@@ -1082,7 +1082,7 @@ components:
- type: object - type: object
required: [kind, decisionStatus, decidedOn, statement, rationale, consequences] required: [kind, decisionStatus, decidedOn, statement, rationale, consequences]
properties: properties:
kind: { type: string, const: PROJECT_DECISION } kind: { type: string, enum: [PROJECT_DECISION] }
decisionStatus: { type: [string, "null"], enum: [PROPOSED, ADOPTED, null] } decisionStatus: { type: [string, "null"], enum: [PROPOSED, ADOPTED, null] }
decidedOn: { type: [string, "null"], format: date } decidedOn: { type: [string, "null"], format: date }
statement: { type: string, maxLength: 100000 } statement: { type: string, maxLength: 100000 }
@@ -1251,7 +1251,7 @@ components:
additionalProperties: false additionalProperties: false
required: [type, text] required: [type, text]
properties: properties:
type: { type: string, const: TEXT } type: { type: string, enum: [TEXT] }
text: { type: string, minLength: 1, maxLength: 100000 } text: { type: string, minLength: 1, maxLength: 100000 }
InlineContainer: InlineContainer:
type: object type: object
@@ -1264,14 +1264,14 @@ components:
additionalProperties: false additionalProperties: false
required: [type, code] required: [type, code]
properties: properties:
type: { type: string, const: INLINE_CODE } type: { type: string, enum: [INLINE_CODE] }
code: { type: string, minLength: 1, maxLength: 100000 } code: { type: string, minLength: 1, maxLength: 100000 }
InlineLink: InlineLink:
type: object type: object
additionalProperties: false additionalProperties: false
required: [type, label, href] required: [type, label, href]
properties: properties:
type: { type: string, const: LINK } type: { type: string, enum: [LINK] }
label: { type: string, minLength: 1, maxLength: 100000 } label: { type: string, minLength: 1, maxLength: 100000 }
href: { type: string, format: uri, maxLength: 2000 } href: { type: string, format: uri, maxLength: 2000 }
InlineStatus: InlineStatus:
@@ -1279,7 +1279,7 @@ components:
additionalProperties: false additionalProperties: false
required: [type, label, tone] required: [type, label, tone]
properties: properties:
type: { type: string, const: STATUS } type: { type: string, enum: [STATUS] }
label: { type: string, minLength: 1, maxLength: 120 } label: { type: string, minLength: 1, maxLength: 120 }
tone: { type: string, enum: [warning, evidence, neutral] } tone: { type: string, enum: [warning, evidence, neutral] }
Inline: Inline:
@@ -1303,18 +1303,18 @@ components:
unevaluatedProperties: false unevaluatedProperties: false
allOf: allOf:
- { $ref: "#/components/schemas/InlineContainer" } - { $ref: "#/components/schemas/InlineContainer" }
- { type: object, properties: { type: { type: string, const: EMPHASIS } } } - { type: object, properties: { type: { type: string, enum: [EMPHASIS] } } }
InlineStrong: InlineStrong:
unevaluatedProperties: false unevaluatedProperties: false
allOf: allOf:
- { $ref: "#/components/schemas/InlineContainer" } - { $ref: "#/components/schemas/InlineContainer" }
- { type: object, properties: { type: { type: string, const: STRONG } } } - { type: object, properties: { type: { type: string, enum: [STRONG] } } }
HeadingBlock: HeadingBlock:
type: object type: object
additionalProperties: false additionalProperties: false
required: [type, id, level, content] required: [type, id, level, content]
properties: properties:
type: { type: string, const: HEADING } type: { type: string, enum: [HEADING] }
id: { type: string, minLength: 1, maxLength: 200 } id: { type: string, minLength: 1, maxLength: 200 }
level: { type: integer, minimum: 2, maximum: 4 } level: { type: integer, minimum: 2, maximum: 4 }
content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } } content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } }
@@ -1323,14 +1323,14 @@ components:
additionalProperties: false additionalProperties: false
required: [type, content] required: [type, content]
properties: properties:
type: { type: string, const: PARAGRAPH } type: { type: string, enum: [PARAGRAPH] }
content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } } content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } }
BlockquoteBlock: BlockquoteBlock:
type: object type: object
additionalProperties: false additionalProperties: false
required: [type, content] required: [type, content]
properties: properties:
type: { type: string, const: BLOCKQUOTE } type: { type: string, enum: [BLOCKQUOTE] }
content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } } content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } }
ListItem: ListItem:
type: object type: object
@@ -1349,18 +1349,18 @@ components:
unevaluatedProperties: false unevaluatedProperties: false
allOf: allOf:
- { $ref: "#/components/schemas/ListBlockBase" } - { $ref: "#/components/schemas/ListBlockBase" }
- { type: object, properties: { type: { type: string, const: UNORDERED_LIST } } } - { type: object, properties: { type: { type: string, enum: [UNORDERED_LIST] } } }
OrderedListBlock: OrderedListBlock:
unevaluatedProperties: false unevaluatedProperties: false
allOf: allOf:
- { $ref: "#/components/schemas/ListBlockBase" } - { $ref: "#/components/schemas/ListBlockBase" }
- { type: object, properties: { type: { type: string, const: ORDERED_LIST } } } - { type: object, properties: { type: { type: string, enum: [ORDERED_LIST] } } }
CodeBlock: CodeBlock:
type: object type: object
additionalProperties: false additionalProperties: false
required: [type, code, language, label] required: [type, code, language, label]
properties: properties:
type: { type: string, const: CODE_BLOCK } type: { type: string, enum: [CODE_BLOCK] }
code: { type: string, maxLength: 100000 } code: { type: string, maxLength: 100000 }
language: { type: [string, "null"], maxLength: 100 } language: { type: [string, "null"], maxLength: 100 }
label: { type: [string, "null"], maxLength: 200 } label: { type: [string, "null"], maxLength: 200 }
@@ -1391,7 +1391,7 @@ components:
additionalProperties: false additionalProperties: false
required: [type, id, caption, rowHeaderColumn, columns, rows] required: [type, id, caption, rowHeaderColumn, columns, rows]
properties: properties:
type: { type: string, const: DATA_TABLE } type: { type: string, enum: [DATA_TABLE] }
id: { type: string, minLength: 1, maxLength: 200 } id: { type: string, minLength: 1, maxLength: 200 }
caption: { type: string, maxLength: 1000 } caption: { type: string, maxLength: 1000 }
rowHeaderColumn: { type: [integer, "null"], minimum: 1 } rowHeaderColumn: { type: [integer, "null"], minimum: 1 }
@@ -1402,7 +1402,7 @@ components:
additionalProperties: false additionalProperties: false
required: [type, tone, label, content] required: [type, tone, label, content]
properties: properties:
type: { type: string, const: CALLOUT } type: { type: string, enum: [CALLOUT] }
tone: { type: string, enum: [warning, info] } tone: { type: string, enum: [warning, info] }
label: { type: string, maxLength: 200 } label: { type: string, maxLength: 200 }
content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } } content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } }
@@ -1425,7 +1425,7 @@ components:
Asset decorative=true → alt="" 허용 Asset decorative=true → alt="" 허용
``` ```
properties: properties:
type: { type: string, const: EVIDENCE_FIGURE } type: { type: string, enum: [EVIDENCE_FIGURE] }
key: { type: string, minLength: 1, maxLength: 200 } key: { type: string, minLength: 1, maxLength: 200 }
alt: { type: string, maxLength: 1000 } alt: { type: string, maxLength: 1000 }
caption: { type: string, maxLength: 1000 } caption: { type: string, maxLength: 1000 }
@@ -1477,7 +1477,7 @@ components:
- type: object - type: object
required: [kind, problem, conclusion, environment, reproduction, lastVerifiedOn, bodyBlocks] required: [kind, problem, conclusion, environment, reproduction, lastVerifiedOn, bodyBlocks]
properties: properties:
kind: { type: string, const: CASE } kind: { type: string, enum: [CASE] }
problem: { type: string, minLength: 1, maxLength: 100000 } problem: { type: string, minLength: 1, maxLength: 100000 }
conclusion: { type: string, minLength: 1, maxLength: 100000 } conclusion: { type: string, minLength: 1, maxLength: 100000 }
environment: { type: string, maxLength: 100000 } environment: { type: string, maxLength: 100000 }
@@ -1491,7 +1491,7 @@ components:
- type: object - type: object
required: [kind, purpose, rules, applyWhen, exceptions, examples, verifiedOn] required: [kind, purpose, rules, applyWhen, exceptions, examples, verifiedOn]
properties: properties:
kind: { type: string, const: REFERENCE } kind: { type: string, enum: [REFERENCE] }
purpose: { type: string, minLength: 1, maxLength: 100000 } purpose: { type: string, minLength: 1, maxLength: 100000 }
rules: { type: array, minItems: 1, maxItems: 50, items: { $ref: "#/components/schemas/ReferenceRule" } } rules: { type: array, minItems: 1, maxItems: 50, items: { $ref: "#/components/schemas/ReferenceRule" } }
applyWhen: { type: array, minItems: 1, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } } applyWhen: { type: array, minItems: 1, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
@@ -1513,7 +1513,7 @@ components:
- type: object - type: object
required: [kind, status, facts, assumptions, unknowns, constraints, options, nextValidation, resolution] required: [kind, status, facts, assumptions, unknowns, constraints, options, nextValidation, resolution]
properties: properties:
kind: { type: string, const: QUESTION } kind: { type: string, enum: [QUESTION] }
status: status:
type: string type: string
enum: [OPEN, RESOLVED] enum: [OPEN, RESOLVED]
@@ -1535,7 +1535,7 @@ components:
- type: object - type: object
required: [kind, status, decidedOn, statement, rationale, consequences] required: [kind, status, decidedOn, statement, rationale, consequences]
properties: properties:
kind: { type: string, const: PROJECT_DECISION } kind: { type: string, enum: [PROJECT_DECISION] }
status: { type: string, enum: [PROPOSED, ADOPTED] } status: { type: string, enum: [PROPOSED, ADOPTED] }
decidedOn: { type: string, format: date } decidedOn: { type: string, format: date }
statement: { type: string, minLength: 1, maxLength: 100000 } statement: { type: string, minLength: 1, maxLength: 100000 }