{"openapi":"3.1.0","info":{"title":"Extension Protocol Gateway","version":"0.1.0","description":"Hybrid protocol gateway. Fixture references are deterministic; browser mode accepts sensitive inputs only in authenticated requests and never returns them."},"servers":[{"url":"http://ceshi.youxidaichong.cn"}],"security":[{"BearerAuth":[]}],"paths":{"/healthz":{"get":{"operationId":"health","responses":{"200":{"description":"Healthy"}}}},"/v1/capabilities":{"get":{"operationId":"capabilities","responses":{"200":{"description":"Capabilities"}}}},"/v1/jobs":{"get":{"operationId":"listJobs","responses":{"200":{"description":"Jobs"}}},"post":{"operationId":"createJob","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateJob"}}}},"responses":{"202":{"description":"Queued"},"400":{"$ref":"#/components/responses/Error"}}}},"/v1/jobs/{jobId}":{"get":{"operationId":"getJob","parameters":[{"$ref":"#/components/parameters/JobId"}],"responses":{"200":{"description":"Job"},"404":{"$ref":"#/components/responses/Error"}}}},"/v1/jobs/{jobId}/events":{"get":{"operationId":"jobEvents","parameters":[{"$ref":"#/components/parameters/JobId"},{"$ref":"#/components/parameters/LastEventId"}],"responses":{"200":{"description":"Server-sent events","content":{"text/event-stream":{}}}}}},"/v1/jobs/{jobId}/actions":{"post":{"operationId":"jobAction","parameters":[{"$ref":"#/components/parameters/JobId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Action"}}}},"responses":{"202":{"description":"Action accepted"},"409":{"$ref":"#/components/responses/Error"}}}},"/api/ext-enqueue":{"post":{"operationId":"legacyEnqueue","description":"Compatibility route. It accepts sessionRef only; sessionRaw is rejected.","responses":{"202":{"description":"Queued"},"400":{"$ref":"#/components/responses/Error"}}}},"/api/ext-debug":{"get":{"operationId":"legacyDebug","parameters":[{"name":"jobId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Compatibility job view"},"404":{"$ref":"#/components/responses/Error"}}}}},"components":{"parameters":{"JobId":{"name":"jobId","in":"path","required":true,"schema":{"type":"string"}},"LastEventId":{"name":"Last-Event-ID","in":"header","required":false,"schema":{"type":"string"}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":128}}},"schemas":{"CreateJob":{"type":"object","additionalProperties":false,"required":["planId"],"anyOf":[{"required":["sessionRef"]},{"required":["sessionRaw"]}],"properties":{"planId":{"type":"string","enum":["ph_plus","eg_pro5","ph_pro20","us_plus"]},"sessionRef":{"type":"string","pattern":"^(fixture-session|browser-session)-"},"sessionRaw":{"type":"string","maxLength":12000,"writeOnly":true},"mode":{"type":"string","enum":["fixture","http","browser","hybrid"],"default":"fixture"},"scenario":{"type":"string","enum":["success","captcha","3ds","declined","failure","session_expired"]},"paymentMethodRef":{"type":"string","pattern":"^fixture-payment-"},"cardInput":{"oneOf":[{"type":"string"},{"type":"object"}],"writeOnly":true},"cards":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}],"writeOnly":true},"billing":{"type":"object"},"cancelAfterSuccess":{"type":"boolean","default":true},"metadata":{"type":"object","additionalProperties":true}}},"Action":{"type":"object","additionalProperties":false,"required":["action"],"properties":{"action":{"type":"string","enum":["resume","mark_manual_done","cancel"]}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}},"responses":{"Error":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}}}}