{openapi: 3.1.0,jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema,info: {title: JuSuan 开发者 HTTP API,version: "2",description: 按身份区分公网AI、已部署应用Runtime和应用控制面。每个操作的servers是完整基础地址。相同相对路径在不同身份下可能有不同request schema；先选择入口，再选择对应分支。由服务合同与应用领域OpenAPI同源生成，不能直接编辑下载物。},paths: {/admission/preview: {post: {operationId: previewAdmission,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {content: {application/json: {schema: {$ref: "#/components/schemas/AI_AdmissionPreviewRequest"}}},required: true},responses: {"200": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_AdmissionPreviewResponse"}}},description: Successful response},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Preview media admission,servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Preview media admission}},/assets/input: {post: {operationId: uploadInputAsset,parameters: [{description: Model alias that scopes the API key publication used to authorize this job or asset.,in: query,name: model,required: true,schema: {type: string}},{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {content: {multipart/form-data: {schema: {description: "Upload one file using the selected service's mediaSpecContract limits from GET /v1/services. General limits: PNG/JPEG/WebP images 16MiB, WAV audio 25MiB, MP4 video 128MiB. H3 universal references: images 30MiB, MP4 video 50MiB, audio 15MiB in WAV/MP3/FLAC/M4A/AAC/OGG or MOV containing an audio track. Upload H3 MOV using the audio field; original bytes remain reference_audio, not reference_video. H3 audio: 2..15 seconds each, 15 seconds combined, at most 3 clips. H3 first/last-frame images retain their own 16MiB limits.",oneOf: [{required: [image]},{required: [video]},{required: [audio]},{required: [file]}],properties: {audio: {contentEncoding: binary,type: string},file: {contentEncoding: binary,type: string},image: {contentEncoding: binary,type: string},video: {contentEncoding: binary,type: string}},type: object}}},required: true},responses: {"201": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_InputAssetUploadResponse"}}},description: Input asset created or reused within the same API key and publication scope},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Upload an immutable input asset,servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Upload an immutable input asset}},"/assets/input/{id}/content": {get: {description: "个人 Key / 应用联网调试：Read an already issued, short-lived platform-signed image/video URL. A Bearer key alone does not authorize this route. Do not construct a token, change URL parameters, log the URL or treat this as the result-download endpoint. Invalid/expired token returns 401 invalid_input_asset_token.",operationId: readInputAsset,parameters: [{in: path,name: id,required: true,schema: {type: string}},{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],responses: {"200": {content: {application/octet-stream: {schema: {format: binary,type: string}}},description: Authorized media content; HEAD returns headers only. No JSON body envelope. Retry this read without recreating the job.,headers: {Content-Length: {schema: {minimum: 0,type: integer}},Content-Type: {schema: {type: string}},ETag: {schema: {type: string}}}},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_inputAssetReadToken: []}],summary: Read an input asset,servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}]}},"/assets/{id}/content": {get: {operationId: readAsset,parameters: [{in: path,name: id,required: true,schema: {type: string}},{description: Model alias that scopes the API key publication used to authorize this job or asset.,in: query,name: model,required: true,schema: {type: string}},{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],responses: {"200": {content: {application/octet-stream: {schema: {format: binary,type: string}}},description: Authorized media content; HEAD returns headers only. No JSON body envelope. Retry this read without recreating the job.,headers: {Content-Length: {schema: {minimum: 0,type: integer}},Content-Type: {schema: {type: string}},ETag: {schema: {type: string}}}},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Read a generated asset,servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Read a generated asset},head: {operationId: headAsset,parameters: [{in: path,name: id,required: true,schema: {type: string}},{description: Model alias that scopes the API key publication used to authorize this job or asset.,in: query,name: model,required: true,schema: {type: string}},{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],responses: {"200": {description: Authorized media content; HEAD returns headers only. No JSON body envelope. Retry this read without recreating the job.,headers: {Content-Length: {schema: {minimum: 0,type: integer}},Content-Type: {schema: {type: string}},ETag: {schema: {type: string}}}},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Read generated asset metadata,servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Read generated asset metadata}},/audio/generations: {post: {operationId: createAudioGeneration,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {content: {application/json: {schema: {$ref: "#/components/schemas/AI_AudioGenerationRequest"}}},required: true},responses: {"200": {content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_MediaJob"},{$ref: "#/components/schemas/AI_SynchronousMediaResponse"}]}}},description: "A replayed asynchronous job, or a synchronous result for services whose execution mode is synchronous. H3 uses the MediaJob branch. Inspect the selected service execution contract."},"202": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_MediaJob"}}},description: Asynchronous media job accepted or still in progress. Follow the absolute jobUrl (also returned as Location) using the same API key and wait for the advertised Retry-After interval.,headers: {Location: {description: Absolute authenticated polling URL; identical to response.jobUrl.,schema: {format: uri,type: string}},Retry-After: {description: Suggested seconds before the next poll.,schema: {minimum: 0,type: integer}}}},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Create audio,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-media-spec-contract-source: "/v1/services[].mediaSpecContract",x-jusp-service-kinds: [audio_generation],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Create audio}},/audio/transcriptions: {post: {operationId: createAudioTranscription,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {required: true,content: {multipart/form-data: {schema: {$ref: "#/components/schemas/AI_AudioTranscriptionRequest"}},application/json: {schema: {$ref: "#/components/schemas/App_ReadURLRecognitionRequest"}}}},responses: {"200": {content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_AudioTranscriptionResponse"},{$ref: "#/components/schemas/App_AudioTranscriptionResponse"}]},examples: {}}},description: Successful response},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout},default: {$ref: "#/components/responses/App_Error"}},security: [{AI_bearerAuth: []},&item0 {App_managedAppCredential: [],App_runtimeSession: []}],summary: Transcribe audio,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-service-kinds: [audio_transcription],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据},&item1 {url: "{runtimeBaseUrl}",description: 将变量整体替换为JUSP_APP_RUNTIME_BASE_URL；invalid占位地址不可调用。,variables: {runtimeBaseUrl: {default: https://runtime.invalid,description: 平台注入的完整基础地址}}}],description: "个人 Key / 应用联网调试：Transcribe audio\n\n已部署应用 Runtime：正式入口为JSON，inputs恰好一个input_audio/readUrl；不是公网multipart上传合同。原始音频的读取授权和完整性由平台检查。"}},/audio/voices: {get: {operationId: listVoices,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],responses: {"200": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_CatalogVoiceList"}}},description: Successful response},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: List public voices,servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：List public voices}},"/audio/voices/{id}": {get: {operationId: getVoice,parameters: [{in: path,name: id,required: true,schema: {type: string}},{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],responses: {"200": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_CatalogVoice"}}},description: Successful response},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Get a public voice,servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Get a public voice}},/chat/completions: {post: {operationId: createChatCompletion,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {required: true,content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_ChatRequest"},{$ref: "#/components/schemas/App_ChatRequest"}]},examples: {}}}},responses: {"200": {content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_ChatResponse"},{$ref: "#/components/schemas/App_ChatResponse"}]},examples: {}},text/event-stream: {schema: {anyOf: [{description: SSE data frames carrying completion chunks; handle partial output and stream interruption separately from HTTP success.,type: string},{type: string,description: SSE data事件；连接中断与完整结束不同}]},examples: {}}},description: Successful response},"202": {description: 仅图像续写等声明异步的模型返回任务，不是普通文本流,content: {application/json: {schema: {$ref: "#/components/schemas/App_RuntimeJob"}}}},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout},default: {$ref: "#/components/responses/App_Error"}},security: [{AI_bearerAuth: []},*item0],summary: Create a chat completion,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-service-kinds: [text_chat,vision_chat],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据},*item1],description: "个人 Key / 应用联网调试：Create a chat completion\n\n已部署应用 Runtime：model与messages在顶层；视觉输入通过inputs[].readUrl，不传个人assetId。stream仅在模型支持时可用；不保证网络未知结果可安全重试。"}},/documents/parse: {post: {operationId: createDocumentParse,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {content: {application/json: {schema: {$ref: "#/components/schemas/AI_DocumentParseRequest"}}},required: true},responses: {"200": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_MediaJob"}}},description: Successful response},"202": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_MediaJob"}}},description: Asynchronous media job accepted or still in progress. Follow the absolute jobUrl (also returned as Location) using the same API key and wait for the advertised Retry-After interval.,headers: {Location: {description: Absolute authenticated polling URL; identical to response.jobUrl.,schema: {format: uri,type: string}},Retry-After: {description: Suggested seconds before the next poll.,schema: {minimum: 0,type: integer}}}},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Parse a document into structured artifacts,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-service-kinds: [document_parse],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Parse a document into structured artifacts}},/embeddings: {post: {operationId: createEmbedding,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {required: true,content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_EmbeddingRequest"},{$ref: "#/components/schemas/App_EmbeddingRequest"}]},examples: {}}}},responses: {"200": {content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_EmbeddingResponse"},{$ref: "#/components/schemas/App_EmbeddingResponse"}]},examples: {}}},description: Successful response},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout},default: {$ref: "#/components/responses/App_Error"}},security: [{AI_bearerAuth: []},*item0],summary: Create embeddings,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-service-kinds: [embedding],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据},*item1],description: "个人 Key / 应用联网调试：Create embeddings\n\n已部署应用 Runtime：生成文本向量"}},/images/generations: {post: {operationId: createImageGeneration,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {content: {application/json: {schema: {$ref: "#/components/schemas/AI_ImageGenerationRequest"}}},required: true},responses: {"200": {content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_MediaJob"},{$ref: "#/components/schemas/AI_SynchronousMediaResponse"}]}}},description: "A replayed asynchronous job, or a synchronous result for services whose execution mode is synchronous. H3 uses the MediaJob branch. Inspect the selected service execution contract."},"202": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_MediaJob"}}},description: Asynchronous media job accepted or still in progress. Follow the absolute jobUrl (also returned as Location) using the same API key and wait for the advertised Retry-After interval.,headers: {Location: {description: Absolute authenticated polling URL; identical to response.jobUrl.,schema: {format: uri,type: string}},Retry-After: {description: Suggested seconds before the next poll.,schema: {minimum: 0,type: integer}}}},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Create an image,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-media-spec-contract-source: "/v1/services[].mediaSpecContract",x-jusp-service-kinds: [image_generation],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Create an image}},"/jobs/{id}": {get: {operationId: getJob,parameters: [{in: path,name: id,required: true,schema: {type: string}},{description: Model alias that scopes the API key publication used to authorize this job or asset.,in: query,name: model,required: true,schema: {type: string}},{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],responses: {"200": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_MediaJob"}}},description: "Job snapshot. 202 means accepted/in progress, not completed. Read status; replay can return a terminal status. H3 has no user cancellation API."},"202": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_MediaJob"}}},description: "Job snapshot. 202 means accepted/in progress, not completed. Read status; replay can return a terminal status. H3 has no user cancellation API.",headers: {Location: {description: Absolute authenticated polling URL; identical to response.jobUrl.,schema: {format: uri,type: string}},Retry-After: {description: Suggested seconds before the next poll.,schema: {minimum: 0,type: integer}}}},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Get an asynchronous media job,servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Get an asynchronous media job}},/media/generations: {post: {description: "个人 Key / 应用联网调试：Create a billable video job. Persist the request, idempotency key and returned jobId. If acceptance is unknown, replay only the same body/key under the same identity; once jobId is known, query that job. Inputs must be uploaded first. Prompt optimization is an optional separate call. See the media workflow for H3 mode-specific fields.",operationId: createMediaGeneration,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}},{description: Strongly recommended stable business key. Required for safe replay after an unknown result. Reusing a key with a different canonical request conflicts.,in: header,name: Idempotency-Key,required: false,schema: {type: string}}],requestBody: {content: {application/json: {schema: {$ref: "#/components/schemas/AI_MediaGenerationRequest"}}},required: true},responses: {"200": {content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_MediaJob"},{$ref: "#/components/schemas/AI_SynchronousMediaResponse"}]}}},description: "A replayed asynchronous job, or a synchronous result for services whose execution mode is synchronous. H3 uses the MediaJob branch. Inspect the selected service execution contract."},"202": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_MediaJob"}}},description: "Job snapshot. 202 means accepted/in progress, not completed. Read status; replay can return a terminal status. H3 has no user cancellation API.",headers: {Location: {description: Absolute authenticated polling URL; identical to response.jobUrl.,schema: {format: uri,type: string}},Retry-After: {description: Suggested seconds before the next poll.,schema: {minimum: 0,type: integer}}}},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: Create media,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-media-spec-contract-source: "/v1/services[].mediaSpecContract",x-jusp-service-kinds: [video_generation],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}]}},/media/prompt-optimizations: {post: {operationId: createPromptOptimization,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}},{description: Must exactly equal clientRequestId. Replay the same body with the same key after an uncertain network result.,in: header,name: Idempotency-Key,required: true,schema: {maxLength: 128,minLength: 8,type: string}}],requestBody: {required: true,content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_PromptOptimizationRequest"},{$ref: "#/components/schemas/App_AppPromptOptimizationRequest"}]},examples: {}}}},responses: {"201": {content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_PromptOptimizationResponse"},{$ref: "#/components/schemas/App_PromptOptimizationResponse"}]},examples: {}}},description: Prompt optimization completed and persisted},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout},default: {$ref: "#/components/responses/App_Error"}},security: [{AI_bearerAuth: []},*item0],summary: Optimize a media prompt,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-prompt-optimization-capability-source: "/v1/services[].promptOptimization",x-jusp-service-kinds: [video_generation],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据},*item1],description: "个人 Key / 应用联网调试：Optimize a media prompt\n\n已部署应用 Runtime：使用公开model；H3最多7000字符。有视频时最多8图，无视频最多9图，最多3音频且总数<=12；至少一个视觉素材。音频只保留音色等文本意图，不送VLM。预计0～3分钟，超时按当前能力。未知结果只同键同正文恢复。"}},/models: {get: {operationId: listModels,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],responses: {"200": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicModelList"}}},description: Successful response},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: List available model aliases,servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：List available model aliases}},/ocr: {post: {operationId: createDocumentOCR,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {required: true,content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_OCRRequest"},{$ref: "#/components/schemas/App_ReadURLRecognitionRequest"}]},examples: {}}}},responses: {"200": {content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_OCRResponse"},{$ref: "#/components/schemas/App_OCRResponse"}]},examples: {}}},description: Successful response},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout},default: {$ref: "#/components/responses/App_Error"}},security: [{AI_bearerAuth: []},*item0],summary: Extract document text,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-service-kinds: [document_ocr],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据},*item1],description: "个人 Key / 应用联网调试：Extract document text\n\n已部署应用 Runtime：正式入口为JSON，inputs恰好一个input_image/readUrl；平台读取素材后转成底层调用，不传公网素材ID。具体识别输出按所选模型合同。"}},/openapi.json: {get: {operationId: getOpenAPI,responses: {"200": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_OpenAPIDocument"}}},description: OpenAPI 3.1 document generated from the installed public route registry},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [],summary: Read the generated public API contract,parameters: [],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：Read the generated public API contract}},/rerank: {post: {operationId: createRerank,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}}],requestBody: {required: true,content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_RerankRequest"},{$ref: "#/components/schemas/App_RerankRequest"}]},examples: {}}}},responses: {"200": {content: {application/json: {schema: {anyOf: [{$ref: "#/components/schemas/AI_RerankResponse"},{$ref: "#/components/schemas/App_RerankResponse"}]},examples: {}}},description: Successful response},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout},default: {$ref: "#/components/responses/App_Error"}},security: [{AI_bearerAuth: []},*item0],summary: Rerank documents,x-jusp-api-usage-contract-source: "/v1/services[].apiUsageContract",x-jusp-service-kinds: [rerank],servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据},*item1],description: "个人 Key / 应用联网调试：Rerank documents\n\n已部署应用 Runtime：重排候选文档"}},/services: {get: {operationId: listServices,parameters: [{description: "Optional visible ASCII client correlation value, at most 512 bytes. It never replaces the server requestId.",in: header,name: X-Client-Request-Id,required: false,schema: {maxLength: 512,type: string}},{description: Optional exact service-kind filter.,in: query,name: serviceKind,required: false,schema: {type: string}}],responses: {"200": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicServiceList"}}},description: Successful response},"400": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Request},"401": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unauthorized},"402": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Payment Required},"403": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Forbidden},"404": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Not Found},"409": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Conflict},"413": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Request Entity Too Large},"415": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unsupported Media Type},"422": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Unprocessable Entity},"429": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Too Many Requests},"500": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Internal Server Error},"502": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Bad Gateway},"503": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Service Unavailable},"504": {content: {application/json: {schema: {$ref: "#/components/schemas/AI_PublicError"}}},description: Gateway Timeout}},security: [{AI_bearerAuth: []}],summary: List available services and dynamic media contracts,x-jusp-dynamic-contract-authority: "Each service item publishes the conditional request fields, allowed values, media limits, and input roles for that model alias.",servers: [{url: https://api.jusuanhub.com:10443/v1,description: 个人 Account API Key},{url: https://app-api.jusuanhub.com:10443/v1,description: 应用联网调试，使用CLI短期凭据}],description: 个人 Key / 应用联网调试：List available services and dynamic media contracts}},/available-services: {get: {operationId: appAvailableServices,summary: 发现当前应用用户可调用的服务,description: 已部署应用 Runtime：返回公开model，不暴露发布编号或工作负载。includeUnavailable缺省true；提交前检查status、mediaSpecContract和promptOptimization。,parameters: [{name: serviceKind,in: query,schema: {type: string},description: 可选能力类别过滤},{name: includeUnavailable,in: query,schema: {type: boolean,default: true}},{name: page,in: query,schema: {type: integer,minimum: 1,default: 1}},{name: pageSize,in: query,schema: {type: integer,minimum: 1,maximum: 200,default: 100}}],responses: {"200": {description: 当前目录，不保证稍后仍可受理,content: {application/json: {schema: {$ref: "#/components/schemas/App_ServiceList"}}}},default: {$ref: "#/components/responses/App_Error"}},security: &security [*item0],servers: &servers [*item1]}},/media/jobs: {post: {operationId: appCreateMediaJob,summary: 创建一次计费媒体任务,description: 已部署应用 Runtime：params存放prompt等内容，mediaSpec存放生成模式和规格，inputs存放应用受控readUrl；不是公网平铺正文。原子保存clientTaskId、规范请求、幂等键、platformJobId和jobRecoveryRef。恢复引用失败时任务可能已受理，只同键重放。,parameters: [{$ref: "#/components/parameters/App_IdempotencyKey"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/App_RuntimeJobCreateRequest"}}}},responses: {"200": {description: 已完成任务的同键重放,content: {application/json: {schema: {$ref: "#/components/schemas/App_RuntimeJob"}}}},"202": {description: 首次受理或进行中重放,content: {application/json: {schema: {$ref: "#/components/schemas/App_RuntimeJob"}}}},default: {$ref: "#/components/responses/App_Error"}},security: *security,servers: *servers}},/media/jobs:dry-run: {post: {operationId: appPreviewMediaJob,summary: 验证规格、素材读取和准入，不运行模型,description: 已部署应用 Runtime：与create相同正文；可能读取/探测readUrl，不是纯JSON校验。HTTP200仍应检查accepted和blockers。不冻结价格、不锁定算力、不创建计费生成任务。,requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/App_RuntimeJobCreateRequest"}}}},responses: {"200": {description: 检查结果；accepted=false时读取blockers,content: {application/json: {schema: {$ref: "#/components/schemas/App_DryRun"}}}},default: {$ref: "#/components/responses/App_Error"}},parameters: [],security: *security,servers: *servers}},/media/jobs:batch-get: {post: {operationId: appBatchGetMediaJobs,summary: 有界查询一批已知任务,description: 已部署应用 Runtime：用当前应用session，最多100个非空唯一任务ID。不存在与越权均进入missing，不允许枚举；不把单任务恢复引用当作批量授权。,requestBody: {required: true,content: {application/json: {schema: {type: object,required: [platformJobIds],properties: {platformJobIds: {type: array,minItems: 1,maxItems: 100,items: {type: string,minLength: 1}}}},example: {platformJobIds: [job_example]}}}},responses: {"200": {description: 任务快照和未命中标识,content: {application/json: {schema: {$ref: "#/components/schemas/App_JobBatch"}}}},default: {$ref: "#/components/responses/App_Error"}},parameters: [],security: *security,servers: *servers}},"/media/jobs/{jobId}": {get: {operationId: appGetMediaJob,summary: 读取任务状态,security: [{App_managedAppCredential: [],App_runtimeSession: []},{App_managedAppCredential: [],App_jobRecovery: []}],parameters: [{$ref: "#/components/parameters/App_JobId"}],description: 已部署应用 Runtime：GET无正文。普通session与jobRecovery头互斥；恢复引用必须绑定此job。HTTP200只代表查询成功，status决定生成是否成功；H3不提供取消。,responses: {"200": {description: 当前任务快照，不重复发送恢复秘密,content: {application/json: {schema: {$ref: "#/components/schemas/App_RuntimeJob"}}}},default: {$ref: "#/components/responses/App_Error"}},servers: *servers}},"/media/jobs/{jobId}/results/{assetId}/download": {get: {operationId: appDownloadMediaResult,summary: 下载指定任务结果,security: [{App_managedAppCredential: [],App_runtimeSession: []},{App_managedAppCredential: [],App_jobRecovery: []}],parameters: [{$ref: "#/components/parameters/App_JobId"},{name: assetId,in: path,required: true,description: "results[].resultId",schema: {type: string,minLength: 1}}],responses: {"200": {description: 二进制结果；校验正文长度、类型与摘要，下载重试不新建任务,content: {application/octet-stream: {schema: {type: string,format: binary}}}},default: {$ref: "#/components/responses/App_Error"}},servers: *servers,description: 已部署应用 Runtime：下载指定任务结果}},/media/events: {get: {operationId: appMediaEvents,summary: 按游标读取当前应用用户的任务事件,description: 已部署应用 Runtime：先snapshot，再job事件；HTTP缺省持续流，SDK consume_events缺省once=true，二者不同。处理完成后持久化最后事件ID，断线从已确认游标继续；不能用snapshot遗漏证明任务不存在。,parameters: [{name: cursor,in: query,schema: {type: string},description: 已确认的非负事件游标},{name: Last-Event-ID,in: header,schema: {type: string},description: SSE重连游标},{name: once,in: query,schema: {type: boolean,default: false},description: 一轮扫描后返回done并结束},{name: limit,in: query,schema: {type: integer,minimum: 1,maximum: 200,default: 50},description: 每次扫描上限，不是所有历史事件总数}],responses: {"200": {description: snapshot/job事件/heartbeat/done，data为JSON；错误事件也要处理,content: {text/event-stream: {schema: {type: string,description: id为游标，event为事件类别，data含cursor或platformJobId/status/stage/results等}}}},default: {$ref: "#/components/responses/App_Error"}},security: *security,servers: *servers}},/media/exports: {post: {operationId: appCreateExport,summary: 为应用素材生成带平台标识的下载副本,description: 已部署应用 Runtime：source为应用自己的可读取素材，不是jobId+目标格式。只支持marked/download，不改源文件，不重新调用模型。缺省幂等按来源版本和策略归一；同一业务显式保留idempotencyKey。,requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/App_ExportCreate"}}}},responses: {"200": {description: 已有ready导出,content: {application/json: {schema: {$ref: "#/components/schemas/App_Export"}}}},"202": {description: 导出准备中,content: {application/json: {schema: {$ref: "#/components/schemas/App_Export"}}}},default: {$ref: "#/components/responses/App_Error"}},parameters: [],security: *security,servers: *servers}},"/media/exports/{exportId}": {get: {operationId: appGetExport,summary: 读取导出状态,parameters: [{$ref: "#/components/parameters/App_ExportId"}],responses: {"200": {description: status=ready后才能下载，pending/processing继续有界等待,content: {application/json: {schema: {$ref: "#/components/schemas/App_Export"}}}},default: {$ref: "#/components/responses/App_Error"}},security: *security,servers: *servers,description: 已部署应用 Runtime：读取导出状态}},"/media/exports/{exportId}/download": {get: {operationId: appDownloadExport,summary: 下载已准备好的带标识副本,parameters: [{$ref: "#/components/parameters/App_ExportId"}],responses: {"200": {description: 带标识的二进制副本，不是JSON,content: {application/octet-stream: {schema: {type: string,format: binary}}}},"409": {description: export_not_ready；Retry-After为5秒,content: {application/json: {schema: {$ref: "#/components/schemas/App_Error"}}}},default: {$ref: "#/components/responses/App_Error"}},security: *security,servers: *servers,description: 已部署应用 Runtime：下载已准备好的带标识副本}},/resource-usage:aggregate: {post: {operationId: appAggregateResourceUsage,summary: 聚合组织内应用业务资源的用量,description: 已部署应用 Runtime：必须有活动组织会话；组织及appKey由身份推导，不由请求指定。计费精度读取amountScale，不能直接把int字段当展示积分。,requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/App_ResourceUsageRequest"},example: {resourceType: project,resourceIds: [project-42],groupBy: [serviceKind]}}}},responses: {"200": {description: 聚合结果及统计时间、精度和新鲜度,content: {application/json: {schema: {$ref: "#/components/schemas/App_ResourceUsageReport"}}}},default: {$ref: "#/components/responses/App_Error"}},parameters: [],security: *security,servers: *servers}},"/apps/{appKey}/runtime-sessions:exchange": {post: {operationId: exchangeRuntimeSession,summary: Exchange a launch code for a RuntimeSession,description: 应用会话 / 开发者控制面：Consume a one-time launch code using the platform-injected application credential.,tags: [Runtime session],security: [{Store_managedAppCredential: []}],parameters: [{$ref: "#/components/parameters/Store_AppKey"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ExchangeRequest"}}}},responses: {"200": {$ref: "#/components/responses/Store_RuntimeSession"},"400": {$ref: "#/components/responses/Store_Error"},"401": {$ref: "#/components/responses/Store_Error"},"403": {$ref: "#/components/responses/Store_Error"},"500": {$ref: "#/components/responses/Store_Error"}},servers: [{url: "{sessionBaseUrl}",description: Platform-injected JUSP_APP_SESSION_BASE_URL; the concrete address is runtime configuration.,variables: {sessionBaseUrl: {default: https://runtime.invalid,description: Replace with the exact JUSP_APP_SESSION_BASE_URL value supplied to the managed application.}}}]}},"/apps/{appKey}/runtime-sessions/{sessionId}:resolve": {get: {operationId: resolveRuntimeSession,summary: Resolve a RuntimeSession,description: 应用会话 / 开发者控制面：Read the current session bound to appKey and sessionId.,tags: [Runtime session],security: [{Store_managedAppCredential: []}],parameters: [{$ref: "#/components/parameters/Store_AppKey"},{$ref: "#/components/parameters/Store_SessionId"}],responses: {"200": {$ref: "#/components/responses/Store_RuntimeSession"},"403": {$ref: "#/components/responses/Store_Error"},"404": {$ref: "#/components/responses/Store_Error"},"500": {$ref: "#/components/responses/Store_Error"}},servers: [{url: "{sessionBaseUrl}",description: Platform-injected JUSP_APP_SESSION_BASE_URL.,variables: {sessionBaseUrl: {default: https://runtime.invalid}}}]}},"/apps/{appKey}/runtime-sessions/{sessionId}:renew": {post: {operationId: renewRuntimeSession,summary: Renew a RuntimeSession,description: 应用会话 / 开发者控制面：Re-evaluate the current subject and issue a refreshed session.,tags: [Runtime session],security: [{Store_managedAppCredential: []}],parameters: [{$ref: "#/components/parameters/Store_AppKey"},{$ref: "#/components/parameters/Store_SessionId"}],requestBody: {required: false,content: {application/json: {schema: {type: object,additionalProperties: false}}}},responses: {"200": {$ref: "#/components/responses/Store_RuntimeSession"},default: {$ref: "#/components/responses/Store_Error"}},servers: [{url: "{sessionBaseUrl}",description: Platform-injected JUSP_APP_SESSION_BASE_URL.,variables: {sessionBaseUrl: {default: https://runtime.invalid}}}]}},"/apps/{appKey}/runtime-sessions/{sessionId}/organization-directory/groups:list": {post: {operationId: listOrganizationGroups,summary: List organization groups,description: 应用会话 / 开发者控制面：List groups visible to the current organization manager session.,tags: [Runtime session],security: [{Store_managedAppCredential: []}],parameters: [{$ref: "#/components/parameters/Store_AppKey"},{$ref: "#/components/parameters/Store_SessionId"}],requestBody: {required: true,content: {application/json: {schema: {type: object,additionalProperties: false}}}},responses: {"200": {$ref: "#/components/responses/Store_OrganizationGroups"},default: {$ref: "#/components/responses/Store_Error"}},servers: [{url: "{sessionBaseUrl}",description: Platform-injected JUSP_APP_SESSION_BASE_URL.,variables: {sessionBaseUrl: {default: https://runtime.invalid}}}]}},"/apps/{appKey}/runtime-sessions/{sessionId}/organization-directory/members:list": {post: {operationId: listOrganizationMembers,summary: List organization members,description: 应用会话 / 开发者控制面：List organization members with optional group and search filters.,tags: [Runtime session],security: [{Store_managedAppCredential: []}],parameters: [{$ref: "#/components/parameters/Store_AppKey"},{$ref: "#/components/parameters/Store_SessionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_OrganizationMemberRequest"}}}},responses: {"200": {$ref: "#/components/responses/Store_OrganizationMembers"},default: {$ref: "#/components/responses/Store_Error"}},servers: [{url: "{sessionBaseUrl}",description: Platform-injected JUSP_APP_SESSION_BASE_URL.,variables: {sessionBaseUrl: {default: https://runtime.invalid}}}]}},"/apps/{appKey}/app-grants": {post: {operationId: issueAppGrant,summary: Issue an AppGrant,description: 应用会话 / 开发者控制面：Issue a short-lived grant for a declared callee capability.,tags: [App grant],security: [{Store_managedAppCredential: []}],parameters: [{$ref: "#/components/parameters/Store_AppKey"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppGrantIssueRequest"}}}},responses: {"200": {$ref: "#/components/responses/Store_AppGrantIssued"},default: {$ref: "#/components/responses/Store_Error"}},servers: [{url: "{sessionBaseUrl}",description: Platform-injected JUSP_APP_SESSION_BASE_URL.,variables: {sessionBaseUrl: {default: https://runtime.invalid}}}]}},"/apps/{appKey}/app-grants:resolve": {post: {operationId: resolveAppGrant,summary: Resolve an AppGrant,description: "应用会话 / 开发者控制面：Resolve a grant into its caller, callee, subject, scope, and expiry facts.",tags: [App grant],security: [{Store_managedAppCredential: []}],parameters: [{$ref: "#/components/parameters/Store_AppKey"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppGrantResolveRequest"}}}},responses: {"200": {$ref: "#/components/responses/Store_AppGrantResolved"},default: {$ref: "#/components/responses/Store_Error"}},servers: [{url: "{sessionBaseUrl}",description: Platform-injected JUSP_APP_SESSION_BASE_URL.,variables: {sessionBaseUrl: {default: https://runtime.invalid}}}]}},"/apps/{appKey}/app-grants:launch": {post: {operationId: issueAppGrantLaunchCode,summary: Issue an AppGrant launch code,description: 应用会话 / 开发者控制面：Issue a one-time launch code for a granted application handoff.,tags: [App grant],security: [{Store_managedAppCredential: []}],parameters: [{$ref: "#/components/parameters/Store_AppKey"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppGrantResolveRequest"}}}},responses: {"200": {$ref: "#/components/responses/Store_AppLaunch"},default: {$ref: "#/components/responses/Store_Error"}},servers: [{url: "{sessionBaseUrl}",description: Platform-injected JUSP_APP_SESSION_BASE_URL.,variables: {sessionBaseUrl: {default: https://runtime.invalid}}}]}},"/inter-app/{calleeAppKey}/{apiVersion}/{businessPath}": {post: {operationId: proxyInterAppRequest,summary: Proxy an inter-app request,description: 应用会话 / 开发者控制面：Forward the caller request under a resolved AppGrant to the declared callee route.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}},{name: businessPath,in: path,required: true,schema: {type: string,minLength: 1}}],requestBody: {required: false,content: {application/json: {schema: {type: object,additionalProperties: true}}}},responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: &servers1 [{url: https://app-api.jusuanhub.com:10443/v1,description: AppStore inter-app proxy base.}]},get: {operationId: proxyInterAppGet,summary: Proxy inter-app GET request,description: 应用会话 / 开发者控制面：Forward a GET request through the developer inter-app proxy.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}},{name: businessPath,in: path,required: true,schema: {type: string,minLength: 1}}],responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers1},put: {operationId: proxyInterAppPut,summary: Proxy inter-app PUT request,description: 应用会话 / 开发者控制面：Forward a PUT request through the developer inter-app proxy.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}},{name: businessPath,in: path,required: true,schema: {type: string,minLength: 1}}],requestBody: {required: false,content: {application/json: {schema: {type: object,additionalProperties: true}}}},responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers1},patch: {operationId: proxyInterAppPatch,summary: Proxy inter-app PATCH request,description: 应用会话 / 开发者控制面：Forward a PATCH request through the developer inter-app proxy.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}},{name: businessPath,in: path,required: true,schema: {type: string,minLength: 1}}],requestBody: {required: false,content: {application/json: {schema: {type: object,additionalProperties: true}}}},responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers1},delete: {operationId: proxyInterAppDelete,summary: Proxy inter-app DELETE request,description: 应用会话 / 开发者控制面：Forward a DELETE request through the developer inter-app proxy.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}},{name: businessPath,in: path,required: true,schema: {type: string,minLength: 1}}],responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers1},options: {operationId: proxyInterAppOptions,summary: Proxy inter-app OPTIONS request,description: 应用会话 / 开发者控制面：Forward an OPTIONS request through the developer inter-app proxy.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}},{name: businessPath,in: path,required: true,schema: {type: string,minLength: 1}}],responses: {"200": {description: Provider-defined response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers1},head: {operationId: proxyInterAppHead,summary: Proxy inter-app HEAD request,description: 应用会话 / 开发者控制面：Forward a HEAD request through the developer inter-app proxy.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}},{name: businessPath,in: path,required: true,schema: {type: string,minLength: 1}}],responses: {"200": {description: Provider-defined response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers1},trace: {operationId: proxyInterAppTrace,summary: Proxy inter-app TRACE request,description: 应用会话 / 开发者控制面：Forward a TRACE request through the developer inter-app proxy.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}},{name: businessPath,in: path,required: true,schema: {type: string,minLength: 1}}],responses: {"200": {description: Provider-defined response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers1}},"/inter-app/{calleeAppKey}/{apiVersion}": {post: {operationId: proxyInterAppRootPost,summary: Proxy inter-app root POST request,description: 应用会话 / 开发者控制面：Forward a POST request to the callee API-version root.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}}],requestBody: {required: false,content: {application/json: {schema: {type: object,additionalProperties: true}}}},responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: &servers2 [{url: https://app-api.jusuanhub.com:10443/v1,description: AppStore inter-app proxy base.}]},get: {operationId: proxyInterAppRootGet,summary: Proxy inter-app root GET request,description: 应用会话 / 开发者控制面：Forward a GET request to the callee API-version root.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}}],responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers2},put: {operationId: proxyInterAppRootPut,summary: Proxy inter-app root PUT request,description: 应用会话 / 开发者控制面：Forward a PUT request to the callee API-version root.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}}],requestBody: {required: false,content: {application/json: {schema: {type: object,additionalProperties: true}}}},responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers2},patch: {operationId: proxyInterAppRootPatch,summary: Proxy inter-app root PATCH request,description: 应用会话 / 开发者控制面：Forward a PATCH request to the callee API-version root.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}}],requestBody: {required: false,content: {application/json: {schema: {type: object,additionalProperties: true}}}},responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers2},delete: {operationId: proxyInterAppRootDelete,summary: Proxy inter-app root DELETE request,description: 应用会话 / 开发者控制面：Forward a DELETE request to the callee API-version root.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}}],responses: {"200": {description: Provider-defined JSON response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers2},options: {operationId: proxyInterAppRootOptions,summary: Proxy inter-app root OPTIONS request,description: 应用会话 / 开发者控制面：Forward an OPTIONS request to the callee API-version root.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}}],responses: {"200": {description: Provider-defined response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers2},head: {operationId: proxyInterAppRootHead,summary: Proxy inter-app root HEAD request,description: 应用会话 / 开发者控制面：Forward a HEAD request to the callee API-version root.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}}],responses: {"200": {description: Provider-defined response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers2},trace: {operationId: proxyInterAppRootTrace,summary: Proxy inter-app root TRACE request,description: 应用会话 / 开发者控制面：Forward a TRACE request to the callee API-version root.,tags: [App grant],security: [{Store_developerControlToken: [],Store_appGrant: []}],parameters: [{name: calleeAppKey,in: path,required: true,schema: {type: string,minLength: 1}},{name: apiVersion,in: path,required: true,schema: {type: string,pattern: "^v[1-9][0-9]*$"}}],responses: {"200": {description: Provider-defined response,content: {application/json: {schema: {type: object,additionalProperties: true}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers2}},/api/v1/appstore/developer/publishers: {get: {operationId: listPublishers,summary: List publishers,description: 应用会话 / 开发者控制面：List publishers visible to the authenticated developer.,tags: [Developer application],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_Page"},{$ref: "#/components/parameters/Store_PageSize"}],responses: {"200": {description: Developer publishers,content: {application/json: {schema: {$ref: "#/components/schemas/Store_PagePublisher"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: &servers3 [{url: https://app-api.jusuanhub.com:10443,description: Developer control plane base; injected runtime clients must use JUSP_APP_SESSION_BASE_URL instead.}]}},/api/v1/appstore/developer/apps: {get: {operationId: listOwnedApps,summary: List owned apps,description: 应用会话 / 开发者控制面：List applications owned by the authenticated developer.,tags: [Developer application],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_Page"},{$ref: "#/components/parameters/Store_PageSize"}],responses: {"200": {description: Owned applications,content: {application/json: {schema: {$ref: "#/components/schemas/Store_PageApp"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3},post: {operationId: createApp,summary: Create app,description: 应用会话 / 开发者控制面：Create an application under the authenticated developer publisher.,tags: [Developer application],security: [{Store_developerBearer: []}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_CreateAppRequest"}}}},responses: {"200": {description: Created application,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppProduct"}}}},default: {$ref: "#/components/responses/Store_Error"}},parameters: [],servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}": {get: {operationId: getOwnedApp,summary: Get owned app,description: 应用会话 / 开发者控制面：Read one owned application projection.,tags: [Developer application],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],responses: {"200": {description: Application,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppProduct"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/roles": {get: {operationId: listAppRoles,summary: List app roles,description: 应用会话 / 开发者控制面：Read role definitions for an owned application.,tags: [Developer application],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],responses: {"200": {description: Role definitions,content: {application/json: {schema: {type: array,items: {$ref: "#/components/schemas/Store_RoleDefinition"}}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3},put: {operationId: replaceAppRoles,summary: Replace app roles,description: 应用会话 / 开发者控制面：Replace role definitions for an owned application.,tags: [Developer application],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],requestBody: {required: true,content: {application/json: {schema: {type: array,items: {$ref: "#/components/schemas/Store_RoleDefinition"}}}}},responses: {"200": {description: Updated role definitions,content: {application/json: {schema: {type: array,items: {$ref: "#/components/schemas/Store_RoleDefinition"}}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/submissions:validate": {post: {operationId: validateSubmission,summary: Validate submission,description: 应用会话 / 开发者控制面：Validate an application submission without creating a version.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppSubmission"}}}},responses: {"200": {description: Validation projection,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ValidationResult"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions": {get: {operationId: listAppVersions,summary: List app versions,description: 应用会话 / 开发者控制面：List version projections for an owned application.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_Page"},{$ref: "#/components/parameters/Store_PageSize"}],responses: {"200": {description: Versions,content: {application/json: {schema: {$ref: "#/components/schemas/Store_PageVersion"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3},post: {operationId: createAppVersion,summary: Create app version,description: 应用会话 / 开发者控制面：Create a draft version from a validated submission.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_CreateVersionRequest"}},multipart/form-data: {schema: {$ref: "#/components/schemas/Store_VersionUploadForm"}}}},responses: {"201": {description: Created draft version,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppVersion"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}": {get: {operationId: getAppVersion,summary: Get app version,description: 应用会话 / 开发者控制面：Read one public version projection.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Version,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppVersion"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3},put: {operationId: editAppVersion,summary: Edit app version,description: 应用会话 / 开发者控制面：Apply an allowed edit to an owned version.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_VersionEdit"}}}},responses: {"200": {description: Updated version,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppVersion"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3},delete: {operationId: requestAppVersionDeletion,summary: Request version deletion,description: 应用会话 / 开发者控制面：Create a version deletion request.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Delete request,content: {application/json: {schema: {$ref: "#/components/schemas/Store_VersionRequest"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/source": {put: {operationId: replaceVersionSource,summary: Replace version source,description: 应用会话 / 开发者控制面：Replace source metadata or source content for a version.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppSubmission"}}}},responses: {"200": {description: Source receipt/version,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppVersion"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/source/upload": {post: {operationId: uploadVersionSource,summary: Upload version source,description: 应用会话 / 开发者控制面：Upload source content for a version.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {multipart/form-data: {schema: {type: object,required: [file],properties: {file: {type: string,format: binary}}}}}},responses: {"200": {description: Source receipt,content: {application/json: {schema: {$ref: "#/components/schemas/Store_SourceReceipt"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/source/content": {get: {operationId: readVersionSource,summary: Read version source,description: 应用会话 / 开发者控制面：Read the stored JSON source projection for a version.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Original JSON source,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppSubmission"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/source/download": {get: {operationId: downloadVersionSource,summary: Download version source,description: 应用会话 / 开发者控制面：Download the stored source attachment for a version.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Original source attachment,content: {application/octet-stream: {schema: {type: string,format: binary}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/requests": {get: {operationId: listVersionRequests,summary: List version requests,description: 应用会话 / 开发者控制面：List requests associated with a version.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Version requests,content: {application/json: {schema: {$ref: "#/components/schemas/Store_PageRequest"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3},post: {operationId: createVersionRequest,summary: Create version request,description: 应用会话 / 开发者控制面：Create a lifecycle request for a version.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_VersionRequestInput"}}}},responses: {"200": {description: Version request,content: {application/json: {schema: {$ref: "#/components/schemas/Store_VersionRequest"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/runtime-sessions/{sessionId}:resolve": {get: {operationId: resolveDeveloperRuntimeSession,summary: Resolve developer runtime session,description: 应用会话 / 开发者控制面：Resolve the CLI-bound runtime session for the owned app version.,tags: [Runtime session],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_SessionId"}],responses: {"200": {$ref: "#/components/responses/Store_RuntimeSession"},"404": {$ref: "#/components/responses/Store_Error"},"503": {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/runtime-sessions/{sessionId}/organization-directory/groups:list": {post: {operationId: listDeveloperOrganizationGroups,summary: List developer organization groups,description: 应用会话 / 开发者控制面：List organization groups through a CLI-bound runtime session.,tags: [Runtime session],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_SessionId"}],requestBody: {required: true,content: {application/json: {schema: {type: object,additionalProperties: false}}}},responses: {"200": {$ref: "#/components/responses/Store_OrganizationGroups"},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/runtime-sessions/{sessionId}/organization-directory/members:list": {post: {operationId: listDeveloperOrganizationMembers,summary: List developer organization members,description: 应用会话 / 开发者控制面：List organization members through a CLI-bound runtime session.,tags: [Runtime session],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_SessionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_OrganizationMemberRequest"}}}},responses: {"200": {$ref: "#/components/responses/Store_OrganizationMembers"},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/debug-receivers": {post: {operationId: createDebugReceiver,summary: 登记本地提供方配对,description: 应用会话 / 开发者控制面：仅绑定当前应用版本的CLI短期凭据；双方必须保持同一获批主体和声明能力。业务请求本地直连，不部署线上应用。,tags: [App grant],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_DebugReceiverInput"}}}},responses: {"200": {description: 接收许可,content: {application/json: {schema: {$ref: "#/components/schemas/Store_DebugReceiver"}}}},"400": {$ref: "#/components/responses/Store_Error"},"404": {$ref: "#/components/responses/Store_Error"},"409": {$ref: "#/components/responses/Store_Error"},"503": {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/debug-receivers/{receiverRef}": {delete: {operationId: revokeDebugReceiver,summary: 撤销自己本地提供方配对,description: 应用会话 / 开发者控制面：仅绑定当前应用版本的CLI短期凭据；双方必须保持同一获批主体和声明能力。业务请求本地直连，不部署线上应用。,tags: [App grant],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{name: receiverRef,in: path,required: true,schema: {type: string}}],responses: {"200": {description: 已撤销,content: {application/json: {schema: {type: object,required: [revoked],properties: {revoked: {type: boolean}}}}}},"400": {$ref: "#/components/responses/Store_Error"},"404": {$ref: "#/components/responses/Store_Error"},"409": {$ref: "#/components/responses/Store_Error"},"503": {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/debug-peer-grants": {post: {operationId: issueDebugPeerGrant,summary: 签发双本地短期应用授权,description: 应用会话 / 开发者控制面：仅绑定当前应用版本的CLI短期凭据；双方必须保持同一获批主体和声明能力。业务请求本地直连，不部署线上应用。,tags: [App grant],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_DebugPeerIssueInput"}}}},responses: {"200": {$ref: "#/components/responses/Store_AppGrantIssued"},"400": {$ref: "#/components/responses/Store_Error"},"404": {$ref: "#/components/responses/Store_Error"},"409": {$ref: "#/components/responses/Store_Error"},"503": {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/debug-peer-grants:resolve": {post: {operationId: resolveDebugPeerGrant,summary: 本地提供方核验短期授权,description: 应用会话 / 开发者控制面：仅绑定当前应用版本的CLI短期凭据；双方必须保持同一获批主体和声明能力。业务请求本地直连，不部署线上应用。,tags: [App grant],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppGrantResolveRequest"}}}},responses: {"200": {$ref: "#/components/responses/Store_AppGrantResolved"},"400": {$ref: "#/components/responses/Store_Error"},"404": {$ref: "#/components/responses/Store_Error"},"409": {$ref: "#/components/responses/Store_Error"},"503": {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/debug-peer-grants:launch": {post: {operationId: launchDebugPeerGrant,summary: 签发本地应用一次性启动码,description: 应用会话 / 开发者控制面：仅绑定当前应用版本的CLI短期凭据；双方必须保持同一获批主体和声明能力。业务请求本地直连，不部署线上应用。,tags: [App grant],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppGrantResolveRequest"}}}},responses: {"200": {description: 启动码,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppLaunch"}}}},"400": {$ref: "#/components/responses/Store_Error"},"404": {$ref: "#/components/responses/Store_Error"},"409": {$ref: "#/components/responses/Store_Error"},"503": {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/debug-runtime-sessions:exchange": {post: {operationId: exchangeDebugPeerRuntimeSession,summary: 本地提供方一次性交换自己的会话,description: 应用会话 / 开发者控制面：仅绑定当前应用版本的CLI短期凭据；双方必须保持同一获批主体和声明能力。业务请求本地直连，不部署线上应用。,tags: [App grant],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {type: object,additionalProperties: false,required: [launchCode],properties: {launchCode: {type: string,minLength: 1}}}}}},responses: {"200": {$ref: "#/components/responses/Store_RuntimeSession"},"400": {$ref: "#/components/responses/Store_Error"},"404": {$ref: "#/components/responses/Store_Error"},"409": {$ref: "#/components/responses/Store_Error"},"503": {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/app-grants": {post: {operationId: issueDeveloperAppGrant,summary: Issue developer app grant,description: 应用会话 / 开发者控制面：Issue a grant from a CLI-bound developer runtime session.,tags: [App grant],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_DeveloperGrantIssueRequest"}}}},responses: {"200": {$ref: "#/components/responses/Store_AppGrantIssued"},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/requests/{requestId}/cancel": {post: {operationId: cancelVersionRequest,summary: Cancel version request,description: 应用会话 / 开发者控制面：Cancel a cancellable version request.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_RequestId"}],responses: {"200": {description: Cancelled request,content: {application/json: {schema: {$ref: "#/components/schemas/Store_VersionRequest"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/audit": {get: {operationId: listVersionAudit,summary: List version audit,description: 应用会话 / 开发者控制面：Read audit records for a version.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Version audit records,content: {application/json: {schema: {$ref: "#/components/schemas/Store_PageAudit"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/changes": {post: {operationId: createVersionChange,summary: Create version change,description: 应用会话 / 开发者控制面：Create a same-version change request.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_VersionChangeInput"}}}},responses: {"200": {description: Version change request,content: {application/json: {schema: {$ref: "#/components/schemas/Store_VersionRequest"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/changes/{requestId}/source/upload": {post: {operationId: uploadVersionChangeSource,summary: Upload change source,description: 应用会话 / 开发者控制面：Upload source content for a same-version change.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_RequestId"}],requestBody: {required: true,content: {multipart/form-data: {schema: {type: object,required: [file],properties: {file: {type: string,format: binary}}}}}},responses: {"200": {description: Change source receipt,content: {application/json: {schema: {$ref: "#/components/schemas/Store_SourceReceipt"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/changes/{requestId}/source/content": {get: {operationId: readVersionChangeSource,summary: Read change source,description: 应用会话 / 开发者控制面：Read the JSON source projection for a same-version change.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_RequestId"}],responses: {"200": {description: Change source JSON,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppSubmission"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/changes/{requestId}/source/download": {get: {operationId: downloadVersionChangeSource,summary: Download change source,description: 应用会话 / 开发者控制面：Download the source attachment for a same-version change.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_RequestId"}],responses: {"200": {description: Change source attachment,content: {application/octet-stream: {schema: {type: string,format: binary}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/changes/{requestId}/submit": {post: {operationId: submitVersionChange,summary: Submit version change,description: 应用会话 / 开发者控制面：Submit a same-version change request for processing.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_RequestId"}],responses: {"200": {description: Submitted change request,content: {application/json: {schema: {$ref: "#/components/schemas/Store_VersionRequest"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/validate": {post: {operationId: validateAppVersion,summary: Validate app version,description: 应用会话 / 开发者控制面：Run version validation for an owned version.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Validation result,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ValidationResult"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/publish": {post: {operationId: publishAppVersion,summary: Publish app version,description: 应用会话 / 开发者控制面：Publish an owned version through the lifecycle handler.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Published version,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppVersion"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/promote": {post: {operationId: promoteAppVersion,summary: Promote app version,description: 应用会话 / 开发者控制面：Promote an owned version through the lifecycle handler.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Promoted version,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppVersion"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/submit": {post: {operationId: submitAppVersion,summary: Submit app version,description: 应用会话 / 开发者控制面：Submit an owned version through the lifecycle handler.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],responses: {"200": {description: Submitted version,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppVersion"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/launch": {post: {operationId: issueLaunchCode,summary: Issue launch code,description: 应用会话 / 开发者控制面：Issue a developer-scoped application launch code.,tags: [Developer application],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_LaunchRequest"}}}},responses: {"200": {description: Launch code,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppLaunch"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/bundles": {post: {operationId: compileAppBundle,summary: Compile app bundle,description: 应用会话 / 开发者控制面：Compile the submitted application project into the public bundle projection.,tags: [Developer version],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_BundleCompileRequest"}}}},responses: {"200": {description: Compiled bundle,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppBundle"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/image-imports": {post: {operationId: createAppImageImport,summary: Create app image import,description: 应用会话 / 开发者控制面：Create an image import upload session for an application.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportRequest"}}}},responses: {"201": {description: Upload session,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportSession"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/image-imports/{imageImportId}": {get: {operationId: getAppImageImport,summary: Get app image import,description: 应用会话 / 开发者控制面：Read an application image import session.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_ImageImportId"}],responses: {"200": {description: Upload session,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportSession"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/image-imports/{imageImportId}/complete": {post: {operationId: completeAppImageImport,summary: Complete app image import,description: 应用会话 / 开发者控制面：Complete an application image import with uploaded parts.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_ImageImportId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportComplete"}}}},responses: {"200": {description: Import result,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportResult"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/image-imports": {post: {operationId: createVersionImageImport,summary: Create version image import,description: 应用会话 / 开发者控制面：Create an image import upload session for a version.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportRequest"}}}},responses: {"201": {description: Upload session,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportSession"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/image-imports/{imageImportId}": {get: {operationId: getVersionImageImport,summary: Get version image import,description: 应用会话 / 开发者控制面：Read a version image import session.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_ImageImportId"}],responses: {"200": {description: Upload session,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportSession"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/image-imports/{imageImportId}/complete": {post: {operationId: completeVersionImageImport,summary: Complete version image import,description: 应用会话 / 开发者控制面：Complete a version image import with uploaded parts.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_ImageImportId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportComplete"}}}},responses: {"200": {description: Import result,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportResult"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/changes/{requestId}/image-imports": {post: {operationId: createChangeImageImport,summary: Create change image import,description: 应用会话 / 开发者控制面：Create an image import upload session for a same-version change.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_RequestId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportRequest"}}}},responses: {"201": {description: Upload session,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportSession"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/changes/{requestId}/image-imports/{imageImportId}": {get: {operationId: getChangeImageImport,summary: Get change image import,description: 应用会话 / 开发者控制面：Read a same-version change image import session.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_RequestId"},{$ref: "#/components/parameters/Store_ImageImportId"}],responses: {"200": {description: Upload session,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportSession"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/versions/{versionId}/changes/{requestId}/image-imports/{imageImportId}/complete": {post: {operationId: completeChangeImageImport,summary: Complete change image import,description: 应用会话 / 开发者控制面：Complete a same-version change image import with uploaded parts.,tags: [Developer upload],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"},{$ref: "#/components/parameters/Store_VersionId"},{$ref: "#/components/parameters/Store_RequestId"},{$ref: "#/components/parameters/Store_ImageImportId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportComplete"}}}},responses: {"200": {description: Import result,content: {application/json: {schema: {$ref: "#/components/schemas/Store_ImageImportResult"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/test-accounts": {get: {operationId: listAppTestAccounts,summary: List approved test identities,description: "应用会话 / 开发者控制面：List this owned application's active test-account approvals. Does not return login sessions or credentials. Identity status is checked again on authorization and every protected debug request.",tags: [Developer credential],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],responses: {"200": {description: Approved test identities; empty items when none configured.,content: {application/json: {schema: {type: object,required: [items],properties: {items: {type: array,items: {$ref: "#/components/schemas/Store_AppTestAccount"}}}}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},"/api/v1/appstore/developer/apps/{appId}/cli-authorizations": {post: {operationId: authorizeCli,summary: Authorize CLI,description: "应用会话 / 开发者控制面：Create a five-minute PKCE-bound one-time code. For version-level runtime debugging, optionally select an app-specific testAccountId approval; never accept an arbitrary subject. Unavailable or revoked test identity returns 403 TEST_IDENTITY_NOT_AUTHORIZED.",tags: [Developer credential],security: [{Store_developerBearer: []}],parameters: [{$ref: "#/components/parameters/Store_AppId"}],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_CliAuthorizationRequest"}}}},responses: {"200": {description: PKCE authorization,content: {application/json: {schema: {$ref: "#/components/schemas/Store_CliAuthorizationResponse"}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers3}},/api/v1/appstore/developer/cli-sessions:exchange: {post: {operationId: exchangeCliSession,summary: Exchange CLI session,description: "应用会话 / 开发者控制面：Atomically consume a PKCE code and create a 30-minute scoped session. Version-level debugging records developer actor separately from the selected business/billing identity, grants runtime-only scopes and cannot upload versions/images, approve, or renew into production. Incorrect verifier, replay or removed approval returns 401.",tags: [Developer credential],requestBody: {required: true,content: {application/json: {schema: {$ref: "#/components/schemas/Store_CliExchangeRequest"}}}},responses: {"200": {description: CLI session,content: {application/json: {schema: {$ref: "#/components/schemas/Store_CliSessionResponse"}}}},default: {$ref: "#/components/responses/Store_Error"}},parameters: [],security: [],servers: *servers3}},/api/v1/appstore/developer/sdk/python/credentials: {post: {operationId: issueSdkCredential,summary: Issue SDK credential,description: 应用会话 / 开发者控制面：Issue the short-lived credential used by the SDK package index.,tags: [Developer credential],security: [{Store_developerBearer: []}],responses: {"200": {description: Package index credential,content: {application/json: {schema: {$ref: "#/components/schemas/Store_SdkCredentialResponse"}}}},default: {$ref: "#/components/responses/Store_Error"}},parameters: [],servers: *servers3}},/api/v1/appstore/sdk/python/simple: {get: {operationId: getSdkPackageIndex,summary: List SDK packages,description: 应用会话 / 开发者控制面：Serve the PEP 503 package index root with a short-lived Basic token.,security: [{Store_sdkBasicAuth: []}],responses: {"200": {description: PEP 503 HTML index,content: {text/html: {schema: {type: string}}}},default: {$ref: "#/components/responses/Store_Error"}},parameters: [],servers: &servers4 [{url: https://app-api.jusuanhub.com:10443,description: AppStore SDK package index base.}]},head: {operationId: headSdkPackageIndex,summary: Probe SDK package index,description: 应用会话 / 开发者控制面：Probe the PEP 503 package index root with a short-lived Basic token.,security: [{Store_sdkBasicAuth: []}],responses: {"200": {description: PEP 503 HTML index headers},default: {$ref: "#/components/responses/Store_Error"}},parameters: [],servers: *servers4}},"/api/v1/appstore/sdk/python/simple/{package}": {get: {operationId: getSdkPackage,summary: List SDK package files,description: "应用会话 / 开发者控制面：Serve one package's PEP 503 file listing.",security: [{Store_sdkBasicAuth: []}],parameters: [{name: package,in: path,required: true,schema: {type: string,minLength: 1}}],responses: {"200": {description: PEP 503 package HTML,content: {text/html: {schema: {type: string}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: &servers5 [{url: https://app-api.jusuanhub.com:10443,description: AppStore SDK package index base.}]},head: {operationId: headSdkPackage,summary: Probe SDK package files,description: "应用会话 / 开发者控制面：Probe one package's PEP 503 file listing.",security: [{Store_sdkBasicAuth: []}],parameters: [{name: package,in: path,required: true,schema: {type: string,minLength: 1}}],responses: {"200": {description: PEP 503 package HTML headers},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers5}},"/api/v1/appstore/sdk/python/simple/{package}/files/{file}": {get: {operationId: downloadSdkPackageFile,summary: Download SDK package file,description: 应用会话 / 开发者控制面：Download one published SDK package file using a short-lived Basic token.,security: [{Store_sdkBasicAuth: []}],parameters: [{name: package,in: path,required: true,schema: {type: string,minLength: 1}},{name: file,in: path,required: true,schema: {type: string,minLength: 1}}],responses: {"200": {description: Package archive,content: {application/octet-stream: {schema: {type: string,format: binary}}}},default: {$ref: "#/components/responses/Store_Error"}},servers: &servers6 [{url: https://app-api.jusuanhub.com:10443,description: AppStore SDK package index base.}]},head: {operationId: headSdkPackageFile,summary: Probe SDK package file,description: 应用会话 / 开发者控制面：Probe one published SDK package file.,security: [{Store_sdkBasicAuth: []}],parameters: [{name: package,in: path,required: true,schema: {type: string,minLength: 1}},{name: file,in: path,required: true,schema: {type: string,minLength: 1}}],responses: {"200": {description: Package archive headers},default: {$ref: "#/components/responses/Store_Error"}},servers: *servers6}}},components: {schemas: {AI_AdmissionPreviewRequest: {examples: [{model: minimax-h3,request: {generationMode: t2v,model: minimax-h3,orientation: landscape,prompt: 雨夜站台，镜头缓慢推进，人物自然递伞后共同离开。,resolutionTier: 768p,seconds: 5,seed: 1234}}],properties: {model: {description: Public alias of an async-admission capable service.,type: string},request: {additionalProperties: true,description: Prospective creation body; omitted/null becomes empty. The platform overrides request.model using the selected alias.,type: [object,"null"]}},required: [model],type: object},AI_AdmissionPreviewResponse: {properties: {admission: {additionalProperties: true,description: Current admission decision and optional retry guidance; neither a reservation nor a guarantee.,type: object},generatedAt: {format: date-time,type: string},publicationId: {description: Informational selected publication; clients continue to submit model alias.,type: string},serviceKind: {type: string}},required: [publicationId,serviceKind,admission,generatedAt],type: object},AI_AudioGenerationRequest: {properties: {generationMode: {description: Mode from the selected service.,type: string},input_video_asset_id: {description: Uploaded video for Foley; do not send for text-only TTS.,type: string},instruct: {description: Required with voice_design; Qwen3-TTS max160 characters.,type: string},model: {description: "Public audio model alias. TTS, music and video Foley use different conditional fields.",type: string},prompt: {description: Foley/music description when supported.,type: string},seconds: {type: integer},seed: {type: integer},speaker: {description: Required with custom_voice; choose a published speaker.,type: string},text: {description: TTS content; Qwen3-TTS character limit. Other models use their own service contract.,maxLength: 600,type: string},voiceMode: {description: "Qwen3-TTS: text (default), custom_voice or voice_design.",type: string}},required: [model],type: object},AI_AudioTranscriptionRequest: {properties: {file: {description: "One nonempty file <=25MiB. MIME: audio/wav,x-wav,mpeg,mp3,mp4,x-m4a,webm,ogg,flac; octet-stream requires a supported file extension.",format: binary,type: string},language: {description: Only when supported by the selected model.,type: string},model: {description: Public audio_transcription alias.,type: string},response_format: {description: Only when supported by the selected model; JSON is the normal response.,type: string}},required: [model,file],type: object},AI_AudioTranscriptionResponse: {properties: {duration: {type: number},language: {type: string},segments: {items: {properties: {end: {type: number},id: {type: integer},start: {type: number},text: {type: string}},type: object},type: array},text: {type: string}},type: object},AI_CatalogVoice: {properties: {description: {type: string},displayName: {type: string},previewAssetId: {type: string},primaryLanguage: {type: string},supportedLanguages: {items: {type: string},type: array},tags: {items: {type: string},type: array},version: {type: integer},voiceId: {type: string}},required: [voiceId,version,displayName,primaryLanguage,supportedLanguages],type: object},AI_CatalogVoiceList: {properties: {data: {items: {$ref: "#/components/schemas/AI_CatalogVoice"},type: array},object: {const: list,type: string}},required: [object,data],type: object},AI_ChatRequest: {properties: {messages: {items: {properties: {content: {oneOf: [{type: string},{items: {properties: {image_url: {properties: {url: {description: Platform-controlled asset URL or supported inline data; not an arbitrary external image URL.,type: string}},type: object},text: {type: string},type: {description: "Part type allowed by the selected service, e.g. text/image_url/video_url.",type: string},video_url: {properties: {url: {description: Platform-controlled input video URL; arbitrary external video URLs are rejected.,type: string}},type: object}},required: [type],type: object},type: array}]},role: {enum: [system,user,assistant,tool],type: string}},required: [role,content],type: object},type: array},model: {description: Public text_chat/vision_chat model alias.,type: string},stream: {default: false,description: SSE when the selected service supports streaming. Sampling fields must be explicitly allowed by the model contract; platform-managed sampling fields are rejected.,type: boolean}},required: [model,messages],type: object},AI_ChatResponse: {properties: {choices: {items: {properties: {finish_reason: {type: [string,"null"]},index: {type: integer},message: {properties: {content: {type: [string,"null"]},role: {type: string},tool_calls: {items: {properties: {function: {properties: {arguments: {type: string},name: {type: string}},type: object},id: {type: string},type: {type: string}},type: object},type: array}},type: object}},type: object},type: array},created: {type: integer},id: {type: string},model: {type: string},object: {type: string},usage: {$ref: "#/components/schemas/AI_TokenUsage"}},type: object},AI_DocumentParseRequest: {properties: {input_document_asset_id: {description: Previously uploaded document in this identity/model scope.,type: string},language: {enum: [ch,en],type: string},model: {type: string},original_name: {type: string},page_range: {properties: {end_page: {maximum: 500,minimum: 1,type: integer},start_page: {maximum: 500,minimum: 1,type: integer}},required: [start_page,end_page],type: object},pages: {maximum: 500,minimum: 1,type: integer},preset: {enum: [hybrid-medium,hybrid-high],type: string}},required: [model,input_document_asset_id],type: object},AI_EffectiveMediaSpec: {additionalProperties: true,description: "Normalized model-specific specification. Requested seconds, actual native frames and resulting media duration are distinct.",properties: {fps: {type: number},generationMode: {description: Normalized generation mode.,type: string},height: {type: integer},orientation: {description: Orientation.,type: string},resolutionTier: {description: Normalized tier.,type: string},seconds: {type: integer},width: {type: integer}},type: object},AI_EmbeddingRequest: {properties: {input: {description: "Nonempty after trimming; max 64 nonempty items, 8192 Unicode characters each.",oneOf: [{maxLength: 8192,type: string},{items: {maxLength: 8192,type: string},maxItems: 64,minItems: 1,type: array}]},model: {description: Public embedding alias.,type: string}},required: [model,input],type: object},AI_EmbeddingResponse: {properties: {data: {items: {properties: {embedding: {items: {type: number},type: array},index: {type: integer},object: {type: string}},type: object},type: array},model: {type: string},object: {type: string},usage: {$ref: "#/components/schemas/AI_TokenUsage"}},type: object},AI_H3GenerationReference: {additionalProperties: false,properties: {assetId: {description: Uploaded input asset ID; do not use a URL or filesystem path.,type: string},mediaType: {description: "When omitted, inferred from role; if supplied must match it.",enum: [image,video,audio],type: string},role: {enum: [reference_image,reference_video,reference_audio],type: string},sha256: {description: Optional integrity hint; the platform verifies and freezes its own asset checksum.,type: string}},required: [role,assetId],type: object},AI_ImageGenerationRequest: {properties: {generationMode: {description: "Model-specific mode, e.g. t2i/i2i.",type: string},imageCount: {minimum: 1,type: integer},input_image_asset_id: {description: Single controlled image for models supporting image input.,type: string},input_image_asset_ids: {items: {type: string},type: array},model: {description: Public image model alias.,type: string},orientation: {type: string},outputSizeCode: {type: string},prompt: {description: Image instructions. Character limit is supplied by the selected service.,type: string},qualityTier: {type: string},resolutionTier: {type: string},seed: {type: integer}},required: [model,prompt],type: object},AI_InputAssetUploadResponse: {additionalProperties: false,properties: {asset: {properties: {assetId: {type: string},byteSize: {format: int64,type: integer},createdAt: {format: date-time,type: string},expiresAt: {format: date-time,type: string},kind: {enum: [image,audio,video,document],type: string},lastUploadedAt: {format: date-time,type: string},mimeType: {type: string},publicationId: {type: string},reused: {type: boolean},status: {const: available,type: string},storageBackend: {type: string}},required: [assetId,publicationId,kind,mimeType,byteSize,status,createdAt,lastUploadedAt,expiresAt,reused],type: object},usage: {additionalProperties: true,type: object}},required: [asset],type: object},AI_MediaGenerationRequest: {additionalProperties: true,description: "Public video creation uses top-level fields, not the deployed application's params/mediaSpec envelope. H3 requires generationMode/resolutionTier/orientation/seconds, only 768p, 5..15 seconds, max 7000 characters. t2v has no inputs; i2v requires first image; first_last_frame_video requires first+last; universal requires typed references. Per-model required/conditional fields remain in mediaSpecContract. Do not send H3 fps, frames, width/height, steps or runtime settings.",examples: [{generationMode: t2v,model: minimax-h3,orientation: landscape,prompt: 雨夜站台，镜头缓慢推进，人物自然递伞后共同离开。,resolutionTier: 768p,seconds: 5,seed: 1234},{generationMode: i2v,input_image_asset_id: input_first,model: minimax-h3,orientation: landscape,prompt: 雨夜站台，镜头缓慢推进，人物自然递伞后共同离开。,resolutionTier: 768p,seconds: 5,seed: 1234},{end_image_asset_id: input_last,generationMode: first_last_frame_video,input_image_asset_id: input_first,model: minimax-h3,orientation: landscape,prompt: 雨夜站台，镜头缓慢推进，人物自然递伞后共同离开。,resolutionTier: 768p,seconds: 5,seed: 1234},{generationMode: universal_reference_video,model: minimax-h3,orientation: landscape,prompt: 雨夜站台，镜头缓慢推进，人物自然递伞后共同离开。,referenceInputs: [{assetId: input_storyboard,mediaType: image,role: reference_image}],resolutionTier: 768p,seconds: 5,seed: 1234}],properties: {end_image_asset_id: {description: Previously uploaded last-frame image. H3 first_last_frame_video only.,type: string},generationMode: {description: "Required for H3: t2v, i2v, first_last_frame_video, universal_reference_video. Other models publish their allowed modes.",type: string},input_audio_asset_id: {description: Input audio for models whose service contract declares it; not an H3 universal reference field.,type: string},input_image_asset_id: {description: Previously uploaded first-frame image. H3 i2v and first_last_frame_video only.,type: string},input_video_asset_id: {description: Input video for models whose service contract declares it; not an H3 universal reference field.,type: string},model: {description: Public model alias from GET /v1/services; never a workload or deployment name.,type: string},orientation: {enum: [landscape,portrait],type: string},prompt: {description: Generation instructions. H3 accepts 1..7000 Unicode code points after trimming.,type: string},referenceInputs: {description: "H3 universal references: up to 9 images without video, 8 with one video; up to 3 audios, total <=12, at least one visual. Order within each kind fixes numbering. IDs must be unique and owned by this caller/model.",items: {$ref: "#/components/schemas/AI_H3GenerationReference"},maxItems: 12,type: array},resolutionTier: {description: "H3: 768p. Other services publish their own tiers.",type: string},seconds: {description: "Requested generation seconds. H3: integer 5..15; actual media duration and frame count are separate facts.",type: integer},seed: {description: Optional reproducibility input; do not change it during an idempotent retry.,maximum: 2147483647,minimum: 0,type: integer}},required: [model,prompt],type: object},AI_MediaJob: {additionalProperties: true,examples: [{id: job_example,jobId: job_example,jobUrl: https://api.example.test/v1/jobs/job_example?model=minimax-h3,model: minimax-h3,requestId: req_example,serviceKind: video_generation,stage: queued,status: queued}],properties: {assets: {deprecated: true,description: Compatibility result collection. New clients should read outputs.,items: {$ref: "#/components/schemas/AI_MediaResultAsset"},type: array},clientRequestId: {description: Optional client correlation ID; not the idempotency key.,type: string},completedAt: {format: date-time,type: string},createdAt: {format: date-time,type: string},effectiveMediaSpec: {$ref: "#/components/schemas/AI_EffectiveMediaSpec"},elapsedSeconds: {minimum: 0,type: number},errorCode: {description: Present on execution failure.,type: string},errorMessage: {description: Safe failure detail.,type: string},id: {description: Compatibility alias of jobId.,type: string},jobId: {description: "Persist after acceptance; use GET /v1/jobs/{id}?model=... to observe this same job.",type: string},jobUrl: {description: Absolute authenticated polling URL. Use it as returned with the same API key; do not reconstruct it from publicationId.,format: uri,type: string},model: {description: Public model alias.,type: string},object: {description: Usually media.generation.job; image-continuation tasks use image_continuation.task.,type: string},outputs: {description: Authoritative result collection after success. Prefer this over compatibility result fields.,items: {$ref: "#/components/schemas/AI_MediaResultAsset"},type: array},queuedSeconds: {minimum: 0,type: number},refreshAfterSeconds: {minimum: 0,type: integer},requestId: {description: Server-generated diagnostic request ID.,type: string},retryAfterSeconds: {minimum: 0,type: integer},retryable: {description: Present on failed jobs. False means clients must not automatically recreate the generation.,type: boolean},runningSeconds: {minimum: 0,type: number},serviceKind: {description: Selected public service kind.,type: string},stage: {description: Public lifecycle stage; do not infer success from HTTP 200.,type: string},stageMessage: {description: Human-readable current stage.,type: string},startedAt: {format: date-time,type: string},status: {description: H3 does not expose user cancellation. Legacy generic statuses do not grant cancellation capability.,enum: [queued,running,succeeded,failed,cancel_requested,canceled],type: string},statusCode: {type: integer}},required: [jobId,jobUrl,status,requestId],type: object},AI_MediaResultAsset: {additionalProperties: true,properties: {assetId: {description: "Result identifier for GET/HEAD /v1/assets/{id}/content?model=...; not a job ID.",type: string},byteSize: {minimum: 0,type: integer},contentUrl: {description: Absolute authenticated content URL. Use the same API key; the URL is not public or permanent.,format: uri,type: string},kind: {description: Result media kind.,type: string},mimeType: {description: Detected MIME type.,type: string},sha256: {description: Content integrity checksum when provided.,type: string}},required: [assetId,contentUrl],type: object},AI_OCRRequest: {properties: {document_asset_id: {description: Document identity for a service which explicitly supports it; not the document-parse field.,type: string},image_asset_id: {description: Compatibility input identity recognized for metering.,type: string},input_image_asset_id: {description: "Recommended image input from /assets/input for image OCR; required by that model profile, not every possible OCR backend.",type: string},model: {description: Public OCR alias. Actual accepted image format and task fields are model-specific.,type: string},pages: {description: Metering page count defaults to 1 when omitted/nonpositive; this is not a request to execute arbitrary pages.,type: integer},task: {description: "Model-supported task, e.g. ocr.",type: string}},required: [model],type: object},AI_OCRResponse: {additionalProperties: true,description: "The gateway forwards the selected OCR model's JSON, not a universal data envelope. Typical text/blocks are described here but are not guaranteed across all models; consult the selected service output schema.",properties: {blocks: {items: {properties: {bbox: {items: {type: number},type: array},confidence: {type: number},text: {type: string}},type: object},type: array},pages: {items: {properties: {blocks: {items: {properties: {bbox: {items: {type: number},type: array},text: {type: string}},type: object},type: array},page: {type: integer},text: {type: string}},type: object},type: array},text: {type: string}},type: object},AI_OpenAPIDocument: {properties: {components: {type: object},info: {properties: {description: {type: string},title: {type: string},version: {type: string}},type: object},openapi: {type: string},paths: {additionalProperties: {type: object},type: object},servers: {items: {properties: {url: {type: string}},type: object},type: array}},required: [openapi,info,paths],type: object},AI_PromptOptimizationMediaSpec: {additionalProperties: false,description: Only these six selectable dimensions are decoded; required values depend on the selected generation mode.,properties: {imageCount: {type: integer},orientation: {type: string},outputSizeCode: {type: string},qualityTier: {type: string},resolutionTier: {type: string},seconds: {type: integer}},type: object},AI_PromptOptimizationRequest: {additionalProperties: false,properties: {audioReferencePolicy: {description: "Required when H3 audio references are present. Only image/video are understood; audio is retained by explicit text intent, never analyzed.",enum: [preserve_without_understanding],type: string},clientRequestId: {maxLength: 128,minLength: 8,pattern: "^[A-Za-z0-9._:-]+$",type: string},generationMode: {description: Allowed modes are published by the selected service promptOptimization.profiles.,type: string},mediaSpec: {$ref: "#/components/schemas/AI_PromptOptimizationMediaSpec"},model: {description: Public model alias from GET /v1/services.,type: string},originalPrompt: {description: H3 typed-media/v1 supports 7000 Unicode code points; other profiles retain their advertised lower limit.,maxLength: 7000,minLength: 1,type: string},referenceInputs: {description: "Use uploaded owner asset IDs. H3 typed roles: first_frame/last_frame, or reference_image (0..9), reference_video (0..1), reference_audio (0..3), at least one visual, at most 12 total. Same-kind array order determines numbering; other profiles retain their advertised roles.",items: {additionalProperties: false,properties: {assetId: {type: string},role: {type: string}},required: [role,assetId],type: object},maxItems: 12,type: array},style: {description: Optional H3 typed-media/v1 creative style preference.,maxLength: 200,minLength: 1,type: string}},required: [clientRequestId,model,generationMode,originalPrompt,mediaSpec,referenceInputs],type: object},AI_PromptOptimizationResponse: {additionalProperties: false,properties: {optimization: {additionalProperties: false,properties: {createdAt: {format: date-time,type: string},expiresAt: {format: date-time,type: string},generationMode: {type: string},noticeCodes: {items: {type: string},type: array},optimizationId: {type: string},optimizedPrompt: {maxLength: 7000,type: string},originalPrompt: {type: string},outcome: {type: string},serviceKind: {type: string},status: {const: succeeded,type: string}},required: [optimizationId,serviceKind,generationMode,originalPrompt,optimizedPrompt,status,createdAt,expiresAt],type: object},requestId: {type: string}},required: [requestId,optimization],type: object},AI_PublicError: {additionalProperties: false,properties: {code: {type: string},details: {additionalProperties: true,type: object},message: {type: string},requestId: {description: Server-generated request identifier.,type: string},retryable: {type: boolean}},required: [code,message,requestId,retryable],type: object},AI_PublicModel: {properties: {id: {type: string},mediaSpecContract: {properties: {parameters: {items: {properties: {description: {type: string},name: {type: string},required: {type: boolean},type: {type: string}},type: object},type: array},version: {type: string}},type: object},object: {const: model,type: string},owned_by: {type: string}},required: [id,object,owned_by],type: object},AI_PublicModelList: {properties: {data: {items: {$ref: "#/components/schemas/AI_PublicModel"},type: array},object: {const: list,type: string}},required: [object,data],type: object},AI_PublicService: {properties: {apiUsageContract: {additionalProperties: true,description: "Live public operations, fields and examples for the selected model.",type: object},available: {type: boolean},endpoints: {additionalProperties: {type: string},type: object},id: {type: string},mediaSpecContract: {additionalProperties: true,description: "Live model-specific required fields, allowed values, mode/input composition and media size limits.",type: object},modelAlias: {type: string},object: {type: string},promptOptimization: {additionalProperties: true,description: "Availability, profiles, typed reference roles/limits and timeout for independent optimization.",type: object},serviceDisplayName: {type: string},serviceKind: {type: string}},required: [modelAlias,serviceKind],type: object},AI_PublicServiceList: {properties: {data: {items: {$ref: "#/components/schemas/AI_PublicService"},type: array},object: {const: list,type: string}},required: [object,data],type: object},AI_RerankRequest: {properties: {documents: {items: {maxLength: 8192,type: string},maxItems: 256,minItems: 1,type: array},model: {description: Public rerank alias.,type: string},query: {maxLength: 1024,minLength: 1,type: string},top_n: {description: Only send if the selected model supports it; query and documents together <=65536 Unicode characters.,minimum: 1,type: integer}},required: [model,query,documents],type: object},AI_RerankResponse: {properties: {id: {type: string},model: {type: string},results: {items: {properties: {document: {oneOf: [{type: string},{properties: {text: {type: string}},type: object}]},index: {type: integer},relevance_score: {type: number}},type: object},type: array},usage: {$ref: "#/components/schemas/AI_TokenUsage"}},type: object},AI_SynchronousMediaResponse: {additionalProperties: true,description: "Raw JSON from a synchronous media service, not a job envelope. The selected service defines its exact output schema; the optional fields below describe common image-compatible results and are not required for every backend.",properties: {created: {type: integer},data: {items: {properties: {b64_json: {type: string},revised_prompt: {type: string},url: {type: string}},type: object},type: array},usage: {properties: {total_tokens: {type: integer}},type: object}},type: object},AI_TokenUsage: {properties: {completion_tokens: {type: integer},prompt_tokens: {type: integer},total_tokens: {type: integer}},type: object},App_ChatRequest: {allOf: [{$ref: "#/components/schemas/AI_ChatRequest"},{type: object,properties: {inputs: {type: array,items: {$ref: "#/components/schemas/App_ReadURLInput"}},resourceAttribution: {$ref: "#/components/schemas/App_ResourceAttribution"}}}]},App_ChatResponse: {$ref: "#/components/schemas/AI_ChatResponse"},App_EmbeddingRequest: {$ref: "#/components/schemas/AI_EmbeddingRequest"},App_EmbeddingResponse: {$ref: "#/components/schemas/AI_EmbeddingResponse"},App_RerankRequest: {$ref: "#/components/schemas/AI_RerankRequest"},App_RerankResponse: {$ref: "#/components/schemas/AI_RerankResponse"},App_OCRResponse: {$ref: "#/components/schemas/AI_OCRResponse"},App_AudioTranscriptionResponse: {$ref: "#/components/schemas/AI_AudioTranscriptionResponse"},App_PromptOptimizationResponse: {type: object,required: [requestId,optimization],properties: {requestId: {type: string},optimization: {type: object,required: [optimizationId,publicationId,serviceKind,generationMode,originalPrompt,optimizedPrompt,status,createdAt,expiresAt],properties: {optimizationId: {type: string},publicationId: {type: string,description: 当前实现返回的关联编号，不能取代输入中的公开model},serviceKind: {type: string},generationMode: {type: string},originalPrompt: {type: string},optimizedPrompt: {type: string,maxLength: 7000},status: {type: string,const: succeeded},outcome: {type: string},noticeCodes: {type: array,items: {type: string}},createdAt: {type: string,format: date-time},expiresAt: {type: string,format: date-time}}}}},App_Error: {type: object,properties: {code: {type: string},message: {type: string},phase: {type: string},retryable: {type: boolean},requestId: {type: string},traceId: {type: string},details: {type: object,additionalProperties: true}},required: [code,message]},App_ServiceList: {type: object,required: [object,items,page,pageSize,total],properties: {object: {type: string,const: list},items: {type: array,items: {$ref: "#/components/schemas/App_RuntimeService"}},page: {type: integer},pageSize: {type: integer},total: {type: integer},filters: {type: object,additionalProperties: {type: string}}}},App_RuntimeService: {type: object,required: [model,displayName,serviceKind,status],properties: {model: {type: string},displayName: {type: string},serviceKind: {type: string},status: {type: string},description: {type: string},capabilityDescription: {type: string},unavailableReason: {type: string},inputModalities: {type: array,items: {type: string}},outputModalities: {type: array,items: {type: string}},executionMode: {type: string},mediaSpecContract: {type: object,description: 所选模型的动态参数/枚举/规格，不能硬编码其它模型字段,additionalProperties: true},capability: {type: object,description: 输入输出模态及资产限制,additionalProperties: true},promptOptimization: {type: object,description: available/profiles/字符与素材限制/独立计费等能力,additionalProperties: true}}},App_ReadURLInput: {type: object,required: [readUrl],properties: {role: {type: string,description: 按模式选择first_frame/last_frame或reference_image/reference_video/reference_audio；识别接口用input_image/input_audio},readUrl: {type: string,format: uri,description: 应用存储签发、满足平台读取策略、未过期的URL；不是个人assetId},mimeType: {type: string},byteSize: {type: integer,minimum: 0},sha256: {type: string,description: 内容SHA256，与实际读取字节一致},expiresAt: {type: string,format: date-time},assetId: {type: string,description: 仅特殊受控音频模型明确声明时可用；H3拒绝未暂存的平台assetId}}},App_MediaSpec: {type: object,description: H3必填generationMode/resolutionTier/orientation/seconds，768p、5～15整数秒，最高362帧；其它模型读取实时合同。,properties: {generationMode: {type: string},resolutionTier: {type: string},qualityTier: {type: string},orientation: {type: string},seconds: {type: integer},imageCount: {type: integer},outputSizeCode: {type: string}},additionalProperties: true},App_ResourceAttribution: {type: object,properties: {resourceType: {type: string,description: 应用声明中允许的资源类别},resourceId: {type: string,description: 该应用业务资源ID}}},App_RuntimeJobCreateRequest: {type: object,required: [clientTaskId],properties: {clientTaskId: {type: string,minLength: 1},model: {type: string,description: 建议显式指定公开模型别名，不依赖首个可用服务},serviceKind: {type: string,enum: [image_generation,video_generation,audio_generation,document_parse]},idempotencyKey: {type: string,description: 可选正文键，优先于header；不要填写不同值},params: {type: object,description: 模型业务字段，prompt放在此处而非顶层,properties: {prompt: {type: string},seed: {type: integer}},additionalProperties: true},mediaSpec: {$ref: "#/components/schemas/App_MediaSpec"},inputs: {type: array,items: {$ref: "#/components/schemas/App_ReadURLInput"}},resourceAttribution: {$ref: "#/components/schemas/App_ResourceAttribution"},appContext: {description: 可选应用任务上下文，不得写入凭据},publicationId: {type: string,deprecated: true,description: 兼容字段，新应用用model；二者冲突会被拒绝},finalPrompt: {type: string,deprecated: true,description: 兼容入口，非空时覆盖params.prompt；新应用直接提交确认后的params.prompt},promptOptimizationId: {type: string,deprecated: true,description: 不作为生成授权或隐式优化依据}},examples: [{clientTaskId: project-42-shot-7,model: minimax-h3,serviceKind: video_generation,params: {prompt: 清晨湖面薄雾缓慢流动，固定镜头。},mediaSpec: {generationMode: t2v,resolutionTier: 768p,orientation: landscape,seconds: 5}}]},App_RuntimeResult: {type: object,required: [resultId,resultDownloadUrl],properties: {resultId: {type: string},resultDownloadUrl: {type: string,description: 受控下载相对路径，不代表匿名永久链接},assetId: {type: string},kind: {type: string},mimeType: {type: string},byteSize: {type: integer},sha256: {type: string},expiresAt: {type: string,format: date-time}}},App_RuntimeJob: {type: object,required: [platformJobId,clientTaskId,status],properties: {platformJobId: {type: string},clientTaskId: {type: string},status: {type: string,description: queued/running/succeeded/failed；历史通用取消状态不代表H3可取消},stage: {type: string},jobRecoveryRef: {type: string,description: 创建成功必有，后续查询不必再次返回；仅后端秘密保存},results: {type: array,description: 无结果时可省略,items: {$ref: "#/components/schemas/App_RuntimeResult"}},resultReady: {type: boolean},effectiveMediaSpec: {$ref: "#/components/schemas/App_MediaSpec"},errorCode: {type: string},errorMessage: {type: string},statusCode: {type: integer},eventCursor: {type: string,description: 创建快照标识；事件流重连使用SSE的数值事件ID}}},App_JobBatch: {type: object,required: [items,generatedAt],properties: {items: {type: array,items: {$ref: "#/components/schemas/App_RuntimeJob"}},missing: {type: array,items: {type: string}},generatedAt: {type: string,format: date-time}}},App_DryRun: {type: object,required: [accepted,clientTaskId],properties: {accepted: {type: boolean},clientTaskId: {type: string},model: {type: string},serviceKind: {type: string},normalizedSpec: {$ref: "#/components/schemas/App_MediaSpec"},estimatedCost: {type: object,properties: {resourceType: {type: string},usage: {type: integer},unit: {type: string},estimatedAmount: {type: integer},currency: {type: string},billingModelId: {type: string},priceRuleSnapshot: {type: object}}},blockers: {type: array,items: {type: object,required: [code,phase,message,retryable],properties: {code: {type: string},phase: {type: string},message: {type: string},retryable: {type: boolean},httpStatus: {type: integer},details: {type: object}}}},readUrlChecks: {type: array,items: {type: object,properties: {role: {type: string},stage: {type: string},status: {type: string},code: {type: string},message: {type: string},retryable: {type: boolean},mimeType: {type: string},byteSize: {type: integer},sha256: {type: string}}}},admission: {type: object,description: 当前准入判断，不是资源预留}}},App_AppPromptOptimizationRequest: {type: object,additionalProperties: false,required: [clientRequestId,model,generationMode,originalPrompt,mediaSpec,referenceInputs],properties: {clientRequestId: {type: string,minLength: 8,maxLength: 128,pattern: "^[A-Za-z0-9._:-]+$"},model: {type: string},generationMode: {type: string},originalPrompt: {type: string,minLength: 1,maxLength: 7000},mediaSpec: {$ref: "#/components/schemas/AI_PromptOptimizationMediaSpec"},referenceInputs: {type: array,maxItems: 12,items: {$ref: "#/components/schemas/App_OptimizationReference"}},style: {type: string,minLength: 1,maxLength: 200},audioReferencePolicy: {type: string,enum: [preserve_without_understanding],description: 有音频时必填}}},App_OptimizationReference: {type: object,required: [role,readUrl,byteSize,sha256],additionalProperties: false,properties: {role: {type: string},purpose: {type: string},readUrl: {type: string,format: uri},mimeType: {type: string},byteSize: {type: integer,minimum: 1},sha256: {type: string,pattern: "^[a-f0-9]{64}$"},expiresAt: {type: string,format: date-time}}},App_ReadURLRecognitionRequest: {type: object,required: [model,inputs],properties: {model: {type: string},clientTaskId: {type: string},inputs: {type: array,minItems: 1,maxItems: 1,items: {$ref: "#/components/schemas/App_ReadURLInput"}},language: {type: string},task: {type: string},resourceAttribution: {$ref: "#/components/schemas/App_ResourceAttribution"}}},App_ExportCreate: {type: object,required: [source],properties: {source: {type: object,required: [readUrl,mimeType],anyOf: [{required: [sha256]},{required: [appAssetRef]}],properties: {readUrl: {type: string,format: uri},mimeType: {type: string,enum: [image/png,image/jpeg,image/webp,video/mp4]},byteSize: {type: integer,minimum: 0,description: 不超过平台导出上限；缺省上限512MiB},sha256: {type: string,description: 与appAssetRef至少一个，内容摘要格式正确},appAssetRef: {type: string},filename: {type: string},expiresAt: {type: string,format: date-time}}},intent: {type: string,enum: [download],default: download},deliveryMode: {type: string,enum: [marked],default: marked},idempotencyKey: {type: string}}},App_Export: {type: object,required: [exportId,status,statusUrl,deliveryMode,intent],properties: {exportId: {type: string},status: {type: string},statusUrl: {type: string},contentUrl: {type: string},mimeType: {type: string},byteSize: {type: integer},deliveryMode: {type: string},intent: {type: string},sourceUrlId: {type: string},errorCode: {type: string},retryAfterSeconds: {type: integer},expiresAt: {type: string,format: date-time}}},App_ResourceUsageRequest: {type: object,required: [resourceType,resourceIds],properties: {resourceType: {type: string,minLength: 1},resourceIds: {type: array,minItems: 1,maxItems: 200,items: {type: string,minLength: 1}},groupBy: {type: array,items: {type: string,enum: [accountId,serviceKind,day]}}}},App_ResourceUsageReport: {type: object,required: [items,amountScale,asOf,freshness],properties: {amountScale: {type: string,description: 金额精度，必须按返回精度换算},asOf: {type: string,format: date-time},freshness: {type: string},items: {type: array,items: {type: object,properties: {resourceId: {type: string},accountId: {type: string},serviceKind: {type: string},day: {type: string},ledgerSettledCredits: {type: integer},reservedCredits: {type: integer},releasedCredits: {type: integer},failedCredits: {type: integer},pendingCredits: {type: integer},requestCount: {type: integer}}}}}},Store_Error: {type: object,required: [code],properties: {code: {type: string},message: {type: string},details: {type: object,additionalProperties: true},requestId: {type: string}}},Store_Subject: {type: object,required: [tenantId,accountId,workspaceId,userId],properties: {tenantId: {type: string},accountId: {type: string},workspaceId: {type: string},userId: {type: string},organizationId: {type: string},membershipId: {type: string}}},Store_ExchangeRequest: {type: object,additionalProperties: false,required: [launchCode],properties: {launchCode: {type: string,minLength: 1}}},Store_RuntimeSession: {type: object,required: [sessionId,appKey,appVersionId,subject,appRoles,expiresAt],properties: {sessionId: {type: string},appKey: {type: string},appVersionId: {type: string},subject: {$ref: "#/components/schemas/Store_Subject"},appRoles: {type: array,items: {type: string}},expiresAt: {type: string,format: date-time}}},Store_OrganizationGroup: {type: object,required: [groupId,name,groupPath,depth,directMemberCount,branchMemberCount],properties: {groupId: {type: string},parentGroupId: {type: string},name: {type: string},groupPath: {type: array,items: {type: string}},depth: {type: integer},directMemberCount: {type: integer},branchMemberCount: {type: integer}}},Store_OrganizationGroups: {type: object,required: [appKey,organizationId,items],properties: {appKey: {type: string},organizationId: {type: string},items: {type: array,items: {$ref: "#/components/schemas/Store_OrganizationGroup"}}}},Store_OrganizationMemberRequest: {type: object,additionalProperties: false,properties: {groupId: {type: string},includeDescendants: {type: boolean},search: {type: string},page: {type: integer,minimum: 0},pageSize: {type: integer,minimum: 0,maximum: 100}}},Store_OrganizationMember: {type: object,required: [membershipId,accountId,displayName,groupId,groupPath,organizationRoles,appRoles,membershipVersion,appRoleVersion],properties: {membershipId: {type: string},accountId: {type: string},displayName: {type: string},groupId: {type: string},groupPath: {type: array,items: {type: string}},organizationRoles: {type: array,items: {type: string}},appRoles: {type: array,items: {type: string}},membershipVersion: {type: integer,format: int64},appRoleVersion: {type: integer,format: int64}}},Store_OrganizationMembers: {type: object,required: [appKey,organizationId,items,page,pageSize,total],properties: {appKey: {type: string},organizationId: {type: string},items: {type: array,items: {$ref: "#/components/schemas/Store_OrganizationMember"}},page: {type: integer},pageSize: {type: integer},total: {type: integer}}},Store_DebugReceiverInput: {type: object,additionalProperties: false,required: [callerAppKey,apiVersion,scopes],properties: {callerAppKey: {type: string},apiVersion: {type: string,pattern: "^v[1-9][0-9]*$"},scopes: {type: array,minItems: 1,maxItems: 32,items: {type: string}}}},Store_DebugReceiver: {type: object,required: [receiverRef,callerAppKey,apiVersion,scopes,expiresAt],properties: {receiverRef: {type: string,description: Public pairing reference; not a credential},callerAppKey: {type: string},apiVersion: {type: string},scopes: {type: array,items: {type: string}},expiresAt: {type: string,format: date-time}}},Store_DebugPeerIssueInput: {type: object,additionalProperties: false,required: [receiverRef,calleeAppKey,apiVersion,scope,requestDigest,idempotencyKey],properties: {receiverRef: {type: string},calleeAppKey: {type: string},apiVersion: {type: string,pattern: "^v[1-9][0-9]*$"},scope: {type: string},idempotencyKey: {type: string,minLength: 1,maxLength: 255},requestDigest: {type: string,pattern: "^sha256:[0-9a-f]{64}$"}}},Store_DeveloperGrantIssueRequest: {type: object,additionalProperties: false,required: [calleeAppKey,apiVersion,scope,idempotencyKey,requestDigest],properties: {calleeAppKey: {type: string},apiVersion: {type: string,pattern: "^v[1-9][0-9]*$"},scope: {type: string},idempotencyKey: {type: string},requestDigest: {type: string,pattern: "^sha256:[0-9a-f]{64}$"}}},Store_AppGrantIssueRequest: {type: object,additionalProperties: false,required: [runtimeSessionId,calleeAppKey,scope,idempotencyKey,requestDigest],properties: {runtimeSessionId: {type: string},calleeAppKey: {type: string},apiVersion: {type: string,pattern: "^v[1-9][0-9]*$"},scope: {type: string,pattern: "^[a-z][a-z0-9._:-]{1,127}$"},idempotencyKey: {type: string},requestDigest: {type: string,pattern: "^sha256:[0-9a-f]{64}$"}}},Store_AppGrantResolveRequest: {type: object,additionalProperties: false,required: [grant,scope,requestDigest],properties: {grant: {type: string},scope: {type: string},requestDigest: {type: string,pattern: "^sha256:[0-9a-f]{64}$"}}},Store_AppGrantIssued: {type: object,required: [grant,expiresAt],properties: {grant: {type: string},apiVersion: {type: string},sourceChannel: {type: string},expiresAt: {type: string,format: date-time}}},Store_AppGrantResolved: {type: object,required: [grantId,callerAppKey,callerAppVersionId,calleeAppKey,calleeAppVersionId,subject,callerAppRoles,scope,idempotencyKey,requestDigest,expiresAt],properties: {grantId: {type: string},callerAppKey: {type: string},callerAppVersionId: {type: string},calleeAppKey: {type: string},calleeAppVersionId: {type: string},apiVersion: {type: string},sourceChannel: {type: string},subject: {$ref: "#/components/schemas/Store_Subject"},callerAppRoles: {type: array,items: {type: string}},scope: {type: string},idempotencyKey: {type: string},requestDigest: {type: string},expiresAt: {type: string,format: date-time}}},Store_AppLaunch: {type: object,required: [launchCode,expiresAt],properties: {launchCode: {type: string},expiresAt: {type: string,format: date-time}}},Store_Publisher: {type: object,required: [id,name,status],additionalProperties: false,properties: {id: {type: string},name: {type: string},status: {type: string}}},Store_AppProduct: {type: object,required: [id,publisherId,appKey,name,status,createdAt],additionalProperties: false,properties: {id: {type: string},publisherId: {type: string},appKey: {type: string},name: {type: string},status: {type: string},createdAt: {type: string,format: date-time}}},Store_RoleDefinition: {type: object,required: [roleCode,displayName,description,definitionVersion,status],properties: {roleCode: {type: string},displayName: {type: string},description: {type: string},definitionVersion: {type: integer},status: {type: string}}},Store_AppSubmission: {type: object,required: [project,imageAssets,artifacts,toolVersion,sdkContractVersion],additionalProperties: false,properties: {project: {$ref: "#/components/schemas/Store_AppProject"},imageAssets: {type: array,items: {$ref: "#/components/schemas/Store_ImageAssetBinding"}},artifacts: {$ref: "#/components/schemas/Store_Artifacts"},toolVersion: {type: string},sdkContractVersion: {type: string},source: {$ref: "#/components/schemas/Store_VersionSource"},idempotencyKey: {type: string}}},Store_ValidationResult: {type: object,required: [valid],additionalProperties: false,properties: {valid: {type: boolean},blockers: {type: array,items: {type: string}},warnings: {type: array,items: {type: string}},normalizedDigest: {type: string}}},Store_AppVersion: {type: object,required: [id,digest,status,channel,reviewStatus,version,bundle,source,parsed,image,createdAt],additionalProperties: false,properties: {id: {type: string},digest: {type: string},status: {type: string},channel: {type: string},reviewStatus: {type: string},version: {type: integer,format: int64},bundle: {$ref: "#/components/schemas/Store_AppBundle"},source: {$ref: "#/components/schemas/Store_VersionSource"},parsed: {$ref: "#/components/schemas/Store_ParsedVersion"},image: {$ref: "#/components/schemas/Store_VersionImage"},createdAt: {type: string,format: date-time}}},Store_CreateAppRequest: {type: object,required: [publisherId,app],properties: {publisherId: {type: string},app: {$ref: "#/components/schemas/Store_AppProduct"}}},Store_CreateVersionRequest: {type: object,required: [submission,idempotencyKey],properties: {submission: {$ref: "#/components/schemas/Store_AppSubmission"},idempotencyKey: {type: string,minLength: 1}}},Store_VersionUploadForm: {type: object,required: [submission,idempotencyKey,file],properties: {submission: {type: string},idempotencyKey: {type: string},file: {type: string,format: binary}}},Store_VersionEdit: {type: object,additionalProperties: false,properties: {displayVersion: {type: string},channel: {type: string},status: {type: string},source: {$ref: "#/components/schemas/Store_VersionSource"}}},Store_SourceReceipt: {type: object,required: [sourceId],additionalProperties: false,properties: {sourceId: {type: string},fileName: {type: string},mediaType: {type: string},sizeBytes: {type: integer,format: int64},sha256: {type: string},downloadUrl: {type: string,format: uri},uploadedAt: {type: string,format: date-time}}},Store_VersionRequestInput: {type: object,required: [kind],properties: {kind: {type: string},reason: {type: string}}},Store_VersionRequest: {type: object,required: [id],properties: {id: {type: string},appId: {type: string},versionId: {type: string},kind: {type: string},status: {type: string},reason: {type: string}}},Store_ImageImportRequest: {type: object,required: [fileName,sizeBytes,sha256,archiveType,component,displayVersion,idempotencyKey],properties: {fileName: {type: string},sizeBytes: {type: integer,format: int64,minimum: 1},sha256: {type: string},archiveType: {type: string,enum: [oci-archive,docker-archive,oci,docker,tar]},component: {type: string},displayVersion: {type: string},idempotencyKey: {type: string}}},Store_ImageImportPart: {type: object,required: [partNumber,etag],properties: {partNumber: {type: integer},etag: {type: string},sizeBytes: {type: integer,format: int64}}},Store_ImageImportSession: {type: object,required: [imageImportId,status,partSizeBytes,partCount,expiresAt],properties: {imageImportId: {type: string},status: {type: string,enum: [pending,uploading,importing,completed,failed]},partSizeBytes: {type: integer,format: int64},partCount: {type: integer},uploadParts: {type: array,items: {type: object,required: [partNumber,method,url,expiresAt],properties: {partNumber: {type: integer},method: {type: string},url: {type: string,format: uri},expiresAt: {type: string}}}},uploadedParts: {type: array,items: {$ref: "#/components/schemas/Store_ImageImportPart"}},expiresAt: {type: string},errorCode: {type: string},errorMessage: {type: string}}},Store_ImageImportComplete: {type: object,required: [parts],properties: {parts: {type: array,items: {$ref: "#/components/schemas/Store_ImageImportPart"}}}},Store_ImageImportResult: {type: object,required: [imageImportId,status],properties: {imageImportId: {type: string},status: {type: string},imageAssetId: {type: string},repository: {type: string},digest: {type: string},architecture: {type: string},sizeBytes: {type: integer,format: int64},importedAt: {type: string}}},Store_AppTestAccount: {type: object,required: [id,appId,accountId,organizationId,displayName,organizationName,createdAt],properties: {id: {type: string,description: Opaque approval record ID,not an arbitrary user ID.: null},appId: {type: string},accountId: {type: string},organizationId: {type: string},displayName: {type: string},organizationName: {type: string},createdAt: {type: string,format: date-time}}},Store_CliAuthorizationRequest: {type: object,required: [codeChallenge,redirectUri],properties: {codeChallenge: {type: string},redirectUri: {type: string,format: uri},versionId: {type: string},testAccountId: {type: string,description: Optional approval ID from test-accounts; requires versionId. Omit for self.}}},Store_CliAuthorizationResponse: {type: object,required: [authorizationCode,expiresAt],properties: {authorizationCode: {type: string},expiresAt: {type: string,format: date-time}}},Store_CliExchangeRequest: {type: object,required: [authorizationCode,codeVerifier],properties: {authorizationCode: {type: string},codeVerifier: {type: string}}},Store_CliSessionResponse: {type: object,required: [accessToken,expiresAt,appId,appKey,appVersionId,runtimeSessionId,scopes],properties: {accessToken: {type: string},expiresAt: {type: string,format: date-time},appId: {type: string},appKey: {type: string},appVersionId: {type: string},runtimeSessionId: {type: string},scopes: {type: array,items: {type: string}},runtimeBaseUrl: {type: string,format: uri},interAppBaseUrl: {type: string,format: uri},uploadBaseUrl: {type: string,format: uri}}},Store_SdkCredentialResponse: {type: object,required: [token,expiresAt,indexURL,packages],properties: {token: {type: string},expiresAt: {type: string,format: date-time},indexURL: {type: string,format: uri},packages: {type: object,additionalProperties: {type: object,required: [name,version],properties: {name: {type: string},version: {type: string}}}}}},Store_ProjectMetadata: {type: object,required: [name],additionalProperties: false,properties: {name: {type: string}}},Store_AppRuntimeSpec: {type: object,required: [apiVersion,serviceName,servicePort,entryPath,healthPath],additionalProperties: false,properties: {apiVersion: {type: string},authMode: {type: string},serviceName: {type: string},servicePort: {type: integer},entryPath: {type: string},healthPath: {type: string},protectedPaths: {type: array,items: {type: string}}}},Store_ProjectComponent: {type: object,required: [name],additionalProperties: false,properties: {name: {type: string}}},Store_ResourceRequirement: {type: object,required: [name,type],additionalProperties: false,properties: {name: {type: string},type: {type: string}}},Store_AppProjectSpec: {type: object,required: [appKey,displayVersion,sdkContractVersion,runtime,components],additionalProperties: false,properties: {appKey: {type: string},displayVersion: {type: string},sdkContractVersion: {type: string},runtime: {$ref: "#/components/schemas/Store_AppRuntimeSpec"},components: {type: array,items: {$ref: "#/components/schemas/Store_ProjectComponent"}},dependencies: {type: array,items: {$ref: "#/components/schemas/Store_AppDependency"}},integrations: {type: array,items: {$ref: "#/components/schemas/Store_AppIntegration"}},resources: {type: array,items: {$ref: "#/components/schemas/Store_ResourceRequirement"}},roles: {type: array,items: {$ref: "#/components/schemas/Store_RoleDefinition"}}}},Store_AppProject: {type: object,required: [apiVersion,kind,metadata,spec],additionalProperties: false,properties: {apiVersion: {type: string},kind: {type: string,enum: [AppProject]},metadata: {$ref: "#/components/schemas/Store_ProjectMetadata"},spec: {$ref: "#/components/schemas/Store_AppProjectSpec"}}},Store_ImageAssetBinding: {type: object,required: [component,imageAssetId],additionalProperties: false,properties: {component: {type: string},imageAssetId: {type: string},repository: {type: string},digest: {type: string}}},Store_ArtifactRef: {type: object,required: [reference,digest,verified],additionalProperties: false,properties: {reference: {type: string},digest: {type: string},verified: {type: boolean}}},Store_Artifacts: {type: object,additionalProperties: false,properties: {chart: {$ref: "#/components/schemas/Store_ArtifactRef"},openapi: {$ref: "#/components/schemas/Store_ArtifactRef"},migrations: {$ref: "#/components/schemas/Store_ArtifactRef"},sbom: {$ref: "#/components/schemas/Store_ArtifactRef"},signature: {$ref: "#/components/schemas/Store_ArtifactRef"},provenance: {$ref: "#/components/schemas/Store_ArtifactRef"}}},Store_AppDependency: {type: object,required: [appKey,capabilities],additionalProperties: false,properties: {appKey: {type: string},apiVersion: {type: string},capabilities: {type: array,items: {type: string}}}},Store_AppIntegrationCapability: {type: object,required: [name],additionalProperties: false,properties: {name: {type: string},onlineDebug: {type: boolean}}},Store_AppIntegration: {type: object,required: [apiVersion,basePath,capabilities],additionalProperties: false,properties: {apiVersion: {type: string},basePath: {type: string},capabilities: {type: array,items: {$ref: "#/components/schemas/Store_AppIntegrationCapability"}}}},Store_ImageRef: {type: object,required: [repository,digest],additionalProperties: false,properties: {repository: {type: string},digest: {type: string}}},Store_BundleMetadata: {type: object,required: [name,version],additionalProperties: false,properties: {name: {type: string},version: {type: string}}},Store_BundleComponent: {type: object,required: [name,image],additionalProperties: false,properties: {name: {type: string},image: {$ref: "#/components/schemas/Store_ImageRef"}}},Store_Binding: {type: object,required: [name,type,reference],additionalProperties: false,properties: {name: {type: string},type: {type: string},reference: {type: string}}},Store_AppBundleSpec: {type: object,required: [profile,image],additionalProperties: false,properties: {profile: {$ref: "#/components/schemas/Store_Profile"},image: {$ref: "#/components/schemas/Store_ImageRef"},components: {type: array,items: {$ref: "#/components/schemas/Store_BundleComponent"}},dependencies: {type: array,items: {$ref: "#/components/schemas/Store_AppDependency"}},integrations: {type: array,items: {$ref: "#/components/schemas/Store_AppIntegration"}},bindings: {type: array,items: {$ref: "#/components/schemas/Store_Binding"}},roles: {type: array,items: {$ref: "#/components/schemas/Store_RoleDefinition"}},artifacts: {$ref: "#/components/schemas/Store_Artifacts"}}},Store_AppBundle: {type: object,required: [apiVersion,kind,metadata,spec],additionalProperties: false,properties: {apiVersion: {type: string},kind: {type: string},metadata: {$ref: "#/components/schemas/Store_BundleMetadata"},spec: {$ref: "#/components/schemas/Store_AppBundleSpec"}}},Store_Profile: {type: object,required: [apiVersion,serviceName,servicePort,entryPath],additionalProperties: false,properties: {apiVersion: {type: string},authMode: {type: string},serviceName: {type: string},servicePort: {type: integer},entryPath: {type: string},protectedPaths: {type: array,items: {type: string}}}},Store_VersionSource: {type: object,properties: {sourceId: {type: string},fileName: {type: string},mediaType: {type: string},sizeBytes: {type: integer,format: int64},sha256: {type: string},objectRef: {type: string},downloadUrl: {type: string,format: uri},uploadedBy: {type: string},uploadedAt: {type: string,format: date-time},toolVersion: {type: string},specVersion: {type: string}}},Store_ParsedComponent: {type: object,required: [name],properties: {name: {type: string},repository: {type: string},digest: {type: string}}},Store_ParsedVersion: {type: object,properties: {appKey: {type: string},displayVersion: {type: string},releaseLabel: {type: string},serviceName: {type: string},servicePort: {type: integer},entryPath: {type: string},authMode: {type: string},healthPath: {type: string},protectedPaths: {type: array,items: {type: string}},components: {type: array,items: {$ref: "#/components/schemas/Store_ParsedComponent"}},dependencies: {type: array,items: {$ref: "#/components/schemas/Store_AppDependency"}},integrations: {type: array,items: {$ref: "#/components/schemas/Store_AppIntegration"}},resources: {type: array,items: {$ref: "#/components/schemas/Store_ResourceRequirement"}},roles: {type: array,items: {$ref: "#/components/schemas/Store_RoleDefinition"}},artifacts: {$ref: "#/components/schemas/Store_Artifacts"}}},Store_VersionImage: {type: object,properties: {imageImportId: {type: string},imageAssetId: {type: string},fileName: {type: string},archiveType: {type: string},sizeBytes: {type: integer,format: int64},sha256: {type: string},repository: {type: string},digest: {type: string},architecture: {type: string},status: {type: string},importedAt: {type: string,format: date-time}}},Store_VersionChangeInput: {type: object,required: [reason],additionalProperties: false,properties: {reason: {type: string},source: {$ref: "#/components/schemas/Store_AppSubmission"}}},Store_LaunchRequest: {type: object,required: [versionId],additionalProperties: false,properties: {versionId: {type: string},channel: {type: string}}},Store_BundleCompileRequest: {type: object,required: [submission],additionalProperties: false,properties: {submission: {$ref: "#/components/schemas/Store_AppSubmission"}}},Store_AuditRecord: {type: object,required: [id,action,status,createdAt],additionalProperties: false,properties: {id: {type: string},action: {type: string},status: {type: string},actor: {type: string},message: {type: string},createdAt: {type: string,format: date-time}}},Store_PageAudit: {type: object,required: [items,total,page,pageSize],properties: {items: {type: array,items: {$ref: "#/components/schemas/Store_AuditRecord"}},total: {type: integer},page: {type: integer},pageSize: {type: integer}}},Store_PagePublisher: {type: object,required: [items,total,page,pageSize],properties: {items: {type: array,items: {$ref: "#/components/schemas/Store_Publisher"}},total: {type: integer},page: {type: integer},pageSize: {type: integer}}},Store_PageApp: {type: object,required: [items,total,page,pageSize],properties: {items: {type: array,items: {$ref: "#/components/schemas/Store_AppProduct"}},total: {type: integer},page: {type: integer},pageSize: {type: integer}}},Store_PageVersion: {type: object,required: [items,total,page,pageSize],properties: {items: {type: array,items: {$ref: "#/components/schemas/Store_AppVersion"}},total: {type: integer},page: {type: integer},pageSize: {type: integer}}},Store_PageRequest: {type: object,required: [items,total,page,pageSize],properties: {items: {type: array,items: {$ref: "#/components/schemas/Store_VersionRequest"}},total: {type: integer},page: {type: integer},pageSize: {type: integer}}}},securitySchemes: {AI_bearerAuth: {bearerFormat: Account API Key,scheme: bearer,type: http},AI_inputAssetReadToken: {description: Short-lived platform-signed input read token. Use an issued URL unchanged; an API key is not a substitute.,in: query,name: token,type: apiKey},App_managedAppCredential: {type: http,scheme: bearer,description: 平台注入的应用身份，仅在后端读取，不硬编码},App_runtimeSession: {type: apiKey,in: header,name: X-Jusp-Runtime-Session-Id},App_jobRecovery: {type: apiKey,in: header,name: X-Jusp-Job-Recovery-Ref},Store_managedAppCredential: {type: http,scheme: bearer,description: Platform-injected credential matched to appKey; exact secret is never user-configured.},Store_developerBearer: {type: http,scheme: bearer,description: Logged-in developer or scoped CLI bearer.},Store_developerControlToken: {type: http,scheme: bearer},Store_appGrant: {type: apiKey,in: header,name: X-Jusp-App-Grant},Store_sdkBasicAuth: {type: http,scheme: basic,description: Short-lived package-index token issued by the platform.}},parameters: {App_IdempotencyKey: {name: Idempotency-Key,in: header,description: 稳定业务幂等键，正文变化不得复用，不代替clientTaskId,schema: {type: string,minLength: 1}},App_JobId: {name: jobId,in: path,required: true,schema: {type: string,minLength: 1}},App_ExportId: {name: exportId,in: path,required: true,schema: {type: string,minLength: 1}},Store_AppKey: {name: appKey,in: path,required: true,schema: {type: string,minLength: 1}},Store_AppId: {name: appId,in: path,required: true,schema: {type: string,minLength: 1}},Store_SessionId: {name: sessionId,in: path,required: true,schema: {type: string,minLength: 1}},Store_VersionId: {name: versionId,in: path,required: true,schema: {type: string,minLength: 1}},Store_RequestId: {name: requestId,in: path,required: true,schema: {type: string,minLength: 1}},Store_ImageImportId: {name: imageImportId,in: path,required: true,schema: {type: string,minLength: 1}},Store_Page: {name: page,in: query,required: false,schema: {type: integer,minimum: 0}},Store_PageSize: {name: pageSize,in: query,required: false,schema: {type: integer,minimum: 0,maximum: 100}}},responses: {App_Error: {description: 按code/phase处理：400字段，401重新打开，403无权，404受控不存在，409状态冲突，429退避，503依赖不可用；未知写结果保持原幂等键,content: {application/json: {schema: {$ref: "#/components/schemas/App_Error"}}}},Store_Error: {description: Machine-readable error,content: {application/json: {schema: {$ref: "#/components/schemas/Store_Error"}}}},Store_RuntimeSession: {description: Runtime session,content: {application/json: {schema: {$ref: "#/components/schemas/Store_RuntimeSession"}}}},Store_OrganizationGroups: {description: Organization groups,content: {application/json: {schema: {$ref: "#/components/schemas/Store_OrganizationGroups"}}}},Store_OrganizationMembers: {description: Organization members,content: {application/json: {schema: {$ref: "#/components/schemas/Store_OrganizationMembers"}}}},Store_AppGrantIssued: {description: Issued grant,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppGrantIssued"}}}},Store_AppGrantResolved: {description: Resolved grant,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppGrantResolved"}}}},Store_AppLaunch: {description: App launch code,content: {application/json: {schema: {$ref: "#/components/schemas/Store_AppLaunch"}}}}}}}
