{"$id":"https://ptc-runner.dev/schemas/ptc-gateway-config.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Strict UTF-8 JSON, at most 1000000 bytes; duplicate object keys forbidden. String maxima are also byte maxima. Semantic rules are in the gateway reference.","properties":{"$schema":{"const":"https://ptc-runner.dev/schemas/ptc-gateway-config.schema.json"},"admission":{"additionalProperties":false,"properties":{"max_active_provider_calls":{"maximum":65535,"minimum":1,"type":"integer"},"max_concurrent_runs":{"maximum":65535,"minimum":1,"type":"integer"},"max_inflight_requests":{"maximum":65535,"minimum":1,"type":"integer"},"max_waiting_provider_calls":{"maximum":65535,"minimum":0,"type":"integer"}},"required":["max_inflight_requests","max_concurrent_runs","max_active_provider_calls","max_waiting_provider_calls"],"type":"object"},"artifacts":{"additionalProperties":false,"properties":{"inspection":{"default":false,"type":"boolean"},"root":{"maxLength":1024,"minLength":1,"pattern":"^[^\\x00]+$","type":"string"},"trace":{"default":false,"type":"boolean"}},"required":["root"],"type":"object"},"authentication":{"additionalProperties":false,"properties":{"bearer":{"additionalProperties":false,"properties":{"binding":{"maxLength":128,"minLength":1,"pattern":"^[a-z][a-z0-9._-]{0,127}$","type":"string"}},"required":["binding"],"type":"object"}},"required":["bearer"],"type":"object"},"host":{"additionalProperties":false,"properties":{"path":{"maxLength":1024,"minLength":1,"pattern":"^[^\\x00]+$","type":"string"}},"required":["path"],"type":"object"},"listen":{"additionalProperties":false,"properties":{"address":{"enum":["127.0.0.1","::1"]},"allowed_origins":{"default":[],"items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":128,"type":"array","uniqueItems":true},"path":{"const":"/mcp"},"port":{"maximum":65535,"minimum":1,"type":"integer"}},"required":["address","port","path"],"type":"object"},"private_audit":{"additionalProperties":false,"properties":{"directory":{"maxLength":1024,"minLength":1,"pattern":"^[^\\x00]+$","type":"string"},"max_file_bytes":{"maximum":67108864,"minimum":1024,"type":"integer"},"max_retained_files":{"maximum":128,"minimum":2,"type":"integer"}},"required":["directory","max_file_bytes","max_retained_files"],"type":"object"},"tools":{"items":{"additionalProperties":false,"properties":{"allow_write":{"default":false,"type":"boolean"},"application":{"additionalProperties":false,"properties":{"manifest":{"maxLength":1024,"minLength":1,"pattern":"^[^\\x00]+$","type":"string"}},"required":["manifest"],"type":"object"},"description":{"maxLength":4096,"minLength":1,"type":"string"},"expected_application_content_digest":{"maxLength":71,"minLength":1,"pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"installation_config_pins":{"additionalProperties":{"maxLength":71,"minLength":1,"pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"maxProperties":128,"propertyNames":{"pattern":"^[a-z][a-z0-9._-]{0,127}$"},"type":"object"},"name":{"maxLength":128,"minLength":1,"pattern":"^[a-zA-Z0-9_.-]{1,128}$","type":"string"},"provider_snapshot_pins":{"additionalProperties":{"maxLength":71,"minLength":1,"pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"maxProperties":128,"propertyNames":{"pattern":"^(workflow|mission)/[a-z][a-z0-9._-]{0,127}$"},"type":"object"},"title":{"maxLength":256,"minLength":1,"type":"string"}},"required":["name","title","description","application","expected_application_content_digest","installation_config_pins","provider_snapshot_pins"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"},"version":{"const":1}},"required":["version","listen","authentication","host","admission","tools"],"title":"PtcRunner gateway configuration","type":"object"}
