{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://phaseo.app/schemas/provider-catalog.v1.1.json","title":"Phaseo provider catalog","description":"Version 1.1. Publish normalized standard, fast, ultrafast, flex and batch offers with independent effective prices. Batch uses the separate Batch API. Optional rate_limits may name the upstream model ID of any tier.","type":"object","required":["schema_version","data"],"additionalProperties":false,"properties":{"schema_version":{"const":"1.1"},"data":{"type":"array","minItems":0,"maxItems":1000,"items":{"$ref":"#/$defs/model"}},"rate_limits":{"type":"array","maxItems":1000,"description":"Optional. Request and token limits per minute or day, provider-wide or per upstream model. Each scope may appear once, and every model must be an upstream provider_model_slug in this catalog. When present, the list replaces your declared limits on import; an empty list removes them.","items":{"$ref":"#/$defs/rateLimit"}}},"$defs":{"rateLimit":{"type":"object","additionalProperties":false,"anyOf":[{"required":["requests_per_minute"],"properties":{"requests_per_minute":{"type":"integer"}}},{"required":["requests_per_day"],"properties":{"requests_per_day":{"type":"integer"}}},{"required":["tokens_per_minute"],"properties":{"tokens_per_minute":{"type":"integer"}}},{"required":["tokens_per_day"],"properties":{"tokens_per_day":{"type":"integer"}}}],"description":"A limit your platform imposes on Phaseo's account. Omit model for a provider-wide limit. Reaching a limit ranks your offers lower in routing; it never blocks requests.","properties":{"model":{"type":["string","null"],"minLength":1,"maxLength":2000,"description":"Upstream provider_model_slug from this catalog. Omit, or use null, for a provider-wide limit."},"requests_per_minute":{"type":["integer","null"],"minimum":1,"maximum":9007199254740991},"requests_per_day":{"type":["integer","null"],"minimum":1,"maximum":9007199254740991},"tokens_per_minute":{"type":["integer","null"],"minimum":1,"maximum":9007199254740991},"tokens_per_day":{"type":["integer","null"],"minimum":1,"maximum":9007199254740991}}},"capability":{"oneOf":[{"type":"string"},{"type":"object","required":["id"],"additionalProperties":false,"properties":{"id":{"type":"string"},"parameters":{"type":"array","items":{"type":"string"}}}}]},"model":{"type":"object","required":["id","capabilities","service_tiers"],"additionalProperties":false,"properties":{"id":{"type":"string","maxLength":2000,"pattern":"^[a-z0-9][a-z0-9._-]*\\/[a-z0-9][a-z0-9._:/+@-]*$","description":"Use an existing public canonical model ID, or your provider's own namespace for a new model."},"name":{"type":"string","maxLength":2000},"description":{"type":["string","null"],"maxLength":2000},"input_modalities":{"type":"array","maxItems":32,"items":{"type":"string"}},"output_modalities":{"type":"array","maxItems":32,"items":{"type":"string"}},"context_length":{"type":["integer","null"],"minimum":1},"max_output_tokens":{"type":["integer","null"],"minimum":1},"availability":{"enum":["ready","not_ready","degraded","deprecated","retired"]},"available_from":{"type":["string","null"],"format":"date-time","description":"RFC 3339 timestamp with an explicit timezone offset."},"deprecated_at":{"type":["string","null"],"format":"date-time"},"shutdown_at":{"type":["string","null"],"format":"date-time"},"capabilities":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/capability"}},"service_tiers":{"type":"array","minItems":1,"maxItems":5,"items":{"$ref":"#/$defs/serviceTier"},"contains":{"type":"object","required":["service_tier"],"properties":{"service_tier":{"const":"standard"}}},"minContains":1,"maxContains":1,"allOf":[{"contains":{"type":"object","required":["service_tier"],"properties":{"service_tier":{"const":"fast"}}},"minContains":0,"maxContains":1},{"contains":{"type":"object","required":["service_tier"],"properties":{"service_tier":{"const":"ultrafast"}}},"minContains":0,"maxContains":1},{"contains":{"type":"object","required":["service_tier"],"properties":{"service_tier":{"const":"flex"}}},"minContains":0,"maxContains":1},{"contains":{"type":"object","required":["service_tier"],"properties":{"service_tier":{"const":"batch"}}},"minContains":0,"maxContains":1}]}},"allOf":[{"if":{"properties":{"service_tiers":{"contains":{"type":"object","required":["service_tier"],"properties":{"service_tier":{"const":"batch"}}}}}},"then":{"properties":{"capabilities":{"contains":{"anyOf":[{"enum":["batch","batch.create"]},{"type":"object","required":["id"],"properties":{"id":{"enum":["batch","batch.create"]}}}]}}}}}]},"serviceTier":{"type":"object","additionalProperties":false,"required":["service_tier","provider_model_slug","pricing"],"properties":{"service_tier":{"enum":["standard","fast","ultrafast","flex","batch"]},"provider_model_slug":{"type":"string","maxLength":2000,"minLength":1},"upstream_service_tier":{"type":["string","null"],"enum":[null,"standard","default","fast","priority","ultrafast","flex","batch"]},"availability":{"enum":["ready","not_ready","degraded","deprecated","retired"]},"pricing":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["meter_key","modality","unit","unit_quantity","price_nanos","display_label","display_unit"],"properties":{"meter_key":{"type":"string"},"modality":{"type":"string"},"direction":{"type":["string","null"]},"unit":{"type":"string"},"unit_quantity":{"type":"number","exclusiveMinimum":0},"price_nanos":{"type":"number","minimum":0},"display_label":{"type":"string"},"display_unit":{"type":"string"},"conditions":{"type":"array","maxItems":0,"items":{"type":"object","additionalProperties":false,"required":["path","op","value"],"properties":{"path":{"type":"string","pattern":"^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)?$"},"op":{"enum":["eq","in","gt","gte","lt","lte"]},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","minItems":1,"maxItems":16,"items":{"oneOf":[{"type":"string"},{"type":"number"}]}}]}}}}}},"minItems":1}},"allOf":[{"if":{"properties":{"service_tier":{"const":"standard"}}},"then":{"properties":{"upstream_service_tier":{"enum":[null,"default","standard"]}}}},{"if":{"properties":{"service_tier":{"const":"fast"}}},"then":{"properties":{"upstream_service_tier":{"enum":[null,"fast","priority"]}}}},{"if":{"properties":{"service_tier":{"const":"ultrafast"}}},"then":{"properties":{"upstream_service_tier":{"enum":[null,"ultrafast"]}}}},{"if":{"properties":{"service_tier":{"const":"flex"}}},"then":{"properties":{"upstream_service_tier":{"enum":[null,"flex"]}}}},{"if":{"properties":{"service_tier":{"const":"batch"}}},"then":{"properties":{"upstream_service_tier":{"enum":[null]}}}}]}}}