contract: studio 계약의 VALIDATION_FAILED 개명(DOCUMENT_VALIDATION_FAILED) 반영
canonical studio-v1.yaml(tech-log-design-package b20d7a2)이 VALIDATION_FAILED를 DOCUMENT_VALIDATION_FAILED로 개명했다 — 스켈레톤 전역 OperationalError. VALIDATION_FAILED(400)와 code 문자열이 충돌해 같은 code가 두 HTTP status를 갖던 문제를 해소한다. - generate:tech-log-contract로 vendor된 계약·생성 타입·canonical-source.json 재생성 - STUDIO_ERROR_CODES(손수 유지되는 계약 미러)의 해당 항목 개명 계약 밖 코드는 STUDIO_UNAVAILABLE로 접히므로 이 배열이 계약과 어긋나면 안 된다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
aaaf0ac343
commit
3e2406349a
@@ -9,7 +9,7 @@ export const STUDIO_ERROR_CODES = Object.freeze([
|
|||||||
"DOCUMENT_NOT_FOUND",
|
"DOCUMENT_NOT_FOUND",
|
||||||
"VERSION_CONFLICT",
|
"VERSION_CONFLICT",
|
||||||
"REQUEST_VALIDATION_FAILED",
|
"REQUEST_VALIDATION_FAILED",
|
||||||
"VALIDATION_FAILED",
|
"DOCUMENT_VALIDATION_FAILED",
|
||||||
"VALIDATION_STALE",
|
"VALIDATION_STALE",
|
||||||
"PREVIEW_NOT_FOUND",
|
"PREVIEW_NOT_FOUND",
|
||||||
"PREVIEW_STALE",
|
"PREVIEW_STALE",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"packageId": "@tech-log/studio-contract",
|
"packageId": "@tech-log/studio-contract",
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"digest": "sha256:e44b9b50e30ccd876ba4a6d6e082b7b14fad602c56619d0eb196c07c756106b0",
|
"digest": "sha256:6cae9924403d0761f401643a022980b8e04183eea0d890c143c9fbbbbc7431e4",
|
||||||
"sourceRevision": "6a85d81",
|
"sourceRevision": "b20d7a2",
|
||||||
"operationIds": [
|
"operationIds": [
|
||||||
"getStudioSession",
|
"getStudioSession",
|
||||||
"getStudioDashboard",
|
"getStudioDashboard",
|
||||||
|
|||||||
@@ -393,7 +393,7 @@ export interface components {
|
|||||||
};
|
};
|
||||||
ApiError: {
|
ApiError: {
|
||||||
/** @enum {string} */
|
/** @enum {string} */
|
||||||
code: "AUTHENTICATION_REQUIRED" | "STUDIO_ACCESS_DENIED" | "DOCUMENT_NOT_FOUND" | "VERSION_CONFLICT" | "REQUEST_VALIDATION_FAILED" | "VALIDATION_FAILED" | "VALIDATION_STALE" | "PREVIEW_NOT_FOUND" | "PREVIEW_STALE" | "PREVIEW_EXPIRED" | "PUBLICATION_NOT_FOUND" | "PUBLICATION_CONFLICT" | "PUBLICATION_EVENT_NOT_FOUND" | "PUBLICATION_SNAPSHOT_NOT_FOUND" | "WARNING_ACKNOWLEDGEMENT_REQUIRED" | "IDEMPOTENCY_KEY_REUSED" | "ASSET_NOT_FOUND" | "ASSET_NOT_READY" | "ASSET_IN_USE" | "ASSET_QUARANTINED" | "PAYLOAD_TOO_LARGE" | "UNSUPPORTED_MEDIA_TYPE" | "STUDIO_UNAVAILABLE";
|
code: "AUTHENTICATION_REQUIRED" | "STUDIO_ACCESS_DENIED" | "DOCUMENT_NOT_FOUND" | "VERSION_CONFLICT" | "REQUEST_VALIDATION_FAILED" | "DOCUMENT_VALIDATION_FAILED" | "VALIDATION_STALE" | "PREVIEW_NOT_FOUND" | "PREVIEW_STALE" | "PREVIEW_EXPIRED" | "PUBLICATION_NOT_FOUND" | "PUBLICATION_CONFLICT" | "PUBLICATION_EVENT_NOT_FOUND" | "PUBLICATION_SNAPSHOT_NOT_FOUND" | "WARNING_ACKNOWLEDGEMENT_REQUIRED" | "IDEMPOTENCY_KEY_REUSED" | "ASSET_NOT_FOUND" | "ASSET_NOT_READY" | "ASSET_IN_USE" | "ASSET_QUARANTINED" | "PAYLOAD_TOO_LARGE" | "UNSUPPORTED_MEDIA_TYPE" | "STUDIO_UNAVAILABLE";
|
||||||
/** @enum {string} */
|
/** @enum {string} */
|
||||||
category: "VALIDATION" | "AUTH" | "AUTHZ" | "NOT_FOUND" | "CONFLICT" | "RATE_LIMIT" | "TRANSIENT_DEPENDENCY" | "PERMANENT_DEPENDENCY" | "DATA_INTEGRITY" | "INTERNAL";
|
category: "VALIDATION" | "AUTH" | "AUTHZ" | "NOT_FOUND" | "CONFLICT" | "RATE_LIMIT" | "TRANSIENT_DEPENDENCY" | "PERMANENT_DEPENDENCY" | "DATA_INTEGRITY" | "INTERNAL";
|
||||||
message: string;
|
message: string;
|
||||||
|
|||||||
@@ -611,7 +611,7 @@ components:
|
|||||||
RequestValidationFailed: { description: Request validation failed, x-error-codes: [REQUEST_VALIDATION_FAILED], content: { application/json: { schema: { $ref: "#/components/schemas/ErrorEnvelope" } } } }
|
RequestValidationFailed: { description: Request validation failed, x-error-codes: [REQUEST_VALIDATION_FAILED], content: { application/json: { schema: { $ref: "#/components/schemas/ErrorEnvelope" } } } }
|
||||||
PreviewRejected:
|
PreviewRejected:
|
||||||
description: Preview 생성이 도메인 규칙으로 거절되었다
|
description: Preview 생성이 도메인 규칙으로 거절되었다
|
||||||
x-error-codes: [REQUEST_VALIDATION_FAILED, VALIDATION_FAILED, ASSET_NOT_READY, ASSET_QUARANTINED]
|
x-error-codes: [REQUEST_VALIDATION_FAILED, DOCUMENT_VALIDATION_FAILED, ASSET_NOT_READY, ASSET_QUARANTINED]
|
||||||
content: { application/json: { schema: { $ref: "#/components/schemas/ErrorEnvelope" } } }
|
content: { application/json: { schema: { $ref: "#/components/schemas/ErrorEnvelope" } } }
|
||||||
PublishRejected:
|
PublishRejected:
|
||||||
description: |
|
description: |
|
||||||
@@ -619,7 +619,7 @@ components:
|
|||||||
|
|
||||||
`WARNING_ACKNOWLEDGEMENT_REQUIRED`는 `acknowledgedWarningCodes`가
|
`WARNING_ACKNOWLEDGEMENT_REQUIRED`는 `acknowledgedWarningCodes`가
|
||||||
현재 Validation의 WARNING 집합을 덮지 못한 경우다.
|
현재 Validation의 WARNING 집합을 덮지 못한 경우다.
|
||||||
x-error-codes: [REQUEST_VALIDATION_FAILED, VALIDATION_FAILED, WARNING_ACKNOWLEDGEMENT_REQUIRED, ASSET_NOT_READY, ASSET_QUARANTINED]
|
x-error-codes: [REQUEST_VALIDATION_FAILED, DOCUMENT_VALIDATION_FAILED, WARNING_ACKNOWLEDGEMENT_REQUIRED, ASSET_NOT_READY, ASSET_QUARANTINED]
|
||||||
content: { application/json: { schema: { $ref: "#/components/schemas/ErrorEnvelope" } } }
|
content: { application/json: { schema: { $ref: "#/components/schemas/ErrorEnvelope" } } }
|
||||||
AssetRejected:
|
AssetRejected:
|
||||||
description: Asset metadata 변경이 거절되었다
|
description: Asset metadata 변경이 거절되었다
|
||||||
@@ -650,7 +650,7 @@ components:
|
|||||||
code:
|
code:
|
||||||
type: string
|
type: string
|
||||||
enum: [AUTHENTICATION_REQUIRED, STUDIO_ACCESS_DENIED, DOCUMENT_NOT_FOUND, VERSION_CONFLICT,
|
enum: [AUTHENTICATION_REQUIRED, STUDIO_ACCESS_DENIED, DOCUMENT_NOT_FOUND, VERSION_CONFLICT,
|
||||||
REQUEST_VALIDATION_FAILED, VALIDATION_FAILED, VALIDATION_STALE, PREVIEW_NOT_FOUND,
|
REQUEST_VALIDATION_FAILED, DOCUMENT_VALIDATION_FAILED, VALIDATION_STALE, PREVIEW_NOT_FOUND,
|
||||||
PREVIEW_STALE, PREVIEW_EXPIRED, PUBLICATION_NOT_FOUND, PUBLICATION_CONFLICT,
|
PREVIEW_STALE, PREVIEW_EXPIRED, PUBLICATION_NOT_FOUND, PUBLICATION_CONFLICT,
|
||||||
PUBLICATION_EVENT_NOT_FOUND, PUBLICATION_SNAPSHOT_NOT_FOUND,
|
PUBLICATION_EVENT_NOT_FOUND, PUBLICATION_SNAPSHOT_NOT_FOUND,
|
||||||
WARNING_ACKNOWLEDGEMENT_REQUIRED, IDEMPOTENCY_KEY_REUSED, ASSET_NOT_FOUND,
|
WARNING_ACKNOWLEDGEMENT_REQUIRED, IDEMPOTENCY_KEY_REUSED, ASSET_NOT_FOUND,
|
||||||
|
|||||||
Reference in New Issue
Block a user