diff --git a/openapi-v1.json b/openapi-v1.json index eee9ddcf..0fdfe947 100644 --- a/openapi-v1.json +++ b/openapi-v1.json @@ -1276,6 +1276,966 @@ } } } + }, + "/v1/orgs/{org_slug}/packages/checks": { + "post": { + "summary": "Evaluate package versions against organization policy", + "tags": ["packages"], + "description": "Evaluates cached facts for published, explicitly versioned public npm and PyPI packages against the organization default policy. This endpoint does not start scans.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["packages"], + "properties": { + "packages": { + "type": "array", + "minItems": 1, + "maxItems": 100, + "items": { + "type": "object", + "additionalProperties": false, + "required": ["purl"], + "properties": { + "purl": { + "type": "string", + "minLength": 1, + "maxLength": 2048 + } + } + } + } + } + } + } + } + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "path", + "name": "org_slug", + "required": true + } + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "required": ["context", "results"], + "properties": { + "context": { + "type": "object", + "additionalProperties": true, + "required": [ + "mode", + "organizationSlug", + "policyScope", + "policyRevision" + ], + "properties": { + "mode": { + "enum": ["organization"] + }, + "organizationSlug": { + "type": "string" + }, + "policyScope": { + "enum": ["organization-default"] + }, + "policyRevision": { + "type": "integer", + "minimum": 0 + } + } + }, + "results": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true, + "required": [ + "index", + "inputPurl", + "resolvedPurls", + "status", + "action", + "reasons", + "coverage", + "freshness" + ], + "properties": { + "index": { + "type": "integer", + "minimum": 0 + }, + "inputPurl": { + "type": "string" + }, + "resolvedPurls": { + "type": "array", + "items": { + "type": "string" + } + }, + "status": { + "enum": [ + "complete", + "pending", + "unknown", + "unsupported", + "error" + ] + }, + "action": { + "enum": [ + "block", + "warn", + "monitor", + "allow", + "indeterminate" + ] + }, + "reasons": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true, + "required": ["code"], + "properties": { + "code": { + "enum": [ + "invalid_purl", + "version_required", + "unsupported_ecosystem", + "unsupported_identity", + "metadata_unavailable", + "analysis_pending", + "analysis_stale", + "artifact_limit", + "result_limit", + "deadline_exceeded", + "lookup_failed", + "policy_action_unavailable", + "policy_block", + "policy_warn", + "policy_monitor" + ] + }, + "alertKey": { + "type": "string" + }, + "alertType": { + "type": "string" + }, + "artifactPurls": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "coverage": { + "type": "object", + "additionalProperties": true, + "required": [ + "scope", + "complete", + "artifactCount", + "evaluatedArtifactCount", + "reason" + ], + "properties": { + "scope": { + "enum": ["published-artifacts"] + }, + "complete": { + "type": "boolean" + }, + "artifactCount": { + "type": "integer", + "minimum": 0 + }, + "evaluatedArtifactCount": { + "type": "integer", + "minimum": 0 + }, + "reason": { + "type": ["null", "string"], + "enum": [ + "metadata_unavailable", + "analysis_incomplete", + "artifact_limit", + "result_limit", + "deadline_exceeded", + "lookup_failed", + null + ] + } + } + }, + "freshness": { + "type": "object", + "additionalProperties": true, + "required": [ + "evaluatedAt", + "analysisAt", + "source", + "state" + ], + "properties": { + "evaluatedAt": { + "type": "string", + "format": "date-time" + }, + "analysisAt": { + "type": "null" + }, + "source": { + "enum": ["artifact-state"] + }, + "state": { + "enum": ["current", "stale", "unknown"] + } + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "401": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "403": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "404": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "413": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "429": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "503": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + } + } + } + }, + "/v1/orgs/{org_slug}/packages/summaries": { + "post": { + "summary": "Summarize package intelligence and findings", + "tags": ["packages"], + "description": "Returns organization-default policy decisions, per-artifact scores, findings, and detail links for cached published public npm and PyPI artifacts. This endpoint does not start scans.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["packages"], + "properties": { + "packages": { + "type": "array", + "minItems": 1, + "maxItems": 100, + "items": { + "type": "object", + "additionalProperties": false, + "required": ["purl"], + "properties": { + "purl": { + "type": "string", + "minLength": 1, + "maxLength": 2048 + } + } + } + } + } + } + } + } + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "in": "path", + "name": "org_slug", + "required": true + } + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "required": ["context", "results"], + "properties": { + "context": { + "type": "object", + "additionalProperties": true, + "required": [ + "mode", + "organizationSlug", + "policyScope", + "policyRevision" + ], + "properties": { + "mode": { + "enum": ["organization"] + }, + "organizationSlug": { + "type": "string" + }, + "policyScope": { + "enum": ["organization-default"] + }, + "policyRevision": { + "type": "integer", + "minimum": 0 + } + } + }, + "results": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true, + "required": [ + "index", + "inputPurl", + "resolvedPurls", + "status", + "action", + "reasons", + "coverage", + "freshness", + "artifacts", + "alerts" + ], + "properties": { + "index": { + "type": "integer", + "minimum": 0 + }, + "inputPurl": { + "type": "string" + }, + "resolvedPurls": { + "type": "array", + "items": { + "type": "string" + } + }, + "status": { + "enum": [ + "complete", + "pending", + "unknown", + "unsupported", + "error" + ] + }, + "action": { + "enum": [ + "block", + "warn", + "monitor", + "allow", + "indeterminate" + ] + }, + "reasons": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true, + "required": ["code"], + "properties": { + "code": { + "enum": [ + "invalid_purl", + "version_required", + "unsupported_ecosystem", + "unsupported_identity", + "metadata_unavailable", + "analysis_pending", + "analysis_stale", + "artifact_limit", + "result_limit", + "deadline_exceeded", + "lookup_failed", + "policy_action_unavailable", + "policy_block", + "policy_warn", + "policy_monitor" + ] + }, + "alertKey": { + "type": "string" + }, + "alertType": { + "type": "string" + }, + "artifactPurls": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "coverage": { + "type": "object", + "additionalProperties": true, + "required": [ + "scope", + "complete", + "artifactCount", + "evaluatedArtifactCount", + "reason" + ], + "properties": { + "scope": { + "enum": ["published-artifacts"] + }, + "complete": { + "type": "boolean" + }, + "artifactCount": { + "type": "integer", + "minimum": 0 + }, + "evaluatedArtifactCount": { + "type": "integer", + "minimum": 0 + }, + "reason": { + "type": ["null", "string"], + "enum": [ + "metadata_unavailable", + "analysis_incomplete", + "artifact_limit", + "result_limit", + "deadline_exceeded", + "lookup_failed", + null + ] + } + } + }, + "freshness": { + "type": "object", + "additionalProperties": true, + "required": [ + "evaluatedAt", + "analysisAt", + "source", + "state" + ], + "properties": { + "evaluatedAt": { + "type": "string", + "format": "date-time" + }, + "analysisAt": { + "type": "null" + }, + "source": { + "enum": ["artifact-state"] + }, + "state": { + "enum": ["current", "stale", "unknown"] + } + } + }, + "artifacts": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true, + "required": [ + "reference", + "purl", + "state", + "scores", + "alerts", + "detailUrl" + ], + "properties": { + "reference": { + "type": "string" + }, + "purl": { + "type": "string" + }, + "state": { + "enum": [ + "complete", + "pending", + "revalidate", + "error", + "unknown" + ] + }, + "scores": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "object", + "additionalProperties": true, + "required": [ + "supplyChain", + "quality", + "maintenance", + "vulnerability", + "license", + "overall" + ], + "properties": { + "supplyChain": { + "type": "number" + }, + "quality": { + "type": "number" + }, + "maintenance": { + "type": "number" + }, + "vulnerability": { + "type": "number" + }, + "license": { + "type": "number" + }, + "overall": { + "type": "number" + } + } + } + ] + }, + "alerts": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true, + "required": ["key", "type", "action"], + "properties": { + "key": { + "type": "string" + }, + "type": { + "type": "string" + }, + "action": { + "type": ["null", "string"], + "enum": [ + "error", + "warn", + "monitor", + "ignore", + null + ] + } + } + } + }, + "detailUrl": { + "type": "string", + "format": "uri" + } + } + } + }, + "alerts": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true, + "required": [ + "key", + "type", + "action", + "artifactPurls" + ], + "properties": { + "key": { + "type": "string" + }, + "type": { + "type": "string" + }, + "action": { + "type": ["null", "string"], + "enum": [ + "error", + "warn", + "monitor", + "ignore", + null + ] + }, + "artifactPurls": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "401": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "403": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "404": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "413": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "429": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + }, + "503": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "properties": { + "statusCode": { + "type": "number" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"] + } + } + } + } + } + } } }, "tags": [ diff --git a/test/repo/unit/openapi-response-types.test.mts b/test/repo/unit/openapi-response-types.test.mts index 9cd61680..8bf358f1 100644 --- a/test/repo/unit/openapi-response-types.test.mts +++ b/test/repo/unit/openapi-response-types.test.mts @@ -39,6 +39,89 @@ describe('OpenAPI response types', () => { }> }>() }) + it('exposes package checks request, result, and policy context types', () => { + type Operation = paths['/v1/orgs/{org_slug}/packages/checks']['post'] + type Request = Operation['requestBody']['content']['application/json'] + type Response = OpReturnType + expectTypeOf().toEqualTypeOf<{ + packages: { purl: string }[] + }>() + expectTypeOf().toMatchTypeOf<{ + mode: 'organization' + organizationSlug: string + policyScope: 'organization-default' + policyRevision: number + }>() + expectTypeOf().toMatchTypeOf<{ + index: number + inputPurl: string + resolvedPurls: string[] + status: 'complete' | 'pending' | 'unknown' | 'unsupported' | 'error' + action: 'block' | 'warn' | 'monitor' | 'allow' | 'indeterminate' + }>() + expectTypeOf().toMatchTypeOf<{ + scope: 'published-artifacts' + complete: boolean + artifactCount: number + evaluatedArtifactCount: number + reason: string | null + }>() + expectTypeOf().toMatchTypeOf<{ + evaluatedAt: string + analysisAt: null + source: 'artifact-state' + state: 'current' | 'stale' | 'unknown' + }>() + }) + + it('preserves package summary artifact scores and findings in its type', () => { + type Operation = paths['/v1/orgs/{org_slug}/packages/summaries']['post'] + type Request = Operation['requestBody']['content']['application/json'] + type Response = OpReturnType + expectTypeOf().toEqualTypeOf<{ + packages: { purl: string }[] + }>() + expectTypeOf().toMatchTypeOf<{ + mode: 'organization' + organizationSlug: string + policyScope: 'organization-default' + policyRevision: number + }>() + expectTypeOf< + Response['results'][number]['artifacts'][number] + >().toMatchTypeOf<{ + reference: string + purl: string + state: 'complete' | 'pending' | 'revalidate' | 'error' | 'unknown' + scores: null | { + supplyChain: number + quality: number + maintenance: number + vulnerability: number + license: number + overall: number + } + alerts: { + key: string + type: string + action: 'error' | 'warn' | 'monitor' | 'ignore' | null + }[] + detailUrl: string + }>() + expectTypeOf().toMatchTypeOf<{ + scope: 'published-artifacts' + complete: boolean + artifactCount: number + evaluatedArtifactCount: number + reason: string | null + }>() + expectTypeOf().toMatchTypeOf<{ + evaluatedAt: string + analysisAt: null + source: 'artifact-state' + state: 'current' | 'stale' | 'unknown' + }>() + }) it('combines every successful status and content type', () => { expectTypeOf>().toEqualTypeOf< diff --git a/types/api-v1.d.ts b/types/api-v1.d.ts index 362b463f..2e0d9e61 100644 --- a/types/api-v1.d.ts +++ b/types/api-v1.d.ts @@ -792,6 +792,496 @@ export interface paths { } } } + '/v1/orgs/{org_slug}/packages/checks': { + /** + * Evaluate package versions against organization policy. + * + * Evaluates cached facts for published, explicitly versioned public npm and + * PyPI packages against the organization default policy. This endpoint does + * not start scans. + */ + post: { + parameters: { + path: { + org_slug: string + } + } + requestBody: { + content: { + 'application/json': { + packages: { + purl: string + }[] + } + } + } + responses: { + /** + * Default Response. + */ + 200: { + content: { + 'application/json': { + context: { + /** + * @enum {unknown} + */ + mode: 'organization' + organizationSlug: string + /** + * @enum {unknown} + */ + policyScope: 'organization-default' + policyRevision: number + [key: string]: unknown + } + results: { + index: number + inputPurl: string + resolvedPurls: string[] + /** + * @enum {unknown} + */ + status: + | 'complete' + | 'pending' + | 'unknown' + | 'unsupported' + | 'error' + /** + * @enum {unknown} + */ + action: 'block' | 'warn' | 'monitor' | 'allow' | 'indeterminate' + reasons: { + /** + * @enum {unknown} + */ + code: + | 'invalid_purl' + | 'version_required' + | 'unsupported_ecosystem' + | 'unsupported_identity' + | 'metadata_unavailable' + | 'analysis_pending' + | 'analysis_stale' + | 'artifact_limit' + | 'result_limit' + | 'deadline_exceeded' + | 'lookup_failed' + | 'policy_action_unavailable' + | 'policy_block' + | 'policy_warn' + | 'policy_monitor' + alertKey?: string + alertType?: string + artifactPurls?: string[] + [key: string]: unknown + }[] + coverage: { + /** + * @enum {unknown} + */ + scope: 'published-artifacts' + complete: boolean + artifactCount: number + evaluatedArtifactCount: number + /** + * @enum {null|string} + */ + reason: + | 'metadata_unavailable' + | 'analysis_incomplete' + | 'artifact_limit' + | 'result_limit' + | 'deadline_exceeded' + | 'lookup_failed' + | null + [key: string]: unknown + } + freshness: { + /** + * Format: date-time. + */ + evaluatedAt: string + analysisAt: null + /** + * @enum {unknown} + */ + source: 'artifact-state' + /** + * @enum {unknown} + */ + state: 'current' | 'stale' | 'unknown' + [key: string]: unknown + } + [key: string]: unknown + }[] + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 400: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 401: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 403: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 404: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 413: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 429: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 503: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + } + } + } + '/v1/orgs/{org_slug}/packages/summaries': { + /** + * Summarize package intelligence and findings. + * + * Returns organization-default policy decisions, per-artifact scores, + * findings, and detail links for cached published public npm and PyPI + * artifacts. This endpoint does not start scans. + */ + post: { + parameters: { + path: { + org_slug: string + } + } + requestBody: { + content: { + 'application/json': { + packages: { + purl: string + }[] + } + } + } + responses: { + /** + * Default Response. + */ + 200: { + content: { + 'application/json': { + context: { + /** + * @enum {unknown} + */ + mode: 'organization' + organizationSlug: string + /** + * @enum {unknown} + */ + policyScope: 'organization-default' + policyRevision: number + [key: string]: unknown + } + results: { + index: number + inputPurl: string + resolvedPurls: string[] + /** + * @enum {unknown} + */ + status: + | 'complete' + | 'pending' + | 'unknown' + | 'unsupported' + | 'error' + /** + * @enum {unknown} + */ + action: 'block' | 'warn' | 'monitor' | 'allow' | 'indeterminate' + reasons: { + /** + * @enum {unknown} + */ + code: + | 'invalid_purl' + | 'version_required' + | 'unsupported_ecosystem' + | 'unsupported_identity' + | 'metadata_unavailable' + | 'analysis_pending' + | 'analysis_stale' + | 'artifact_limit' + | 'result_limit' + | 'deadline_exceeded' + | 'lookup_failed' + | 'policy_action_unavailable' + | 'policy_block' + | 'policy_warn' + | 'policy_monitor' + alertKey?: string + alertType?: string + artifactPurls?: string[] + [key: string]: unknown + }[] + coverage: { + /** + * @enum {unknown} + */ + scope: 'published-artifacts' + complete: boolean + artifactCount: number + evaluatedArtifactCount: number + /** + * @enum {null|string} + */ + reason: + | 'metadata_unavailable' + | 'analysis_incomplete' + | 'artifact_limit' + | 'result_limit' + | 'deadline_exceeded' + | 'lookup_failed' + | null + [key: string]: unknown + } + freshness: { + /** + * Format: date-time. + */ + evaluatedAt: string + analysisAt: null + /** + * @enum {unknown} + */ + source: 'artifact-state' + /** + * @enum {unknown} + */ + state: 'current' | 'stale' | 'unknown' + [key: string]: unknown + } + artifacts: { + reference: string + purl: string + /** + * @enum {unknown} + */ + state: + | 'complete' + | 'pending' + | 'revalidate' + | 'error' + | 'unknown' + scores: null | { + supplyChain: number + quality: number + maintenance: number + vulnerability: number + license: number + overall: number + [key: string]: unknown + } + alerts: { + key: string + type: string + /** + * @enum {null|string} + */ + action: 'error' | 'warn' | 'monitor' | 'ignore' | null + [key: string]: unknown + }[] + /** + * Format: uri. + */ + detailUrl: string + [key: string]: unknown + }[] + alerts: { + key: string + type: string + /** + * @enum {null|string} + */ + action: 'error' | 'warn' | 'monitor' | 'ignore' | null + artifactPurls: string[] + [key: string]: unknown + }[] + [key: string]: unknown + }[] + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 400: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 401: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 403: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 404: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 413: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 429: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + /** + * Default Response. + */ + 503: { + content: { + 'application/json': { + statusCode: number + error: string + message: string + [key: string]: unknown + } + } + } + } + } + } } export type webhooks = Record