Files
tech-log-frontend/src/features/tech-log/contracts/public/generated.ts
T
DongHyeonkaandClaude Opus 5 2632850322 fix: 최근 기록에 Open Question 을 싣고, 주제 링크를 탐색 필터로 돌린다
게시한 질문이 홈 최근 기록에 나오지 않았다. 계약의 `LatestEntry.entryType` 이 네 값만
허용해 백엔드가 담을 수 없었다 — design-package ef49d3a 에서 `QUESTION` 을 더했고 여기서
계약을 다시 생성한다. 포트의 `LatestRecordEntry.entryType` 도 같이 넓히고, 홈의 표기는
목록의 다른 이름들과 같은 규칙(대문자에 공백)을 따라 `OPEN QUESTION` 으로 적는다.

문서 머리말의 주제 링크는 `/topics/:slug` 로 가고 있었는데, 그 화면은 `jpa`/`authentication`
/`redis` 세 개를 하드코딩해 두고 있어 실제 주제는 무엇이든 404 가 됐다. 게시한 모든 문서의
주제 링크가 거기로 갔다.

주제 페이지를 채우는 대신 링크를 탐색 필터로 돌린다. 지금 그 페이지만 줄 수 있는 것 —
설명, 범위, 선별한 대표 기록 — 이 전부 비어 있고, Studio 의 주제 만들기는 `{name, slug}` 만
보내므로 설명을 쓸 칸조차 없다. 독자가 거기서 기대하는 것은 같은 주제의 기록 목록이고,
그것은 `/explore?topic=` 이 그대로 준다. 주제가 여러 개가 되고 설명을 쓸 수 있게 되면 그때
페이지를 만드는 것이 순서다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0189NzCryfeqDzS81EWidnBx
2026-08-26 23:44:20 +09:00

1694 lines
53 KiB
TypeScript

