{"openapi":"3.1.0","info":{"title":"Morph Agent Responses Proxy","description":"OpenAI Responses-compatible proxy with resource affinity, health checks, and telemetry.","version":"0.1.0"},"paths":{"/admin/providers":{"get":{"tags":["Registry"],"summary":"List registered service providers","operationId":"list_providers_admin_providers_get","parameters":[{"name":"include_disabled","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Disabled"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Providers Admin Providers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Registry"],"summary":"Register service provider","operationId":"create_provider_admin_providers_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceProviderCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Provider Admin Providers Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/providers/{provider_id}":{"get":{"tags":["Registry"],"summary":"Read registered service provider","operationId":"get_provider_admin_providers__provider_id__get","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Provider Admin Providers  Provider Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Registry"],"summary":"Update registered service provider","operationId":"update_provider_admin_providers__provider_id__patch","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceProviderUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Provider Admin Providers  Provider Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Registry"],"summary":"Disable registered service provider","operationId":"delete_provider_admin_providers__provider_id__delete","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Provider Admin Providers  Provider Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/models":{"get":{"tags":["Registry"],"summary":"List registered models and agents","operationId":"list_models_admin_models_get","parameters":[{"name":"include_disabled","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Disabled"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Models Admin Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Registry"],"summary":"Register model or compound agent","operationId":"create_model_admin_models_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredModelCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Model Admin Models Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/models/{alias}":{"get":{"tags":["Registry"],"summary":"Read registered model or agent","operationId":"get_model_admin_models__alias__get","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Model Admin Models  Alias  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Registry"],"summary":"Update registered model or agent","operationId":"update_model_admin_models__alias__patch","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredModelUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Model Admin Models  Alias  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Registry"],"summary":"Disable registered model or agent","operationId":"delete_model_admin_models__alias__delete","parameters":[{"name":"alias","in":"path","required":true,"schema":{"type":"string","title":"Alias"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Model Admin Models  Alias  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"tags":["Dashboard"],"summary":"Render dashboard","operationId":"dashboard__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/healthz":{"get":{"tags":["Health"],"summary":"Check service liveness","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/readyz":{"get":{"tags":["Health"],"summary":"Check service readiness","operationId":"readyz_readyz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Readyz Readyz Get"}}}}}}},"/admin/state":{"get":{"tags":["Administration"],"summary":"Read live proxy state","operationId":"admin_state_admin_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin State Admin State Get"}}}}}}},"/admin/health/check":{"post":{"tags":["Health"],"summary":"Run upstream health checks","operationId":"admin_health_check_admin_health_check_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"type":"object","title":"Response Admin Health Check Admin Health Check Post"}}}}}}},"/admin/routing":{"get":{"tags":["Administration"],"summary":"Show active routing (resources + model aliases)","operationId":"admin_routing_admin_routing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Routing Admin Routing Get"}}}}}}},"/admin/routing/reload":{"post":{"tags":["Administration"],"summary":"Reload routing from the registry","operationId":"admin_routing_reload_admin_routing_reload_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Routing Reload Admin Routing Reload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/metrics":{"get":{"tags":["Administration"],"summary":"Aggregate request metrics","operationId":"admin_metrics_admin_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Metrics Admin Metrics Get"}}}}}}},"/admin/sessions":{"get":{"tags":["Administration"],"summary":"List recent sessions","operationId":"admin_sessions_admin_sessions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":true}},"title":"Response Admin Sessions Admin Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/requests":{"get":{"tags":["Administration"],"summary":"List recent proxied requests","operationId":"admin_requests_admin_requests_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},{"name":"resource_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Id"}},{"name":"provider_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":true}},"title":"Response Admin Requests Admin Requests Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/decisions":{"get":{"tags":["Administration"],"summary":"List recent load-balancer decisions","operationId":"admin_decisions_admin_decisions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},{"name":"resource_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Id"}},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":true}},"title":"Response Admin Decisions Admin Decisions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/events":{"get":{"tags":["Administration"],"summary":"Stream live proxy events","operationId":"admin_events_admin_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/responses":{"post":{"tags":["Responses API"],"summary":"Create proxied response","operationId":"responses_root_v1_responses_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/responses/{relative_path}":{"patch":{"tags":["Responses API"],"summary":"Proxy Responses API PATCH subpath","operationId":"proxy_responses_path_patch","parameters":[{"name":"relative_path","in":"path","required":true,"schema":{"type":"string","title":"Relative Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Responses API"],"summary":"Proxy Responses API DELETE subpath","operationId":"proxy_responses_path_delete","parameters":[{"name":"relative_path","in":"path","required":true,"schema":{"type":"string","title":"Relative Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Responses API"],"summary":"Proxy Responses API POST subpath","operationId":"proxy_responses_path_post","parameters":[{"name":"relative_path","in":"path","required":true,"schema":{"type":"string","title":"Relative Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Responses API"],"summary":"Proxy Responses API GET subpath","operationId":"proxy_responses_path_get","parameters":[{"name":"relative_path","in":"path","required":true,"schema":{"type":"string","title":"Relative Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"RegisteredModelCreate":{"properties":{"alias":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:/-]{0,191}$","title":"Alias"},"display_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Display Name"},"kind":{"type":"string","enum":["model","agent","compound_agent"],"title":"Kind","default":"model"},"provider_id":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"},{"type":"null"}],"title":"Provider Id"},"upstream_id":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Upstream Id"},"enabled":{"type":"boolean","title":"Enabled","default":true},"route":{"additionalProperties":true,"type":"object","title":"Route"},"capabilities":{"additionalProperties":true,"type":"object","title":"Capabilities"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"additionalProperties":false,"type":"object","required":["alias"],"title":"RegisteredModelCreate"},"RegisteredModelUpdate":{"properties":{"display_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Display Name"},"kind":{"anyOf":[{"type":"string","enum":["model","agent","compound_agent"]},{"type":"null"}],"title":"Kind"},"provider_id":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"},{"type":"null"}],"title":"Provider Id"},"upstream_id":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Upstream Id"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"route":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Route"},"capabilities":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Capabilities"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"additionalProperties":false,"type":"object","title":"RegisteredModelUpdate"},"ServiceProviderCreate":{"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$","title":"Id"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"provider_type":{"type":"string","enum":["openai","anthropic","custom","internal"],"title":"Provider Type","default":"openai"},"base_url":{"type":"string","maxLength":1000,"minLength":1,"title":"Base Url"},"wire_api":{"type":"string","enum":["responses","chat_completions","anthropic_messages","custom"],"title":"Wire Api","default":"responses"},"auth_type":{"type":"string","enum":["bearer","api_key","none","custom"],"title":"Auth Type","default":"bearer"},"auth_header":{"type":"string","maxLength":200,"minLength":1,"title":"Auth Header","default":"authorization"},"credential_ref":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Credential Ref"},"api_key":{"anyOf":[{"type":"string","format":"password","writeOnly":true},{"type":"null"}],"title":"Api Key"},"health_path":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Health Path","default":"models"},"enabled":{"type":"boolean","title":"Enabled","default":true},"config":{"additionalProperties":true,"type":"object","title":"Config"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"additionalProperties":false,"type":"object","required":["id","name","base_url"],"title":"ServiceProviderCreate"},"ServiceProviderUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"provider_type":{"anyOf":[{"type":"string","enum":["openai","anthropic","custom","internal"]},{"type":"null"}],"title":"Provider Type"},"base_url":{"anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"title":"Base Url"},"wire_api":{"anyOf":[{"type":"string","enum":["responses","chat_completions","anthropic_messages","custom"]},{"type":"null"}],"title":"Wire Api"},"auth_type":{"anyOf":[{"type":"string","enum":["bearer","api_key","none","custom"]},{"type":"null"}],"title":"Auth Type"},"auth_header":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Auth Header"},"credential_ref":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Credential Ref"},"api_key":{"anyOf":[{"type":"string","format":"password","writeOnly":true},{"type":"null"}],"title":"Api Key"},"clear_api_key":{"type":"boolean","title":"Clear Api Key","default":false},"health_path":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Health Path"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"additionalProperties":false,"type":"object","title":"ServiceProviderUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"tags":[{"name":"Dashboard","description":"Human-readable dashboard for live proxy state."},{"name":"Health","description":"Service readiness and upstream resource health checks."},{"name":"Administration","description":"Operational telemetry, request history, and session debugging."},{"name":"Registry","description":"Durable provider, model, and compound-agent registry."},{"name":"Responses API","description":"OpenAI Responses-compatible proxy endpoints."}]}