chatgpt-api/apps/web/public/schema.json

522 wiersze
18 KiB
JSON

{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 1024,
"minLength": 1,
"description": "Display name for the project. Max length 1024 characters."
},
"slug": {
"type": "string",
"minLength": 1,
"description": "Unique project slug. Must be ascii-only, lower-case, and kebab-case with no spaces between 1 and 256 characters. If not provided, it will be derived by slugifying `name`."
},
"version": {
"type": "string",
"minLength": 1,
"description": "Optional semantic version of the project as a semver string. Ex: 1.0.0, 0.0.1, 5.0.1, etc."
},
"description": {
"type": "string",
"description": "A short description of the project."
},
"readme": {
"type": "string",
"description": "Optional markdown readme documenting the project (supports GitHub-flavored markdown)."
},
"icon": {
"type": "string",
"description": "Optional logo image to use for the project. Logos should have a square aspect ratio."
},
"sourceUrl": {
"type": "string",
"format": "uri",
"description": "Optional URL to the source code of the project (eg, GitHub repo)."
},
"homepageUrl": {
"type": "string",
"format": "uri",
"description": "Optional URL to the product's homepage."
},
"origin": {
"anyOf": [
{
"type": "object",
"properties": {
"location": {
"type": "string",
"const": "external",
"default": "external"
},
"url": {
"type": "string",
"format": "uri",
"description": "Required base URL of the externally hosted origin API server. Must be a valid `https` URL.\n\nNOTE: Agentic currently only supports `external` API servers. If you'd like to host your API or MCP server on Agentic's infrastructure, please reach out to support@agentic.so."
},
"type": {
"type": "string",
"const": "openapi"
},
"spec": {
"type": "string",
"description": "Local file path, URL, or JSON stringified OpenAPI spec describing the origin API server."
}
},
"required": [
"url",
"type",
"spec"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"location": {
"$ref": "#/properties/origin/anyOf/0/properties/location"
},
"url": {
"$ref": "#/properties/origin/anyOf/0/properties/url"
},
"type": {
"type": "string",
"const": "mcp"
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"url",
"type"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"location": {
"$ref": "#/properties/origin/anyOf/0/properties/location"
},
"url": {
"$ref": "#/properties/origin/anyOf/0/properties/url"
},
"type": {
"type": "string",
"const": "raw"
}
},
"required": [
"url",
"type"
],
"additionalProperties": false
}
],
"description": "Origin adapter is used to configure the origin API server downstream from Agentic's API gateway. It specifies whether the origin API server denoted by `url` is hosted externally or deployed internally to Agentic's infrastructure. It also specifies the format for how origin tools are defined: either an OpenAPI spec or an MCP server.\n\nNOTE: Agentic currently only supports `external` API servers. If you'd like to host your API or MCP server on Agentic's infrastructure, please reach out to support@agentic.so."
},
"pricingPlans": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Display name for the pricing plan (eg, \"Free\", \"Starter Monthly\", \"Pro Annual\", etc)"
},
"slug": {
"type": "string",
"minLength": 1,
"description": "PricingPlan slug (eg, \"free\", \"starter-monthly\", \"pro-annual\", etc). Should be lower-cased and kebab-cased. Should be stable across deployments."
},
"interval": {
"type": "string",
"enum": [
"day",
"week",
"month",
"year"
],
"description": "The frequency at which a subscription is billed."
},
"description": {
"type": "string"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"trialPeriodDays": {
"type": "number",
"minimum": 0
},
"rateLimit": {
"anyOf": [
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": false
}
},
"required": [
"enabled"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"interval": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "string",
"minLength": 1
}
],
"description": "The interval at which the rate limit is applied. Either a positive integer expressed in seconds or a valid positive [ms](https://github.com/vercel/ms) string (eg, \"10s\", \"1m\", \"8h\", \"2d\", \"1w\", \"1y\", etc)."
},
"limit": {
"type": "number",
"minimum": 0,
"description": "Maximum number of operations per interval (unitless)."
},
"mode": {
"type": "string",
"enum": [
"strict",
"approximate"
],
"default": "approximate",
"description": "How to enforce the rate limit: \"strict\" (more precise but slower) or \"approximate\" (the default; faster and asynchronous but less precise)."
},
"enabled": {
"type": "boolean",
"default": true
}
},
"required": [
"interval",
"limit"
],
"additionalProperties": false
}
]
},
"lineItems": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"label": {
"type": "string"
},
"usageType": {
"type": "string",
"const": "licensed"
},
"amount": {
"type": "number",
"minimum": 0
}
},
"required": [
"slug",
"usageType",
"amount"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"slug": {
"$ref": "#/properties/pricingPlans/items/properties/lineItems/items/anyOf/0/properties/slug"
},
"label": {
"$ref": "#/properties/pricingPlans/items/properties/lineItems/items/anyOf/0/properties/label"
},
"usageType": {
"type": "string",
"const": "metered"
},
"unitLabel": {
"type": "string"
},
"billingScheme": {
"type": "string",
"enum": [
"per_unit",
"tiered"
]
},
"unitAmount": {
"type": "number",
"minimum": 0
},
"tiersMode": {
"type": "string",
"enum": [
"graduated",
"volume"
]
},
"tiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"unitAmount": {
"type": "number"
},
"flatAmount": {
"type": "number"
},
"upTo": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"const": "inf"
}
]
}
},
"required": [
"upTo"
],
"additionalProperties": false
},
"minItems": 1
},
"defaultAggregation": {
"type": "object",
"properties": {
"formula": {
"type": "string",
"enum": [
"sum",
"count"
],
"default": "sum"
}
},
"additionalProperties": false
},
"transformQuantity": {
"type": "object",
"properties": {
"divideBy": {
"type": "number",
"exclusiveMinimum": 0
},
"round": {
"type": "string",
"enum": [
"down",
"up"
]
}
},
"required": [
"divideBy",
"round"
],
"additionalProperties": false
}
},
"required": [
"slug",
"usageType",
"billingScheme"
],
"additionalProperties": false
}
],
"description": "PricingPlanLineItems represent a single line-item in a Stripe Subscription. They map to a Stripe billing `Price` and possibly a corresponding Stripe `Meter` for usage-based line-items."
},
"minItems": 1,
"maxItems": 20
}
},
"required": [
"name",
"slug",
"lineItems"
],
"additionalProperties": false,
"description": "Represents the config for a Stripe subscription with one or more PricingPlanLineItems."
},
"minItems": 1,
"description": "List of PricingPlans configuring which Stripe subscriptions should be available for the project. Defaults to a single free plan which is useful for developing and testing your project.",
"default": [
{
"name": "Free",
"slug": "free",
"lineItems": [
{
"slug": "base",
"usageType": "licensed",
"amount": 0
}
],
"rateLimit": {
"enabled": true,
"interval": 60,
"limit": 1000,
"mode": "approximate"
}
}
]
},
"pricingIntervals": {
"type": "array",
"items": {
"$ref": "#/properties/pricingPlans/items/properties/interval"
},
"minItems": 1,
"description": "Optional list of billing intervals to enable in the pricingPlans.\n\nDefaults to a single monthly interval `['month']`.\n\nTo add support for annual pricing plans, for example, you can use: `['month', 'year']`.",
"default": [
"month"
]
},
"defaultRateLimit": {
"$ref": "#/properties/pricingPlans/items/properties/rateLimit",
"default": {
"enabled": true,
"interval": 60,
"limit": 1000,
"mode": "approximate"
}
},
"toolConfigs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z_][a-zA-Z0-9_-]{0,63}$",
"description": "Agentic tool name"
},
"enabled": {
"type": "boolean"
},
"pure": {
"type": "boolean"
},
"cacheControl": {
"type": "string"
},
"reportUsage": {
"type": "boolean"
},
"rateLimit": {
"$ref": "#/properties/pricingPlans/items/properties/rateLimit"
},
"inputSchemaAdditionalProperties": {
"type": "boolean"
},
"outputSchemaAdditionalProperties": {
"type": "boolean"
},
"pricingPlanOverridesMap": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"reportUsage": {
"type": "boolean"
},
"rateLimit": {
"$ref": "#/properties/pricingPlans/items/properties/rateLimit"
}
},
"additionalProperties": false
},
"propertyNames": {
"minLength": 1
},
"description": "Allows you to override this tool's behavior or disable it entirely for different pricing plans. This is a map of PricingPlan slug to PricingPlanToolOverrides for that plan."
},
"examples": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The display name of the example. If not given, defaults to `Example 1`, `Example 2`, etc."
},
"prompt": {
"type": "string",
"description": "The input prompt for agents to use when running this example."
},
"systemPrompt": {
"type": "string",
"description": "An optional system prompt for agents to use when running this example. Defaults to `You are a helpful assistant. Be as concise as possible.`"
},
"args": {
"type": "object",
"additionalProperties": {},
"description": "The arguments to pass to the tool for this example."
},
"featured": {
"type": "boolean",
"description": "Whether this example should be featured in the docs for the project."
},
"description": {
"type": "string",
"description": "A description of the example."
}
},
"required": [
"prompt",
"args"
],
"additionalProperties": false
},
"description": "Examples of how to use this tool. Used to generate example usage in the tool's docs."
}
},
"required": [
"name"
],
"additionalProperties": false
},
"default": []
}
},
"required": [
"name",
"origin"
],
"additionalProperties": false,
"$schema": "https://json-schema.org/draft-07/schema",
"title": "Agentic Project Config Schema",
"description": "JSON Schema used by `agentic.config.{ts,js,json}` files to configure Agentic projects."
}