{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://phaseo.app/schemas/provider-catalog.v1.json","title":"Phaseo provider catalog","description":"Version 1 of the Phaseo provider catalog. Approved providers update existing model offers automatically. New canonical models require administrator approval. price_nanos is the effective price to bill, including any promotion. Publish a new snapshot when that price changes. Conditional prices are not supported by V1 billing. Optional rate_limits declare the request and token limits your platform imposes on Phaseo; they apply without review and only rank your offers lower once reached.","type":"object","required":["data"],"additionalProperties":false,"properties":{"schema_version":{"const":"1.0"},"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"],"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},"provider_model_slug":{"type":"string","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"},"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"}]}}]}}}}}}},"capabilities":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/capability"}}}}}}