/**
* This file was auto-generated by openapi-typescript.
* Do not make direct changes to the file.
*/
export interface paths {
"/site": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getPublicSite"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/home": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getPublicHome"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/explore/knowledge": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** @description Frontend의 `/explore`, `/explore/cases`, `/explore/references` 화면이
* 호출한다. 화면 route별로 별도 endpoint를 만들지 않고 `type` 필터로 구분한다.
*
* ```text
* /explore/cases → type=CASE
* /explore/references → type=REFERENCE
* /explore → type 생략
* ```
* */
get: operations["exploreKnowledge"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/explore/questions": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** @description Frontend의 `/explore/questions` 화면이 호출한다.
*
* 여기의 공개 상태는 `OPEN`/`RESOLVED` 축약 표현이다. Backend Inquiry의
* `INVESTIGATING`/`PAUSED`는 `OPEN`으로 표현되며 `ARCHIVED`는 공개되지 않는다.
* Domain lifecycle 자체는 축소되지 않는다.
* */
get: operations["exploreQuestions"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/topics": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["listPublicTopics"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/topics/{topicSlug}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getPublicTopic"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/cases/{slug}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getPublicCase"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/references/{slug}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getPublicReference"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/questions/{slug}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getPublicQuestion"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["listPublicProjects"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{slug}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getPublicProject"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{slug}/decisions": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["listPublicProjectDecisions"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{slug}/records": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["listPublicProjectRecords"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{slug}/activities": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["listPublicProjectActivities"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/releases": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["listPublicReleases"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/releases/{version}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getPublicRelease"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/profile": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getPublicProfile"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/search": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["searchPublicResources"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/media/{assetId}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** @description 업로드한 Asset 의 바이트를 그대로 돌려준다. 이 경로가 없어서 Asset 은 저장은 되지만
* 어디에서도 보이지 않았다 — 문서와 공개 화면이 모두 이 주소를 가리키는데 서빙하는 곳이
* 없었다.
*
* `READY` 인 Asset 만 나간다. "발행된 기록이 참조하는 것만" 으로 더 좁히지 않는 이유는
* 그러면 Studio 미리보기가 깨지기 때문이다 — 미리보기는 아직 발행되지 않은 기록을 보는
* 화면이다. 대신 주소가 추측 불가능한 UUID 다.
*
* 봉투를 쓰지 않는다. 바이트를 반환하므로 감쌀 것이 없고, `<img src>` 는 JSON 을 읽지
* 않는다. */
get: operations["getPublicMedia"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
}
export type webhooks = Record<string, never>;
export interface components {
schemas: {
FieldError: {
field: string;
code: string;
message: string;
};
PageMetadata: {
number: number;
size: number;
/** Format: int64 */
totalElements: number;
totalPages: number;
hasPrevious: boolean;
hasNext: boolean;
};
TopicSummary: {
name: string;
slug: string;
};
TagSummary: {
name: string;
slug: string;
};
ProjectSummary: {
name: string;
slug: string;
path: string;
};
AssetReference: {
/** Format: uuid */
assetId: string;
url: string;
altText?: string;
width?: number;
height?: number;
contentType?: string;
};
/** @description 본문이 `:::evidence key="..."` 로 가리키는 Asset 이다.
*
* 본문은 Markdown 원문으로 나가고 그 안에는 key 만 있는데, `/media/{assetId}` 는 UUID
* 로만 서빙한다 — 주소가 추측 불가능한 것이 의도된 성질이므로 key 에서 주소를 만들 수
* 없다. 그래서 공개 화면이 key 를 해석할 수 있도록, 게시된 기록이 실제로 참조하는 Asset 을
* 함께 준다.
*
* 목록은 게시 시점에 고정된 `PUBLISHED` scope 의 참조에서 온다. 게시 이후 작업본이 Asset
* 을 바꿔도 이미 공개된 본문이 가리키는 대상은 달라지지 않는다.
* */
BodyAsset: {
assetKey: string;
/** Format: uuid */
assetId: string;
url: string;
contentType: string;
altText?: string;
width?: number;
height?: number;
/** @description 장식용이면 대체 텍스트가 비어 있어도 된다. 게시 검증이 이 값으로 판정하므로 공개
* 화면도 같은 값을 보고 `alt` 를 정해야 판정과 표시가 어긋나지 않는다.
* */
decorative: boolean;
};
RelatedEntry: {
/** @enum {string} */
type: "CASE" | "REFERENCE" | "QUESTION" | "PROJECT" | "PROJECT_DECISION" | "RELEASE";
title: string;
summary?: string;
path: string;
};
ContactLink: {
type: string;
label: string;
/** Format: uri */
url: string;
};
SiteResponse: {
brand: {
title: string;
identityStatement: string;
};
operator: {
displayName: string;
shortIdentity?: string;
avatar?: components["schemas"]["AssetReference"];
profilePath: string;
};
contacts: components["schemas"]["ContactLink"][];
};
CurrentWorkFocus: {
projectName: string;
projectPath: string;
purpose: string;
/** @enum {string} */
phase: "RESEARCH" | "DESIGN" | "IMPLEMENTATION" | "VERIFICATION" | "MAINTENANCE" | "PAUSED" | "COMPLETED";
currentObjective: string;
nextStep?: string;
/** Format: date-time */
updatedAt: string;
};
OpenQuestionFocus: {
question: string;
questionPath: string;
summary: string;
knownFacts: string[];
unresolvedPoints: string[];
nextVerification: string;
/** Format: date-time */
updatedAt: string;
};
RecentDecisionFocus: {
statement: string;
decisionPath: string;
rationale: string;
consequences: string[];
/** Format: date-time */
decidedAt: string;
};
LatestEntry: {
/** @enum {string} */
entryType: "CASE" | "REFERENCE" | "QUESTION" | "PROJECT_ACTIVITY" | "RELEASE";
title: string;
summary: string;
path: string;
primaryTopic?: components["schemas"]["TopicSummary"];
primaryProject?: components["schemas"]["ProjectSummary"];
/** Format: date-time */
publishedAt: string;
};
HomeResponse: {
focus: {
/** @enum {string} */
defaultType: "CURRENT_WORK" | "OPEN_QUESTION" | "RECENT_DECISION";
currentWork?: components["schemas"]["CurrentWorkFocus"];
openQuestion?: components["schemas"]["OpenQuestionFocus"];
recentDecision?: components["schemas"]["RecentDecisionFocus"];
};
latestEntries: components["schemas"]["LatestEntry"][];
};
KnowledgeListItem: {
/** @enum {string} */
type: "CASE" | "REFERENCE";
title: string;
path: string;
primarySummary: string;
secondarySummary?: string;
primaryTopic?: components["schemas"]["TopicSummary"];
primaryProject?: components["schemas"]["ProjectSummary"];
/** Format: date-time */
publishedAt: string;
/** Format: date-time */
lastVerifiedAt?: string;
freshnessStatus?: string;
};
KnowledgePage: {
items: components["schemas"]["KnowledgeListItem"][];
page: components["schemas"]["PageMetadata"];
};
QuestionListItem: {
question: string;
path: string;
/** @enum {string} */
status: "OPEN" | "INVESTIGATING" | "PAUSED" | "RESOLVED";
summary: string;
currentUnderstanding?: string;
nextVerification?: string;
primaryProject?: components["schemas"]["ProjectSummary"];
/** Format: date-time */
updatedAt: string;
};
QuestionPage: {
items: components["schemas"]["QuestionListItem"][];
page: components["schemas"]["PageMetadata"];
};
TopicListItem: {
name: string;
slug: string;
description: string;
recordCount?: number;
};
TopicListResponse: {
items: components["schemas"]["TopicListItem"][];
};
TopicDetailResponse: {
topic: {
name: string;
slug: string;
description: string;
scope?: string;
};
featuredReference?: components["schemas"]["RelatedEntry"];
featuredCases: components["schemas"]["RelatedEntry"][];
activeQuestions: components["schemas"]["RelatedEntry"][];
relatedProjects: components["schemas"]["RelatedEntry"][];
latestRecords: components["schemas"]["LatestEntry"][];
};
CaseDetailResponse: {
canonicalPath: string;
/** @default true */
indexable: boolean;
case: {
title: string;
summary?: string;
problemSummary: string;
conclusionSummary: string;
environmentSummary?: string[];
content: string;
/** @enum {string} */
contentFormat: "MARKDOWN";
contentFormatVersion: number;
primaryTopic?: components["schemas"]["TopicSummary"];
tags: components["schemas"]["TagSummary"][];
primaryProject?: components["schemas"]["ProjectSummary"];
coverAsset?: components["schemas"]["AssetReference"];
/** @description 본문이 참조하는 Asset. 비어 있을 수 있다 — 본문에 evidence 가 없거나, 참조한
* Asset 이 더 이상 서빙되지 않는 경우다.
* */
bodyAssets?: components["schemas"]["BodyAsset"][];
/** Format: date-time */
publishedAt: string;
/** Format: date-time */
updatedAt: string;
/** Format: date-time */
lastVerifiedAt?: string;
};
relations: {
originQuestion?: components["schemas"]["RelatedEntry"];
projectDecisions: components["schemas"]["RelatedEntry"][];
derivedReferences: components["schemas"]["RelatedEntry"][];
relatedCases: components["schemas"]["RelatedEntry"][];
};
};
ReferenceDetailResponse: {
canonicalPath: string;
/** @default true */
indexable: boolean;
reference: {
title: string;
summary?: string;
scopeSummary: string;
appliesTo: string[];
excludedScope: string[];
rules?: {
title: string;
body: string;
}[];
examples?: string[];
/** @enum {string} */
freshnessStatus: "CURRENT" | "REVIEW_DUE" | "HISTORICAL";
content: string;
/** @enum {string} */
contentFormat: "MARKDOWN";
contentFormatVersion: number;
primaryTopic?: components["schemas"]["TopicSummary"];
tags: components["schemas"]["TagSummary"][];
primaryProject?: components["schemas"]["ProjectSummary"];
coverAsset?: components["schemas"]["AssetReference"];
/** Format: date-time */
publishedAt: string;
/** Format: date-time */
updatedAt: string;
/** Format: date-time */
lastVerifiedAt?: string;
};
relations: {
supportingCases: components["schemas"]["RelatedEntry"][];
relatedDecisions: components["schemas"]["RelatedEntry"][];
relatedReferences: components["schemas"]["RelatedEntry"][];
};
};
QuestionPointGroup: {
facts: string[];
assumptions: string[];
unknowns: string[];
constraints: string[];
};
QuestionUpdatePublic: {
type: string;
title: string;
bodyMarkdown: string;
/** Format: date-time */
occurredAt: string;
};
QuestionDetailResponse: {
canonicalPath: string;
indexable: boolean;
question: {
question: string;
summary: string;
context: string;
importance: string;
/** @enum {string} */
status: "OPEN" | "INVESTIGATING" | "PAUSED" | "RESOLVED";
nextVerification?: string;
points: components["schemas"]["QuestionPointGroup"];
updates: components["schemas"]["QuestionUpdatePublic"][];
resolution?: {
type?: string;
summary?: string;
/** Format: date-time */
resolvedAt?: string;
};
/** Format: date-time */
openedAt: string;
/** Format: date-time */
updatedAt: string;
};
relations: {
primaryProject?: components["schemas"]["RelatedEntry"];
resultCase?: components["schemas"]["RelatedEntry"];
producedDecision?: components["schemas"]["RelatedEntry"];
derivedReferences: components["schemas"]["RelatedEntry"][];
};
};
ProjectListItem: {
name: string;
slug: string;
path: string;
oneLinePurpose: string;
phase: string;
currentObjective?: string;
nextStep?: string;
/** Format: date-time */
updatedAt: string;
};
ProjectListResponse: {
items: components["schemas"]["ProjectListItem"][];
};
ProjectDetailResponse: {
canonicalPath: string;
/** @default true */
indexable: boolean;
project: {
name: string;
slug: string;
oneLinePurpose: string;
purpose: string;
boundary: string;
phase: string;
currentObjective?: string;
nextStep?: string;
systemOverviewMarkdown?: string;
technologies?: string[];
/** @description 이 프로젝트가 다루는 주제. 프로젝트 화면의 "주요 주제" 가 이 목록을 그린다.
* 화면은 처음부터 이 값을 읽고 있었지만 계약에 자리가 없어 늘 비어 있었다. */
topics?: components["schemas"]["TopicSummary"][];
/** Format: date-time */
updatedAt: string;
};
featuredDecision?: components["schemas"]["RelatedEntry"];
activeQuestion?: components["schemas"]["RelatedEntry"];
selectedRecords: components["schemas"]["RelatedEntry"][];
};
ProjectDecisionItem: {
/** Format: uuid */
id: string;
statement: string;
status: string;
rationaleSummary?: string;
/** Format: date-time */
decidedAt: string;
sourceQuestion?: components["schemas"]["RelatedEntry"];
sourceCase?: components["schemas"]["RelatedEntry"];
};
ProjectDecisionPage: {
items: components["schemas"]["ProjectDecisionItem"][];
page: components["schemas"]["PageMetadata"];
};
ProjectRecordPage: {
items: components["schemas"]["RelatedEntry"][];
page: components["schemas"]["PageMetadata"];
};
ProjectActivityItem: {
type: string;
title: string;
summary?: string;
/** Format: date-time */
occurredAt: string;
relatedPath?: string;
};
ProjectActivityPage: {
items: components["schemas"]["ProjectActivityItem"][];
page: components["schemas"]["PageMetadata"];
};
ReleaseListItem: {
version: string;
title: string;
summary: string;
/** Format: date */
releasedOn: string;
changeTypes: string[];
path: string;
};
ReleaseListResponse: {
items: components["schemas"]["ReleaseListItem"][];
};
ReleaseDetailResponse: {
version: string;
title: string;
summary: string;
/** Format: date */
releasedOn: string;
changeTypes: string[];
reasonMarkdown?: string;
changesMarkdown: string;
userImpactMarkdown?: string;
implementationImpactMarkdown?: string;
verificationMarkdown: string;
knownLimitationsMarkdown?: string;
relatedRecords: components["schemas"]["RelatedEntry"][];
};
ProfileResponse: {
position: {
headline: string;
description: string;
};
workingModel: {
name: string;
description: string;
}[];
territories: {
name: string;
currentQuestion?: string;
topicPath?: string;
}[];
selectedEvidence: components["schemas"]["RelatedEntry"][];
trajectory: {
title: string;
description: string;
}[];
contacts: components["schemas"]["ContactLink"][];
};
SearchResultItem: {
contentType: string;
title: string;
path: string;
snippet: string;
matchedFields: string[];
primaryTopic?: components["schemas"]["TopicSummary"];
primaryProject?: components["schemas"]["ProjectSummary"];
/** Format: date-time */
publishedAt?: string;
/** Format: date-time */
updatedAt?: string;
};
SearchResultPage: {
query: string;
items: components["schemas"]["SearchResultItem"][];
page: components["schemas"]["PageMetadata"];
};
ResponseMeta: {
requestId: string;
traceId: string;
correlationId?: string | null;
/** @description offset 페이지네이션 정보는 각 페이지 payload 의 `page` 필드가 소유한다. 이 필드는 백엔드 템플릿의 ResponseMeta record 가 직렬화하는 자리이며 공개 조회에서는 항상 null 이다. */
page?: {
[key: string]: unknown;
} | null;
};
ValidationErrorDetails: {
fieldErrors: components["schemas"]["FieldError"][];
};
ApiError: {
/**
* @description `INTERNAL_ERROR` 는 이 기능이 아니라 스켈레톤의 공통 처리기가 내는 코드다. 계약이 그것까지 열거해야 500 응답이 계약을 벗어나지 않는다.
* @enum {string}
*/
code: "PUBLIC_REQUEST_INVALID" | "PUBLIC_RESOURCE_NOT_FOUND" | "INTERNAL_ERROR";
/** @enum {string} */
category: "VALIDATION" | "AUTH" | "AUTHZ" | "NOT_FOUND" | "CONFLICT" | "RATE_LIMIT" | "TRANSIENT_DEPENDENCY" | "PERMANENT_DEPENDENCY" | "DATA_INTEGRITY" | "INTERNAL";
message: string;
retryable: boolean;
details?: components["schemas"]["ValidationErrorDetails"] | null;
};
ErrorEnvelope: {
/** @constant */
success: false;
error: components["schemas"]["ApiError"];
meta: components["schemas"]["ResponseMeta"];
};
SiteResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["SiteResponse"];
meta: components["schemas"]["ResponseMeta"];
};
HomeResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["HomeResponse"];
meta: components["schemas"]["ResponseMeta"];
};
KnowledgePageEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["KnowledgePage"];
meta: components["schemas"]["ResponseMeta"];
};
QuestionPageEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["QuestionPage"];
meta: components["schemas"]["ResponseMeta"];
};
TopicListResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["TopicListResponse"];
meta: components["schemas"]["ResponseMeta"];
};
TopicDetailResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["TopicDetailResponse"];
meta: components["schemas"]["ResponseMeta"];
};
CaseDetailResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["CaseDetailResponse"];
meta: components["schemas"]["ResponseMeta"];
};
ReferenceDetailResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["ReferenceDetailResponse"];
meta: components["schemas"]["ResponseMeta"];
};
QuestionDetailResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["QuestionDetailResponse"];
meta: components["schemas"]["ResponseMeta"];
};
ProjectListResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["ProjectListResponse"];
meta: components["schemas"]["ResponseMeta"];
};
ProjectDetailResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["ProjectDetailResponse"];
meta: components["schemas"]["ResponseMeta"];
};
ProjectDecisionPageEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["ProjectDecisionPage"];
meta: components["schemas"]["ResponseMeta"];
};
ProjectRecordPageEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["ProjectRecordPage"];
meta: components["schemas"]["ResponseMeta"];
};
ProjectActivityPageEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["ProjectActivityPage"];
meta: components["schemas"]["ResponseMeta"];
};
ReleaseListResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["ReleaseListResponse"];
meta: components["schemas"]["ResponseMeta"];
};
ReleaseDetailResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["ReleaseDetailResponse"];
meta: components["schemas"]["ResponseMeta"];
};
ProfileResponseEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["ProfileResponse"];
meta: components["schemas"]["ResponseMeta"];
};
SearchResultPageEnvelope: {
/** @constant */
success: true;
data: components["schemas"]["SearchResultPage"];
meta: components["schemas"]["ResponseMeta"];
};
};
responses: never;
parameters: never;
requestBodies: never;
headers: never;
pathItems: never;
}
export type $defs = Record<string, never>;
export interface operations {
getPublicSite: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["SiteResponseEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
getPublicHome: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HomeResponseEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
exploreKnowledge: {
parameters: {
query?: {
type?: "CASE" | "REFERENCE";
topic?: string;
project?: string;
tag?: string;
year?: number;
sort?: "PUBLISHED_DESC" | "UPDATED_DESC" | "VERIFIED_DESC";
page?: number;
size?: number;
};
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["KnowledgePageEnvelope"];
};
};
/** @description Bad Request */
400: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
exploreQuestions: {
parameters: {
query?: {
status?: "OPEN" | "INVESTIGATING" | "PAUSED" | "RESOLVED";
topic?: string;
project?: string;
tag?: string;
sort?: "UPDATED_DESC" | "OPENED_DESC" | "RESOLVED_DESC";
page?: number;
size?: number;
};
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["QuestionPageEnvelope"];
};
};
/** @description Bad Request */
400: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
listPublicTopics: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["TopicListResponseEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
getPublicTopic: {
parameters: {
query?: never;
header?: never;
path: {
topicSlug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["TopicDetailResponseEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
getPublicCase: {
parameters: {
query?: never;
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["CaseDetailResponseEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
getPublicReference: {
parameters: {
query?: never;
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ReferenceDetailResponseEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
getPublicQuestion: {
parameters: {
query?: never;
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["QuestionDetailResponseEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
listPublicProjects: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProjectListResponseEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
getPublicProject: {
parameters: {
query?: never;
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProjectDetailResponseEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
listPublicProjectDecisions: {
parameters: {
query?: {
status?: string;
page?: number;
size?: number;
};
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProjectDecisionPageEnvelope"];
};
};
/** @description Bad Request */
400: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
listPublicProjectRecords: {
parameters: {
query?: {
type?: "CASE" | "REFERENCE" | "QUESTION";
relation?: "PRIMARY" | "RELATED";
page?: number;
size?: number;
};
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProjectRecordPageEnvelope"];
};
};
/** @description Bad Request */
400: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
listPublicProjectActivities: {
parameters: {
query?: {
page?: number;
size?: number;
};
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProjectActivityPageEnvelope"];
};
};
/** @description Bad Request */
400: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
listPublicReleases: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ReleaseListResponseEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
getPublicRelease: {
parameters: {
query?: never;
header?: never;
path: {
version: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ReleaseDetailResponseEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
getPublicProfile: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProfileResponseEnvelope"];
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
searchPublicResources: {
parameters: {
query: {
q: string;
type?: "CASE" | "REFERENCE" | "QUESTION" | "PROJECT" | "RELEASE";
topic?: string;
page?: number;
size?: number;
};
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["SearchResultPageEnvelope"];
};
};
/** @description Bad Request */
400: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
getPublicMedia: {
parameters: {
query?: never;
header?: never;
path: {
assetId: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/octet-stream": string;
};
};
/** @description Not Found */
404: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
/** @description Internal Server Error */
500: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ErrorEnvelope"];
};
};
};
};
}