{"info":{"title":"Alpic API","version":"1.0.0"},"servers":[{"url":"https://api.alpic.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer token for authentication. Use an API key from the API Keys page in team settings, or an OAuth access token.","scheme":"bearer"}},"schemas":{"Submission":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"environmentId":{"type":"string"},"auditId":{"anyOf":[{"type":"string"},{"type":"null"}]},"urlVerification":{"anyOf":[{"type":"object","properties":{"verifiedAt":{"type":"string","format":"date-time","x-native-type":"date"},"results":{"type":"array","items":{"type":"object","properties":{"field":{"enum":["privacyPolicyUrl","termsOfServiceUrl","privacyPolicy"],"type":"string"},"url":{"type":"string"},"outcome":{"enum":["pass","fail","unverified"],"type":"string"},"reason":{"type":"string"},"concerns":{"type":"array","items":{"type":"string"}},"scrapedWith":{"enum":["fetch","firecrawl"],"type":"string"}},"required":["field","url","outcome","reason"]}}},"required":["verifiedAt","results"]},{"type":"null"}],"default":null},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"},"platform":{"const":"claudeai"},"formData":{"$ref":"#/components/schemas/ClaudeSubmissionFormData"},"prefillSnapshot":{"anyOf":[{"$ref":"#/components/schemas/ClaudeSubmissionFormData"},{"type":"null"}],"default":null}},"required":["id","environmentId","auditId","createdAt","updatedAt","platform","formData"]},{"type":"object","properties":{"id":{"type":"string"},"environmentId":{"type":"string"},"auditId":{"anyOf":[{"type":"string"},{"type":"null"}]},"urlVerification":{"anyOf":[{"type":"object","properties":{"verifiedAt":{"type":"string","format":"date-time","x-native-type":"date"},"results":{"type":"array","items":{"type":"object","properties":{"field":{"enum":["privacyPolicyUrl","termsOfServiceUrl","privacyPolicy"],"type":"string"},"url":{"type":"string"},"outcome":{"enum":["pass","fail","unverified"],"type":"string"},"reason":{"type":"string"},"concerns":{"type":"array","items":{"type":"string"}},"scrapedWith":{"enum":["fetch","firecrawl"],"type":"string"}},"required":["field","url","outcome","reason"]}}},"required":["verifiedAt","results"]},{"type":"null"}],"default":null},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"},"platform":{"const":"chatgpt"},"formData":{"$ref":"#/components/schemas/ChatgptSubmissionFormData"},"prefillSnapshot":{"anyOf":[{"$ref":"#/components/schemas/ChatgptSubmissionFormData"},{"type":"null"}],"default":null}},"required":["id","environmentId","auditId","createdAt","updatedAt","platform","formData"]}]},"ClaudeSubmissionFormData":{"type":"object","properties":{"serverUrl":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"oneLiner":{"type":"string"},"description":{"type":"string"},"categories":{"type":"array","items":{"enum":["Productivity","Communication","Data & Analytics","Development tools","Financial Services","Consumer Health","Health & Life Sciences","Media & Entertainment","Commerce & Shopping","Legal","Sales and marketing","Creative","Nonprofit","Education","Other"],"type":"string"}},"iconUrl":{"type":"string"},"documentation":{"type":"string"},"support":{"type":"string"},"privacyPolicy":{"type":"string"},"screenshots":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"url":{"type":"string"}},"required":["prompt","url"]}},"primaryUseCases":{"type":"string","description":"Describe the main tasks users will accomplish with this connector, and include a few example prompts a user might\ntype. These may be shown publicly but are primarily used for internal review — reviewers test your server using them."},"connectionRequirements":{"type":"string","description":"What accounts, permissions, or setup a user needs before connecting (e.g. 'Requires a paid Acme account with admin\npermissions'). If there are genuinely no special requirements, say so explicitly."},"readWriteCapabilities":{"enum":["read_only","write_only","read_write"],"type":"string","description":"What your server can do:\n• 'read_only': retrieves data but never modifies it.\n• 'write_only': creates or modifies data but does not read it.\n• 'read_write': both retrieves and modifies data (most common)."},"companyName":{"type":"string","description":"The company or organization behind this connector — its legal name or publicly known product name."},"companyWebsite":{"type":"string"},"primaryContactName":{"type":"string","description":"Full name of the person Anthropic should contact about this submission. Receives review feedback and follow-up questions."},"primaryContactEmail":{"type":"string"},"primaryContactRole":{"type":"string","description":"The primary contact's role at the company (e.g. 'Engineer', 'Product Manager'). Optional."},"anthropicPointOfContact":{"type":"string","description":"If you've been working with someone at Anthropic, their name or email. Optional, can expedite review."},"authentication":{"enum":["oauth_dcr","oauth_cimd","oauth_anthropic_creds","custom_connection","none"],"type":"string","description":"How users authenticate with your server:\n• 'oauth_dcr': OAuth 2.0 + Dynamic Client Registration (RFC 7591) — clients register themselves.\n• 'oauth_cimd': OAuth 2.0 + Client ID Metadata Document — a published client_id metadata document.\n• 'oauth_anthropic_creds': OAuth 2.0 with Anthropic-held client credentials (a static client_id, and secret if needed).\n• 'custom_connection': users supply their own URL or client details at connection time (e.g. Snowflake).\n• 'none': no authentication (authless) — anyone can connect and call tools without credentials."},"partialAuth":{"type":"boolean","description":"Whether some tools return 401 and prompt for auth on demand while the server otherwise starts authless (partial auth)."},"apiOwnership":{"enum":["first_party","proxied","third_party"],"type":"string","description":"How your connector relates to the API it calls:\n• 'first_party': the MCP server calls your own production APIs.\n• 'proxied': calls go to a third-party API you're authorized to integrate (e.g. a Zapier-style integration).\n• 'third_party': calls a third-party API you don't control — typically blocks listing; explain in 'additionalNotes'."},"personalHealthData":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"other":{"type":"string"}},"required":["other"]}],"description":"Whether this connector accesses, processes, or stores personal health information.\nNo → false, Yes → true, or { other: explanation } when it depends on configuration."},"sponsoredContent":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"other":{"type":"string"}},"required":["other"]}],"description":"Whether this connector surfaces sponsored, promoted, or advertising content (prohibited in directory connectors).\nNo → false, Yes → true, or { other: explanation }."},"testInstructions":{"type":"string","description":"Clear test-account setup and access instructions for reviewers: every link, credential, and step needed to access\nthe MCP server autonomously. For accounts that need to be populated, provide test credentials granting access to a\nfully populated account."},"selfTested":{"type":"boolean","description":"Confirmation that you have run every tool via MCP Inspector or as a custom connector in Claude."},"policyAcknowledgements":{"type":"array","items":{"enum":["I have read and understand the MCP Directory developer guidelines.","My server calls our own first-party APIs (or APIs we legitimately proxy with permission).","My connector does not transfer money, cryptocurrency, or other financial assets on a user's behalf.","My connector does not use AI models to generate images, video, or audio.","Tool descriptions contain no instructions about model behavior, other tools, or external instruction sources, and no hidden or encoded text.","My connector does not collect conversation data beyond what is needed for its function.","Public documentation for this connector will be live by the publish date."],"type":"string"},"description":"Anthropic directory policy acknowledgements. All items must be acknowledged before the claude.ai wizard allows\nsubmission. Each is an attestation you are legally agreeing to by submitting."},"additionalNotes":{"type":"string","description":"Anything else the review team should know about your connector. Optional."}}},"ChatgptSubmissionFormData":{"type":"object","properties":{"logoLight":{"type":"string","description":"Logo icon for light mode. Square PNG, no borders or rounded corners (clients apply circular cropping)."},"logoDark":{"type":"string","description":"Optional dark-mode logo icon. Square PNG, same specs as the light icon. Leave empty if the light icon also works on dark backgrounds."},"appName":{"type":"string","description":"The name users will see in ChatGPT and in the Plugin Directory."},"tagline":{"type":"string"},"description":{"type":"string","description":"Clear, engaging description highlighting what the plugin does and why people will love it. Appears publicly on the directory page. End it by naming the product categories or intents the plugin does NOT cover, so ChatGPT learns when not to route to it (define exclusions by absent categories or wrong intents, never by naming other brands)."},"category":{"enum":["BUSINESS","COLLABORATION","DESIGN","DEVELOPER_TOOLS","EDUCATION","ENTERTAINMENT","FINANCE","FOOD","LIFESTYLE","NEWS","PRODUCTIVITY","SHOPPING","TRAVEL"],"type":"string","description":"Category from the OpenAI taxonomy."},"developerName":{"type":"string","description":"Developer name shown publicly on the plugin's directory page."},"companyUrl":{"type":"string"},"supportChannel":{"type":"string"},"privacyPolicyUrl":{"type":"string"},"termsOfServiceUrl":{"type":"string"},"demoRecordingUrl":{"type":"string"},"appCommerceAndPurchasing":{"type":"boolean","description":"Checkbox: 'My plugin links or directs users out of ChatGPT to make purchases.' Defaults to false. Verify the plugin does not offer digital goods."},"serverUrl":{"type":"string"},"authentication":{"enum":["No auth needed","OAuth 2.0"],"type":"string","description":"OAuth 2.0 or No auth. OAuth configuration is auto-discovered from the MCP server's metadata."},"tools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"type":"string","description":"Human-friendly name for the tool, used in the UI. If not provided, `name` will be used."},"description":{"type":"string"},"annotations":{"type":"object","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"}}}},"required":["name"]},"description":"List of tools exposed by the MCP server (auto-populated from the production server's manifest)."},"toolJustifications":{"type":"array","items":{"type":"object","properties":{"toolName":{"type":"string"},"readOnlyJustification":{"type":"string","description":"One sentence on what the tool reads and returns."},"openWorldJustification":{"type":"string","description":"One sentence on whether the tool reaches external systems beyond your own service."},"destructiveJustification":{"type":"string","description":"One sentence on whether the tool changes data. For a read-only tool, state the full triad: \"No data is created, modified, or deleted.\""}},"required":["toolName","readOnlyJustification","openWorldJustification","destructiveJustification"],"description":"Per-tool justification of each MCP annotation value (one specific sentence per hint)."},"description":"Per-tool justification of `readOnlyHint`, `openWorldHint`, and `destructiveHint` annotation values. One short, specific sentence per hint describing what the tool actually does."},"skills":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"description":"A skill discovered on the MCP server, by name."},"description":"Skills the server exposes over MCP (auto-populated from the production server's manifest). Left unset when the server does not advertise the skills extension, which is a different state from advertising it and exposing none."},"testCases":{"type":"array","items":{"type":"object","properties":{"scenario":{"type":"string"},"userPrompt":{"type":"string"},"toolTriggered":{"type":"string","description":"The tool this prompt should invoke."},"expectedOutput":{"type":"string","description":"What the user should see, including post-interaction behaviour where relevant."}}}},"negativeTestCases":{"type":"array","items":{"type":"object","properties":{"scenario":{"type":"string"},"userPrompt":{"type":"string"}}}},"screenshots":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"url":{"type":"string"}},"required":["prompt","url"]}},"translations":{"type":"array","items":{"type":"object","properties":{"locale":{"enum":["am","ar","bg-BG","bn-BD","bs-BA","ca-ES","cs-CZ","da-DK","de-DE","el-GR","es-419","es-ES","et-EE","fi-FI","fr-CA","fr-FR","gu-IN","hi-IN","hr-HR","hu-HU","hy-AM","id-ID","is-IS","it-IT","ja-JP","ka-GE","kk","kn-IN","ko-KR","lt","lv-LV","mk-MK","ml","mn","mr-IN","ms-MY","my-MM","nb-NO","nl-NL","pa","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sk-SK","sl-SI","so-SO","sq-AL","sr-RS","sv-SE","sw-TZ","ta-IN","te-IN","th-TH","tl","tr-TR","uk-UA","ur","vi-VN","zh-CN","zh-HK","zh-TW"],"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"}},"required":["locale","tagline","description"]}},"allowedCountries":{"anyOf":[{"type":"object","properties":{"mode":{"const":"all"}},"required":["mode"]},{"type":"object","properties":{"mode":{"const":"allow"},"countries":{"type":"array","items":{"enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BR","BS","BT","BW","BZ","CA","CD","CF","CG","CH","CI","CL","CM","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FM","FO","FR","GA","GB","GD","GE","GF","GH","GL","GM","GN","GP","GQ","GR","GT","GW","GY","HN","HR","HT","HU","ID","IE","IL","IN","IQ","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NG","NI","NL","NO","NP","NR","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PS","PT","PW","PY","QA","RE","RO","RS","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SZ","TD","TF","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"],"type":"string"}}},"required":["mode","countries"]},{"type":"object","properties":{"mode":{"const":"block"},"countries":{"type":"array","items":{"enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BR","BS","BT","BW","BZ","CA","CD","CF","CG","CH","CI","CL","CM","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FM","FO","FR","GA","GB","GD","GE","GF","GH","GL","GM","GN","GP","GQ","GR","GT","GW","GY","HN","HR","HT","HU","ID","IE","IL","IN","IQ","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NG","NI","NL","NO","NP","NR","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PS","PT","PW","PY","QA","RE","RO","RS","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SZ","TD","TF","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"],"type":"string"}}},"required":["mode","countries"]}],"description":"Availability: all supported countries, or an allow-list / block-list of specific ones (ISO alpha-2)."},"releaseNotes":{"type":"string","description":"Publicly displayed on the plugin details page."}}},"ClaudeSubmissionFormDataUpdate":{"type":"object","properties":{"serverUrl":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"oneLiner":{"type":"string"},"description":{"type":"string"},"categories":{"type":"array","items":{"enum":["Productivity","Communication","Data & Analytics","Development tools","Financial Services","Consumer Health","Health & Life Sciences","Media & Entertainment","Commerce & Shopping","Legal","Sales and marketing","Creative","Nonprofit","Education","Other"],"type":"string"}},"iconUrl":{"type":"string"},"documentation":{"type":"string"},"support":{"type":"string"},"privacyPolicy":{"type":"string"},"screenshots":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"url":{"type":"string"}},"required":["prompt","url"]}},"primaryUseCases":{"type":"string","description":"Describe the main tasks users will accomplish with this connector, and include a few example prompts a user might\ntype. These may be shown publicly but are primarily used for internal review — reviewers test your server using them."},"connectionRequirements":{"type":"string","description":"What accounts, permissions, or setup a user needs before connecting (e.g. 'Requires a paid Acme account with admin\npermissions'). If there are genuinely no special requirements, say so explicitly."},"readWriteCapabilities":{"enum":["read_only","write_only","read_write"],"type":"string","description":"What your server can do:\n• 'read_only': retrieves data but never modifies it.\n• 'write_only': creates or modifies data but does not read it.\n• 'read_write': both retrieves and modifies data (most common)."},"companyName":{"type":"string","description":"The company or organization behind this connector — its legal name or publicly known product name."},"companyWebsite":{"type":"string"},"primaryContactName":{"type":"string","description":"Full name of the person Anthropic should contact about this submission. Receives review feedback and follow-up questions."},"primaryContactEmail":{"type":"string"},"primaryContactRole":{"type":"string","description":"The primary contact's role at the company (e.g. 'Engineer', 'Product Manager'). Optional."},"anthropicPointOfContact":{"type":"string","description":"If you've been working with someone at Anthropic, their name or email. Optional, can expedite review."},"authentication":{"enum":["oauth_dcr","oauth_cimd","oauth_anthropic_creds","custom_connection","none"],"type":"string","description":"How users authenticate with your server:\n• 'oauth_dcr': OAuth 2.0 + Dynamic Client Registration (RFC 7591) — clients register themselves.\n• 'oauth_cimd': OAuth 2.0 + Client ID Metadata Document — a published client_id metadata document.\n• 'oauth_anthropic_creds': OAuth 2.0 with Anthropic-held client credentials (a static client_id, and secret if needed).\n• 'custom_connection': users supply their own URL or client details at connection time (e.g. Snowflake).\n• 'none': no authentication (authless) — anyone can connect and call tools without credentials."},"partialAuth":{"type":"boolean","description":"Whether some tools return 401 and prompt for auth on demand while the server otherwise starts authless (partial auth)."},"apiOwnership":{"enum":["first_party","proxied","third_party"],"type":"string","description":"How your connector relates to the API it calls:\n• 'first_party': the MCP server calls your own production APIs.\n• 'proxied': calls go to a third-party API you're authorized to integrate (e.g. a Zapier-style integration).\n• 'third_party': calls a third-party API you don't control — typically blocks listing; explain in 'additionalNotes'."},"personalHealthData":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"other":{"type":"string"}},"required":["other"]}],"description":"Whether this connector accesses, processes, or stores personal health information.\nNo → false, Yes → true, or { other: explanation } when it depends on configuration."},"sponsoredContent":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"other":{"type":"string"}},"required":["other"]}],"description":"Whether this connector surfaces sponsored, promoted, or advertising content (prohibited in directory connectors).\nNo → false, Yes → true, or { other: explanation }."},"testInstructions":{"type":"string","description":"Clear test-account setup and access instructions for reviewers: every link, credential, and step needed to access\nthe MCP server autonomously. For accounts that need to be populated, provide test credentials granting access to a\nfully populated account."},"selfTested":{"type":"boolean","description":"Confirmation that you have run every tool via MCP Inspector or as a custom connector in Claude."},"policyAcknowledgements":{"type":"array","items":{"enum":["I have read and understand the MCP Directory developer guidelines.","My server calls our own first-party APIs (or APIs we legitimately proxy with permission).","My connector does not transfer money, cryptocurrency, or other financial assets on a user's behalf.","My connector does not use AI models to generate images, video, or audio.","Tool descriptions contain no instructions about model behavior, other tools, or external instruction sources, and no hidden or encoded text.","My connector does not collect conversation data beyond what is needed for its function.","Public documentation for this connector will be live by the publish date."],"type":"string"},"description":"Anthropic directory policy acknowledgements. All items must be acknowledged before the claude.ai wizard allows\nsubmission. Each is an attestation you are legally agreeing to by submitting."},"additionalNotes":{"type":"string","description":"Anything else the review team should know about your connector. Optional."}},"additionalProperties":false},"ChatgptSubmissionFormDataUpdate":{"type":"object","properties":{"logoLight":{"type":"string","description":"Logo icon for light mode. Square PNG, no borders or rounded corners (clients apply circular cropping)."},"logoDark":{"type":"string","description":"Optional dark-mode logo icon. Square PNG, same specs as the light icon. Leave empty if the light icon also works on dark backgrounds."},"appName":{"type":"string","description":"The name users will see in ChatGPT and in the Plugin Directory."},"tagline":{"type":"string"},"description":{"type":"string","description":"Clear, engaging description highlighting what the plugin does and why people will love it. Appears publicly on the directory page. End it by naming the product categories or intents the plugin does NOT cover, so ChatGPT learns when not to route to it (define exclusions by absent categories or wrong intents, never by naming other brands)."},"category":{"enum":["BUSINESS","COLLABORATION","DESIGN","DEVELOPER_TOOLS","EDUCATION","ENTERTAINMENT","FINANCE","FOOD","LIFESTYLE","NEWS","PRODUCTIVITY","SHOPPING","TRAVEL"],"type":"string","description":"Category from the OpenAI taxonomy."},"developerName":{"type":"string","description":"Developer name shown publicly on the plugin's directory page."},"companyUrl":{"type":"string"},"supportChannel":{"type":"string"},"privacyPolicyUrl":{"type":"string"},"termsOfServiceUrl":{"type":"string"},"demoRecordingUrl":{"type":"string"},"appCommerceAndPurchasing":{"type":"boolean","description":"Checkbox: 'My plugin links or directs users out of ChatGPT to make purchases.' Defaults to false. Verify the plugin does not offer digital goods."},"serverUrl":{"type":"string"},"authentication":{"enum":["No auth needed","OAuth 2.0"],"type":"string","description":"OAuth 2.0 or No auth. OAuth configuration is auto-discovered from the MCP server's metadata."},"tools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"type":"string","description":"Human-friendly name for the tool, used in the UI. If not provided, `name` will be used."},"description":{"type":"string"},"annotations":{"type":"object","properties":{"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"}}}},"required":["name"]},"description":"List of tools exposed by the MCP server (auto-populated from the production server's manifest)."},"toolJustifications":{"type":"array","items":{"type":"object","properties":{"toolName":{"type":"string"},"readOnlyJustification":{"type":"string","description":"One sentence on what the tool reads and returns."},"openWorldJustification":{"type":"string","description":"One sentence on whether the tool reaches external systems beyond your own service."},"destructiveJustification":{"type":"string","description":"One sentence on whether the tool changes data. For a read-only tool, state the full triad: \"No data is created, modified, or deleted.\""}},"required":["toolName","readOnlyJustification","openWorldJustification","destructiveJustification"],"description":"Per-tool justification of each MCP annotation value (one specific sentence per hint)."},"description":"Per-tool justification of `readOnlyHint`, `openWorldHint`, and `destructiveHint` annotation values. One short, specific sentence per hint describing what the tool actually does."},"skills":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"description":"A skill discovered on the MCP server, by name."},"description":"Skills the server exposes over MCP (auto-populated from the production server's manifest). Left unset when the server does not advertise the skills extension, which is a different state from advertising it and exposing none."},"testCases":{"type":"array","items":{"type":"object","properties":{"scenario":{"type":"string"},"userPrompt":{"type":"string"},"toolTriggered":{"type":"string","description":"The tool this prompt should invoke."},"expectedOutput":{"type":"string","description":"What the user should see, including post-interaction behaviour where relevant."}}}},"negativeTestCases":{"type":"array","items":{"type":"object","properties":{"scenario":{"type":"string"},"userPrompt":{"type":"string"}}}},"screenshots":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"url":{"type":"string"}},"required":["prompt","url"]}},"translations":{"type":"array","items":{"type":"object","properties":{"locale":{"enum":["am","ar","bg-BG","bn-BD","bs-BA","ca-ES","cs-CZ","da-DK","de-DE","el-GR","es-419","es-ES","et-EE","fi-FI","fr-CA","fr-FR","gu-IN","hi-IN","hr-HR","hu-HU","hy-AM","id-ID","is-IS","it-IT","ja-JP","ka-GE","kk","kn-IN","ko-KR","lt","lv-LV","mk-MK","ml","mn","mr-IN","ms-MY","my-MM","nb-NO","nl-NL","pa","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sk-SK","sl-SI","so-SO","sq-AL","sr-RS","sv-SE","sw-TZ","ta-IN","te-IN","th-TH","tl","tr-TR","uk-UA","ur","vi-VN","zh-CN","zh-HK","zh-TW"],"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"}},"required":["locale","tagline","description"]}},"allowedCountries":{"anyOf":[{"type":"object","properties":{"mode":{"const":"all"}},"required":["mode"]},{"type":"object","properties":{"mode":{"const":"allow"},"countries":{"type":"array","items":{"enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BR","BS","BT","BW","BZ","CA","CD","CF","CG","CH","CI","CL","CM","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FM","FO","FR","GA","GB","GD","GE","GF","GH","GL","GM","GN","GP","GQ","GR","GT","GW","GY","HN","HR","HT","HU","ID","IE","IL","IN","IQ","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NG","NI","NL","NO","NP","NR","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PS","PT","PW","PY","QA","RE","RO","RS","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SZ","TD","TF","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"],"type":"string"}}},"required":["mode","countries"]},{"type":"object","properties":{"mode":{"const":"block"},"countries":{"type":"array","items":{"enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BR","BS","BT","BW","BZ","CA","CD","CF","CG","CH","CI","CL","CM","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FM","FO","FR","GA","GB","GD","GE","GF","GH","GL","GM","GN","GP","GQ","GR","GT","GW","GY","HN","HR","HT","HU","ID","IE","IL","IN","IQ","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NG","NI","NL","NO","NP","NR","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PS","PT","PW","PY","QA","RE","RO","RS","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SZ","TD","TF","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"],"type":"string"}}},"required":["mode","countries"]}],"description":"Availability: all supported countries, or an allow-list / block-list of specific ones (ISO alpha-2)."},"releaseNotes":{"type":"string","description":"Publicly displayed on the plugin details page."}},"additionalProperties":false}}},"openapi":"3.1.1","paths":{"/v1/teams":{"get":{"operationId":"teams.list.v1","summary":"List teams","description":"List all teams for the authenticated user","tags":["teams"],"responses":{"200":{"description":"The list of teams","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"hasStripeAccount":{"type":"boolean"}},"required":["id","name","createdAt","hasStripeAccount"]}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/teams/{teamId}/usage":{"get":{"operationId":"teams.getUsage.v1","summary":"Get team usage","description":"Get the MCP request usage of a team for its current billing window. A team that has made no request in the window reports zero.","tags":["teams"],"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the team"}}],"responses":{"200":{"description":"The current billing window usage","content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string"},"plan":{"anyOf":[{"enum":["pro","business","enterprise"],"type":"string"},{"type":"null"}],"description":"The plan in force for the window, null on the Free plan"},"periodStart":{"type":"string","format":"date-time","x-native-type":"date","description":"Start of the current billing window"},"periodEnd":{"type":"string","format":"date-time","x-native-type":"date","description":"End of the current billing window"},"requestCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"MCP requests settled during the current billing window"},"includedRequests":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Requests included in the plan for one window, null when the allowance is contract-specific"}},"required":["teamId","plan","periodStart","periodEnd","requestCount","includedRequests"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/analytics/{projectId}":{"get":{"operationId":"analytics.get.v1","summary":"Get project analytics","description":"Get analytics data for a project over a time range","tags":["analytics"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the project"}},{"name":"startTimestamp","in":"query","required":true,"schema":{"type":"number","description":"Start timestamp in milliseconds"},"allowEmptyValue":true,"allowReserved":true},{"name":"endTimestamp","in":"query","required":true,"schema":{"type":"number","description":"End timestamp in milliseconds"},"allowEmptyValue":true,"allowReserved":true},{"name":"timeZone","in":"query","required":true,"schema":{"type":"string","description":"IANA timezone (e.g. Europe/Paris)"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"The project analytics data","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"object","properties":{"startTimestamp":{"type":"number"},"endTimestamp":{"type":"number"},"timeZone":{"type":"string"},"startDate":{"type":"string","format":"date-time","x-native-type":"date"},"interval":{"type":"string"}},"required":["startTimestamp","endTimestamp","timeZone","startDate","interval"]},"timeSeries":{"type":"object","properties":{"sessions_count":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number"},"categories":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["timestamp","categories"]}},"requests_count":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number"},"categories":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["timestamp","categories"]}},"requests_latency_mean":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number"},"categories":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["timestamp","categories"]}},"tool_errors":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number"},"categories":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["timestamp","categories"]}},"mcp_errors":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number"},"categories":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["timestamp","categories"]}},"output_token_mean":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number"},"categories":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["timestamp","categories"]}},"task_count":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number"},"categories":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["timestamp","categories"]}}},"required":["sessions_count","requests_count","requests_latency_mean","tool_errors","mcp_errors","output_token_mean","task_count"]}},"required":["metadata","timeSeries"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/intents":{"get":{"operationId":"intents.list.v1","summary":"List intents","description":"List grouped user intents for an environment over a time range","tags":["insights"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"since","in":"query","schema":{"type":"string","default":"7d","description":"Start time — ISO 8601 (2024-01-01T00:00:00Z) or relative (1h, 30m, 2d)"},"allowEmptyValue":true,"allowReserved":true},{"name":"until","in":"query","schema":{"type":"string","description":"End time — ISO 8601 or relative"},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"allowEmptyValue":true,"allowReserved":true},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"allowEmptyValue":true,"allowReserved":true},{"name":"tools","in":"query","schema":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"clientIds","in":"query","schema":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"categoryIds","in":"query","schema":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"sortDir","in":"query","schema":{"enum":["asc","desc"],"type":"string","default":"desc"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"The grouped user intents","content":{"application/json":{"schema":{"type":"object","properties":{"intents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"intentIds":{"type":"array","minItems":1,"items":{"type":"string"}},"environmentId":{"type":"string"},"message":{"type":"string"},"toolName":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"occurrenceCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"clientName":{"anyOf":[{"type":"string"},{"type":"null"}]},"clientId":{"anyOf":[{"type":"string"},{"type":"null"}]},"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"enum":["red","orange","yellow","green","blue","purple","pink","gray"],"type":"string"}},"required":["id","name","color"]}}},"required":["id","intentIds","environmentId","message","toolName","createdAt","occurrenceCount","clientName","clientId","categories"]}},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["intents","totalCount"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/intent-categories":{"get":{"operationId":"intentCategories.list.v1","summary":"List intent categories","description":"List intent categories for an environment, including how many intents each category is linked to","tags":["insights"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"responses":{"200":{"description":"The intent categories","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"enum":["red","orange","yellow","green","blue","purple","pink","gray"],"type":"string"},"intentCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","name","color","intentCount"]}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"post":{"operationId":"intentCategories.create.v1","summary":"Create an intent category","description":"Create an intent category, optionally linking it to existing intents","tags":["insights"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"The category name"},"color":{"enum":["red","orange","yellow","green","blue","purple","pink","gray"],"type":"string","description":"The category color; derived from the name when omitted"},"intentIds":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1},"description":"IDs of intents to link to the new category"}},"required":["name"]}}}},"responses":{"200":{"description":"The created intent category","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"environmentId":{"type":"string"},"name":{"type":"string"},"color":{"enum":["red","orange","yellow","green","blue","purple","pink","gray"],"type":"string"}},"required":["id","createdAt","environmentId","name","color"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/intent-categories/{categoryId}":{"patch":{"operationId":"intentCategories.update.v1","summary":"Update an intent category","description":"Rename or recolor an intent category","tags":["insights"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"categoryId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the category"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"The category name"},"color":{"enum":["red","orange","yellow","green","blue","purple","pink","gray"],"type":"string","description":"The category color"}}}}}},"responses":{"200":{"description":"The updated intent category","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"environmentId":{"type":"string"},"name":{"type":"string"},"color":{"enum":["red","orange","yellow","green","blue","purple","pink","gray"],"type":"string"}},"required":["id","createdAt","environmentId","name","color"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"delete":{"operationId":"intentCategories.delete.v1","summary":"Delete an intent category","description":"Delete an intent category; its intents are unlinked but not deleted","tags":["insights"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"categoryId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the category"}}],"responses":{"200":{"description":"The intent category has been deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/intent-categories/{categoryId}/link":{"post":{"operationId":"intentCategories.link.v1","summary":"Link an intent category","description":"Link an intent category to intents; already linked intents are ignored","tags":["insights"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"categoryId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the category"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"intentIds":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1},"description":"IDs of the intents to categorize"}},"required":["intentIds"]}}}},"responses":{"200":{"description":"The intents have been linked successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/intent-categories/{categoryId}/unlink":{"post":{"operationId":"intentCategories.unlink.v1","summary":"Unlink an intent category","description":"Unlink an intent category from intents; intents without the category are ignored","tags":["insights"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"categoryId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the category"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"intentIds":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1},"description":"IDs of the intents to categorize"}},"required":["intentIds"]}}}},"responses":{"200":{"description":"The intents have been unlinked successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/feedbacks":{"get":{"operationId":"feedbacks.list.v1","summary":"List feedbacks","description":"List user feedback for an environment over a time range","tags":["insights"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"since","in":"query","schema":{"type":"string","default":"7d","description":"Start time — ISO 8601 (2024-01-01T00:00:00Z) or relative (1h, 30m, 2d)"},"allowEmptyValue":true,"allowReserved":true},{"name":"until","in":"query","schema":{"type":"string","description":"End time — ISO 8601 or relative"},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"allowEmptyValue":true,"allowReserved":true},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"allowEmptyValue":true,"allowReserved":true},{"name":"clientIds","in":"query","schema":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"The user feedback","content":{"application/json":{"schema":{"type":"object","properties":{"feedbacks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"environmentId":{"type":"string"},"content":{"type":"string"},"source":{"enum":["model","user"],"type":"string"},"clientName":{"anyOf":[{"type":"string"},{"type":"null"}]},"clientId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","createdAt","environmentId","content","source","clientName","clientId"]}},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["feedbacks","totalCount"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/projects/{projectId}/deployments":{"get":{"operationId":"deployments.list.v1","summary":"List project deployments","description":"List all deployments for a project","tags":["deployments"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the project"}},{"name":"status","in":"query","schema":{"type":"array","items":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"description":"Filter by one or more statuses"},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"environmentId","in":"query","schema":{"type":"string","description":"Filter by environment ID"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"The list of deployments","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"sourceRef":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorUsername":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorAvatarUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"environmentId":{"type":"string"},"environmentName":{"type":"string"},"isCurrent":{"type":"boolean"},"deploymentPageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","status","sourceRef","sourceCommitId","sourceCommitMessage","authorUsername","authorAvatarUrl","startedAt","completedAt","environmentId","environmentName","isCurrent","deploymentPageUrl"]}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/deployments/{deploymentId}":{"get":{"operationId":"deployments.get.v1","summary":"Get a deployment","description":"Get a deployment by ID","tags":["deployments"],"parameters":[{"name":"deploymentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the deployment"}}],"responses":{"200":{"description":"The deployment details","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"sourceRef":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorUsername":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorAvatarUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"environmentId":{"type":"string"},"environmentName":{"type":"string"},"isCurrent":{"type":"boolean"},"deploymentPageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","status","sourceRef","sourceCommitId","sourceCommitMessage","authorUsername","authorAvatarUrl","startedAt","completedAt","environmentId","environmentName","isCurrent","deploymentPageUrl"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/deployments/{deploymentId}/logs":{"get":{"operationId":"deployments.getLogs.v1","summary":"Get deployment logs","description":"Get the logs for a deployment","tags":["deployments"],"parameters":[{"name":"deploymentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the deployment"}}],"responses":{"200":{"description":"The deployment logs","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","x-native-type":"date"},"content":{"type":"string"}}}},"hasMoreLogs":{"type":"boolean"}},"required":["logs","hasMoreLogs"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments":{"post":{"operationId":"environments.create.v1","summary":"Create an environment","description":"Create an environment for a project","tags":["environments"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"The ID of the project to create the environment for"},"name":{"type":"string","minLength":1,"description":"The name of the environment"},"sourceBranch":{"type":"string","minLength":1,"description":"The branch used to build the environment"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":2,"pattern":"^[a-zA-Z]([a-zA-Z0-9_])+$"},"value":{"type":"string","minLength":1},"isSecret":{"type":"boolean","default":false}},"required":["key","value"]},"default":[]}},"required":["projectId","name","sourceBranch"]}}}},"responses":{"200":{"description":"The environment has been created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"sourceBranch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The branch used to build the environment"},"urls":{"type":"array","items":{"type":"string","format":"uri"},"description":"The URLs of the MCP server"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"projectId":{"type":"string","description":"The ID of the project the environment belongs to"}},"required":["id","name","sourceBranch","urls","createdAt","projectId"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}":{"get":{"operationId":"environments.get.v1","summary":"Get an environment","description":"Get an environment by ID","tags":["environments"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"responses":{"200":{"description":"The environment details","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"sourceBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpServerUrl":{"type":"string"},"domains":{"type":"array","items":{"type":"string","format":"hostname"}},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"projectId":{"type":"string"}},"required":["id","name","sourceBranch","mcpServerUrl","domains","createdAt","projectId"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"delete":{"operationId":"environments.delete.v1","summary":"Delete an environment","description":"All environments can be deleted except the production environment. This operation is not reversible: associated logs, analytics, and metrics are deleted as well.","tags":["environments"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"responses":{"200":{"description":"The environment has been deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/deploy":{"post":{"operationId":"environments.deploy.v1","summary":"Deploy an environment","description":"Deploy an environment","tags":["environments"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment to deploy"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The token to identify the source archive"},"settings":{"type":"object","properties":{"installCommand":{"type":"string"},"buildCommand":{"type":"string"},"buildOutputDir":{"type":"string"},"startCommand":{"type":"string"},"transport":{"enum":["stdio","sse","streamablehttp"],"type":"string"}},"required":["transport"],"description":"Project settings detected by the client from the source. When provided, the server skips downloading and extracting the source archive to detect them."}}}}}},"responses":{"200":{"description":"The environment has been deployed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"sourceRef":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorUsername":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorAvatarUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"environmentId":{"type":"string"},"environmentName":{"type":"string"},"isCurrent":{"type":"boolean"},"deploymentPageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","status","sourceRef","sourceCommitId","sourceCommitMessage","authorUsername","authorAvatarUrl","startedAt","completedAt","environmentId","environmentName","isCurrent","deploymentPageUrl"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"409":{"description":"409","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"Conflict"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/logs":{"get":{"operationId":"environments.getLogs.v1","summary":"Get logs","description":"Get logs for an environment","tags":["environments"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"since","in":"query","schema":{"type":"string","description":"Start time — ISO 8601 (2024-01-01T00:00:00Z) or relative (1h, 30m, 2d)"},"allowEmptyValue":true,"allowReserved":true},{"name":"until","in":"query","schema":{"type":"string","description":"End time — ISO 8601 or relative"},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000,"default":1000,"description":"Maximum number of log entries to return."},"allowEmptyValue":true,"allowReserved":true},{"name":"level","in":"query","schema":{"type":"array","items":{"enum":["INFO","ERROR","WARNING","DEBUG"],"type":"string"},"description":"Filter by log level"},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"search","in":"query","schema":{"type":"string","maxLength":240,"description":"Term to search for in log content"},"allowEmptyValue":true,"allowReserved":true},{"name":"nextToken","in":"query","schema":{"type":"string","description":"Pagination token from a previous response"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"The logs","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","x-native-type":"date"},"type":{"enum":["START","END","INFO","ERROR","WARNING","DEBUG"],"type":"string"},"requestId":{"type":"string"},"content":{"type":"string"},"method":{"type":"string"},"durationInMs":{"type":"number"}},"required":["timestamp","type","requestId"]}},"nextToken":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["logs","nextToken"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/latest-logs":{"get":{"operationId":"environments.getLatestLogs.v1","summary":"Get latest logs","description":"Get the N most recent logs for an environment","tags":["environments"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"description":"Number of most recent log entries to return"},"allowEmptyValue":true,"allowReserved":true},{"name":"level","in":"query","schema":{"type":"array","items":{"enum":["INFO","ERROR","WARNING","DEBUG"],"type":"string"},"description":"Filter by log level"},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"search","in":"query","schema":{"type":"string","maxLength":240,"description":"Term to search for in log content"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"The latest logs","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","x-native-type":"date"},"type":{"enum":["START","END","INFO","ERROR","WARNING","DEBUG"],"type":"string"},"requestId":{"type":"string"},"content":{"type":"string"},"method":{"type":"string"},"durationInMs":{"type":"number"}},"required":["timestamp","type","requestId"]}}},"required":["logs"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/environment-variables":{"get":{"operationId":"environmentVariables.list.v1","summary":"List environment variables","description":"List all environment variables for an environment","tags":["environments"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"responses":{"200":{"description":"The list of environment variables","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"},"isSecret":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","key","value","isSecret","createdAt"]}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"post":{"operationId":"environmentVariables.create.v1","summary":"Add environment variables","description":"Add one or more environment variables to an environment","tags":["environments"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"environmentVariables":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":2,"pattern":"^[a-zA-Z]([a-zA-Z0-9_])+$"},"value":{"type":"string","minLength":1},"isSecret":{"type":"boolean","default":false}},"required":["key","value"]}}},"required":["environmentVariables"]}}}},"responses":{"200":{"description":"The environment variables have been added successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environment-variables/{environmentVariableId}":{"patch":{"operationId":"environmentVariables.update.v1","summary":"Update an environment variable","description":"Update an environment variable by ID","tags":["environments"],"parameters":[{"name":"environmentVariableId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment variable"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":2,"pattern":"^[a-zA-Z]([a-zA-Z0-9_])+$"},"value":{"type":"string","minLength":1},"isSecret":{"type":"boolean","default":false}},"required":["key"]}}}},"responses":{"200":{"description":"The environment variable has been updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"delete":{"operationId":"environmentVariables.delete.v1","summary":"Delete an environment variable","description":"Delete an environment variable by ID","tags":["environments"],"parameters":[{"name":"environmentVariableId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment variable"}}],"responses":{"200":{"description":"The environment variable has been deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/telemetry-destinations":{"get":{"operationId":"telemetryDestinations.list.v1","summary":"List telemetry destinations","description":"List the OTLP destinations configured for an environment. Secret header values are never returned.","tags":["telemetry"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"responses":{"200":{"description":"The list of telemetry destinations","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"signal":{"enum":["logs","metrics","traces"],"type":"string"},"endpoint":{"type":"string","minLength":1,"maxLength":2048},"protocol":{"enum":["http/protobuf","http/json"],"type":"string"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+\\-.^_`|~]+$"},"value":{"type":"null"},"isSecret":{"const":true}},"required":["id","name","value","isSecret"]},{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+\\-.^_`|~]+$"},"value":{"type":"string","maxLength":2048},"isSecret":{"const":false}},"required":["id","name","value","isSecret"]}]}},"status":{"enum":["active","suspended"],"type":"string"},"lastFailureReason":{"anyOf":[{"enum":["credentials","wrong-path","wrong-protocol","invalid-payload","partial-rejection","blocked-target","timeout","unreachable","receiver-error","unexpected-status"],"type":"string"},{"type":"null"}]},"isScopedToIntentionalRequestsOnly":{"type":"boolean"}},"required":["id","signal","endpoint","protocol","headers","status","lastFailureReason","isScopedToIntentionalRequestsOnly"]}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"post":{"operationId":"telemetryDestinations.create.v1","summary":"Create a telemetry destination","description":"Verify and save an OTLP destination for logs, metrics, or traces.","tags":["telemetry"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signal":{"enum":["logs","metrics","traces"],"type":"string"},"endpoint":{"type":"string","minLength":1,"maxLength":2048},"protocol":{"enum":["http/protobuf","http/json"],"type":"string","default":"http/protobuf"},"isScopedToIntentionalRequestsOnly":{"type":"boolean","default":false},"headers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+\\-.^_`|~]+$"},"value":{"type":"string","minLength":1,"maxLength":2048},"isSecret":{"type":"boolean"}},"required":["name","value","isSecret"]},"default":[]}},"required":["signal","endpoint"]}}}},"responses":{"200":{"description":"The telemetry destination has been created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"signal":{"enum":["logs","metrics","traces"],"type":"string"},"endpoint":{"type":"string","minLength":1,"maxLength":2048},"protocol":{"enum":["http/protobuf","http/json"],"type":"string"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+\\-.^_`|~]+$"},"value":{"type":"null"},"isSecret":{"const":true}},"required":["id","name","value","isSecret"]},{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+\\-.^_`|~]+$"},"value":{"type":"string","maxLength":2048},"isSecret":{"const":false}},"required":["id","name","value","isSecret"]}]}},"status":{"enum":["active","suspended"],"type":"string"},"lastFailureReason":{"anyOf":[{"enum":["credentials","wrong-path","wrong-protocol","invalid-payload","partial-rejection","blocked-target","timeout","unreachable","receiver-error","unexpected-status"],"type":"string"},{"type":"null"}]},"isScopedToIntentionalRequestsOnly":{"type":"boolean"}},"required":["id","signal","endpoint","protocol","headers","status","lastFailureReason","isScopedToIntentionalRequestsOnly"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":true},"code":{"const":"OTLP_DESTINATION_UNVERIFIED"},"status":{"const":400},"message":{"type":"string","default":"OTLP_DESTINATION_UNVERIFIED"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"500":{"description":"500","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"INTERNAL_SERVER_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Internal Server Error"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/telemetry-destinations/{destinationId}":{"patch":{"operationId":"telemetryDestinations.update.v1","summary":"Update a telemetry destination","description":"Verify and save changes to an OTLP destination. Omit headers to keep them unchanged; omit the value of an existing header to preserve it. A secret header value must be re-entered when the endpoint changes.","tags":["telemetry"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"destinationId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the telemetry destination"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"endpoint":{"type":"string","minLength":1,"maxLength":2048},"protocol":{"enum":["http/protobuf","http/json"],"type":"string"},"isScopedToIntentionalRequestsOnly":{"type":"boolean"},"headers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+\\-.^_`|~]+$"},"value":{"type":"string","maxLength":2048},"isSecret":{"type":"boolean"}},"required":["name","isSecret"]}}}}}}},"responses":{"200":{"description":"The telemetry destination has been updated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"signal":{"enum":["logs","metrics","traces"],"type":"string"},"endpoint":{"type":"string","minLength":1,"maxLength":2048},"protocol":{"enum":["http/protobuf","http/json"],"type":"string"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+\\-.^_`|~]+$"},"value":{"type":"null"},"isSecret":{"const":true}},"required":["id","name","value","isSecret"]},{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9!#$%&'*+\\-.^_`|~]+$"},"value":{"type":"string","maxLength":2048},"isSecret":{"const":false}},"required":["id","name","value","isSecret"]}]}},"status":{"enum":["active","suspended"],"type":"string"},"lastFailureReason":{"anyOf":[{"enum":["credentials","wrong-path","wrong-protocol","invalid-payload","partial-rejection","blocked-target","timeout","unreachable","receiver-error","unexpected-status"],"type":"string"},{"type":"null"}]},"isScopedToIntentionalRequestsOnly":{"type":"boolean"}},"required":["id","signal","endpoint","protocol","headers","status","lastFailureReason","isScopedToIntentionalRequestsOnly"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":true},"code":{"const":"OTLP_DESTINATION_UNVERIFIED"},"status":{"const":400},"message":{"type":"string","default":"OTLP_DESTINATION_UNVERIFIED"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"delete":{"operationId":"telemetryDestinations.delete.v1","summary":"Delete a telemetry destination","description":"Delete an OTLP destination from an environment.","tags":["telemetry"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}},{"name":"destinationId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the telemetry destination"}}],"responses":{"200":{"description":"The telemetry destination has been deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"500":{"description":"500","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"INTERNAL_SERVER_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Internal Server Error"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/projects/{projectId}":{"patch":{"operationId":"projects.update.v1","summary":"Update a project","description":"Update project settings","tags":["projects"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the project"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"The new name for the project"},"sourceRepository":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The source repository to connect to the project"}}}}}},"responses":{"200":{"description":"The project has been updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"teamId":{"type":"string"},"sourceRepository":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtime":{"enum":["python3.13","python3.14","node22","node24"],"type":"string"},"transport":{"anyOf":[{"enum":["stdio","sse","streamablehttp"],"type":"string"},{"type":"null"}]},"rootDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildOutputDir":{"anyOf":[{"type":"string"},{"type":"null"}]},"installCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"startCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"productionEnvironment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"mcpServerUrl":{"type":"string"},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"status":{"enum":["ongoing","deployed","failed"],"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["domain","status","createdAt"]}},"latestDeployment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"sourceCommitId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["id","status","sourceCommitId","sourceCommitMessage","completedAt"]},{"type":"null"}]}},"required":["id","name","mcpServerUrl","domains","latestDeployment"]},{"type":"null"}]},"environments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"sourceBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpServerUrl":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"projectId":{"type":"string"},"latestDeployment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"sourceCommitId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["id","status","sourceCommitId","sourceCommitMessage","completedAt"]},{"type":"null"}]}},"required":["id","name","sourceBranch","mcpServerUrl","createdAt","projectId","latestDeployment"]}}},"required":["id","name","teamId","sourceRepository","runtime","transport","rootDirectory","buildCommand","buildOutputDir","installCommand","startCommand","createdAt","productionEnvironment","environments"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"get":{"operationId":"projects.get.v1","summary":"Get a project","description":"Get a project by ID","tags":["projects"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the project"}}],"responses":{"200":{"description":"The project details","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"teamId":{"type":"string"},"sourceRepository":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtime":{"enum":["python3.13","python3.14","node22","node24"],"type":"string"},"transport":{"anyOf":[{"enum":["stdio","sse","streamablehttp"],"type":"string"},{"type":"null"}]},"rootDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildOutputDir":{"anyOf":[{"type":"string"},{"type":"null"}]},"installCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"startCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"productionEnvironment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"mcpServerUrl":{"type":"string"},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"status":{"enum":["ongoing","deployed","failed"],"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["domain","status","createdAt"]}},"latestDeployment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"sourceCommitId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["id","status","sourceCommitId","sourceCommitMessage","completedAt"]},{"type":"null"}]}},"required":["id","name","mcpServerUrl","domains","latestDeployment"]},{"type":"null"}]},"environments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"sourceBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpServerUrl":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"projectId":{"type":"string"},"latestDeployment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"sourceCommitId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["id","status","sourceCommitId","sourceCommitMessage","completedAt"]},{"type":"null"}]}},"required":["id","name","sourceBranch","mcpServerUrl","createdAt","projectId","latestDeployment"]}}},"required":["id","name","teamId","sourceRepository","runtime","transport","rootDirectory","buildCommand","buildOutputDir","installCommand","startCommand","createdAt","productionEnvironment","environments"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"delete":{"operationId":"projects.delete.v1","summary":"Delete a project","description":"Delete a project and all its environments","tags":["projects"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the project"}}],"responses":{"200":{"description":"The project has been deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/projects":{"get":{"operationId":"projects.list.v1","summary":"List projects","description":"List all projects for a team","tags":["projects"],"parameters":[{"name":"teamId","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"The list of projects","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"teamId":{"type":"string"},"sourceRepository":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtime":{"enum":["python3.13","python3.14","node22","node24"],"type":"string"},"transport":{"anyOf":[{"enum":["stdio","sse","streamablehttp"],"type":"string"},{"type":"null"}]},"rootDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildOutputDir":{"anyOf":[{"type":"string"},{"type":"null"}]},"installCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"startCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"productionEnvironment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"mcpServerUrl":{"type":"string"},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"status":{"enum":["ongoing","deployed","failed"],"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["domain","status","createdAt"]}},"latestDeployment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"sourceCommitId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["id","status","sourceCommitId","sourceCommitMessage","completedAt"]},{"type":"null"}]}},"required":["id","name","mcpServerUrl","domains","latestDeployment"]},{"type":"null"}]},"environments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"sourceBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpServerUrl":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"projectId":{"type":"string"},"latestDeployment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"enum":["ongoing","deployed","failed","canceled"],"type":"string"},"sourceCommitId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["id","status","sourceCommitId","sourceCommitMessage","completedAt"]},{"type":"null"}]}},"required":["id","name","sourceBranch","mcpServerUrl","createdAt","projectId","latestDeployment"]}}},"required":["id","name","teamId","sourceRepository","runtime","transport","rootDirectory","buildCommand","buildOutputDir","installCommand","startCommand","createdAt","productionEnvironment","environments"]}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"post":{"operationId":"projects.create.v1","summary":"Create a project","description":"Create a project for a team","tags":["projects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":100},"sourceRepository":{"type":"string"},"branchName":{"type":"string","minLength":1},"runtime":{"enum":["python3.13","python3.14","node22","node24"],"type":"string"},"transport":{"enum":["stdio","sse","streamablehttp"],"type":"string"},"rootDirectory":{"type":"string"},"settings":{"type":"object","properties":{"installCommand":{"type":"string"},"buildCommand":{"type":"string"},"buildOutputDir":{"type":"string"},"startCommand":{"type":"string"}},"default":{}},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":2,"pattern":"^[a-zA-Z]([a-zA-Z0-9_])+$"},"value":{"type":"string","minLength":1},"isSecret":{"type":"boolean","default":false}},"required":["key","value"]},"default":[]}},"required":["name","runtime"]}}}},"responses":{"200":{"description":"The project has been created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"teamId":{"type":"string"},"environments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"productionEnvironment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},{"type":"null"}]},"sourceRepository":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtime":{"enum":["python3.13","python3.14","node22","node24"],"type":"string"},"transport":{"anyOf":[{"enum":["stdio","sse","streamablehttp"],"type":"string"},{"type":"null"}]},"rootDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildOutputDir":{"anyOf":[{"type":"string"},{"type":"null"}]},"installCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"startCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","name","teamId","environments","productionEnvironment","sourceRepository","runtime","transport","rootDirectory","buildCommand","buildOutputDir","installCommand","startCommand","createdAt"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/environments/{environmentId}/playground":{"get":{"operationId":"playground.get.v1","summary":"Get playground configuration","description":"Get the playground configuration for an environment","tags":["environments"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"responses":{"200":{"description":"The playground configuration","content":{"application/json":{"schema":{"type":"object","properties":{"isPlaygroundEnabled":{"type":"boolean"},"serverMetadata":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"headers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"isRequired":{"type":"boolean"},"isSecret":{"type":"boolean"}},"required":["name","description","isRequired","isSecret"]}},"examplePrompts":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":100},"prompt":{"type":"string","minLength":1,"maxLength":500}},"required":["title","prompt"]}}},"required":["name","description","headers","examplePrompts"]},{"type":"null"}]}},"required":["isPlaygroundEnabled","serverMetadata"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"put":{"operationId":"playground.upsert.v1","summary":"Update playground configuration","description":"Update the playground configuration for an environment. All fields are optional — only provided fields are updated.","tags":["environments"],"parameters":[{"name":"environmentId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the environment"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"isPlaygroundEnabled":{"type":"boolean"},"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","minLength":1,"maxLength":500},"headers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":200},"isRequired":{"type":"boolean","default":false},"isSecret":{"type":"boolean","default":false}},"required":["name","description"]}},"examplePrompts":{"type":"array","maxItems":5,"items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":100},"prompt":{"type":"string","minLength":1,"maxLength":500}},"required":["title","prompt"]}}}}}}},"responses":{"200":{"description":"The updated playground configuration","content":{"application/json":{"schema":{"type":"object","properties":{"isPlaygroundEnabled":{"type":"boolean"},"serverMetadata":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"headers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"isRequired":{"type":"boolean"},"isSecret":{"type":"boolean"}},"required":["name","description","isRequired","isSecret"]}},"examplePrompts":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":100},"prompt":{"type":"string","minLength":1,"maxLength":500}},"required":["title","prompt"]}}},"required":["name","description","headers","examplePrompts"]},{"type":"null"}]}},"required":["isPlaygroundEnabled","serverMetadata"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/tunnels/ticket":{"get":{"operationId":"tunnels.getTicket.v1","summary":"Get a tunnel ticket","description":"Get a signed ticket for establishing a tunnel connection. Requires user authentication (API keys are not supported).","tags":["tunnels"],"responses":{"200":{"description":"The tunnel ticket","content":{"application/json":{"schema":{"type":"object","properties":{"subdomain":{"type":"string","description":"The subdomain assigned to the user"},"ticket":{"type":"string","description":"The signed tunnel ticket"},"tunnelHost":{"type":"string","description":"The tunnel host to connect to"}},"required":["subdomain","ticket","tunnelHost"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"403":{"description":"403","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Forbidden"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/distribution/publish":{"post":{"operationId":"distribution.publish.v1","summary":"Publish a server to the MCP registry","tags":["distribution"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"domain":{"type":"string"},"title":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","minLength":1,"maxLength":100},"websiteUrl":{"type":"string","maxLength":255,"format":"uri"},"iconSrc":{"type":"string","maxLength":255,"format":"uri"},"dryRun":{"type":"boolean"}},"required":["projectId","domain","title","description"]}}}},"responses":{"200":{"description":"The server has been published successfully","content":{"application/json":{"schema":{"type":"object","properties":{"serverFields":{"type":"object","properties":{"$schema":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"version":{"type":"string"},"title":{"type":"string"},"websiteUrl":{"type":"string","format":"uri"},"icons":{"type":"array","items":{"type":"object","properties":{"src":{"type":"string","format":"uri"},"mimeType":{"type":"string"},"sizes":{"type":"array","items":{"type":"string"}}},"required":["src"]}},"remotes":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"url":{"type":"string","format":"uri"},"headers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"isRequired":{"type":"boolean"},"isSecret":{"type":"boolean"}},"required":["name","description"]}}},"required":["type"]}}},"required":["$schema","name","description"]}},"required":["serverFields"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/distribution/get":{"get":{"operationId":"distribution.get.v1","summary":"Get server info","description":"Get info about a server","tags":["distribution"],"parameters":[{"name":"projectId","in":"query","required":true,"schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"domain","in":"query","required":true,"schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"The server info","content":{"application/json":{"schema":{"type":"object","properties":{"serverFields":{"type":"object","properties":{"$schema":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"version":{"type":"string"},"title":{"type":"string"},"websiteUrl":{"type":"string","format":"uri"},"icons":{"type":"array","items":{"type":"object","properties":{"src":{"type":"string","format":"uri"},"mimeType":{"type":"string"},"sizes":{"type":"array","items":{"type":"string"}}},"required":["src"]}},"remotes":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"url":{"type":"string","format":"uri"},"headers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"isRequired":{"type":"boolean"},"isSecret":{"type":"boolean"}},"required":["name","description"]}}},"required":["type"]}}},"required":["$schema","name","description"]}},"required":["serverFields"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/beacon/audits":{"post":{"operationId":"beacon.create.v1","summary":"Create a beacon audit","description":"Audit an MCP server for spec compliance and AI client compatibility","tags":["beacon"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targetUrl":{"type":"string","format":"uri","description":"The HTTPS URL of the MCP server to audit"},"teamId":{"type":"string","description":"The team ID to associate the audit with"},"projectId":{"type":"string","description":"The project ID to associate the audit with"},"excludeCategories":{"type":"array","items":{"enum":["connectivity","tool-metadata","resource-metadata","performance","e2e"],"type":"string"},"description":"Check categories to exclude from the audit"}},"required":["targetUrl"]}}}},"responses":{"200":{"description":"The audit has been created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":true},"code":{"const":"DNS_RESOLUTION_FAILED"},"status":{"const":400},"message":{"type":"string","default":"DNS_RESOLUTION_FAILED"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/beacon/audits/{auditId}":{"get":{"operationId":"beacon.get.v1","summary":"Get a beacon audit","description":"Get a beacon audit by ID, including the report if completed","tags":["beacon"],"parameters":[{"name":"auditId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the audit"}}],"responses":{"200":{"description":"The audit details","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"targetUrl":{"type":"string"},"status":{"enum":["pending","partial","completed","failed"],"type":"string"},"durationMs":{"anyOf":[{"type":"number"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"report":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"string"},"auditId":{"type":"string"},"targetUrl":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"type":"string"},"durationMs":{"type":"number"},"results":{"type":"array","items":{"type":"object","properties":{"checkId":{"type":"string"},"checkName":{"type":"string"},"description":{"type":"string"},"status":{"enum":["pass","fail","skip","pending"],"type":"string"},"message":{"type":"string"},"skipReason":{"type":"string"},"severity":{"enum":["error","warning","info"],"type":"string"},"category":{"enum":["connectivity","tool-metadata","resource-metadata","performance","e2e"],"type":"string"},"scope":{"enum":["server","view"],"type":"string"},"platforms":{"type":"array","items":{"enum":["chatgpt","claudeai"],"type":"string"},"readOnly":true},"durationMs":{"type":"number"},"details":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label"]}},"hint":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]}},"required":["checkId","checkName","description","status","message","severity","category","scope","durationMs"]}},"requiresAuth":{"type":"boolean"},"hasViewSupport":{"type":"boolean"},"viewPlatforms":{"type":"array","items":{"enum":["chatgpt","claudeai"],"type":"string"},"readOnly":true},"isReadyForPlatform":{"type":"object","propertyNames":{"enum":["chatgpt","claudeai"],"type":"string"},"additionalProperties":{"type":"boolean"}},"widgetScreenshotKeys":{"type":"object","properties":{"chatgpt":{"type":"string"},"claudeai":{"type":"string"}}},"widgetScreenshots":{"type":"object","properties":{"chatgpt":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"claudeai":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]}}}},"required":["schemaVersion","auditId","targetUrl","startedAt","completedAt","durationMs","results","requiresAuth","hasViewSupport","isReadyForPlatform","widgetScreenshotKeys","widgetScreenshots"]},{"type":"null"}]}},"required":["id","targetUrl","status","durationMs","createdAt","report"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/submissions":{"post":{"operationId":"submissions.create.v1","summary":"Create a submission package","description":"Create a submission package for an environment. Alpic reads the environment's live MCP server and prefills every field it can infer, so the response already carries the populated package. The environment must have a successful deployment and must not require authentication.","tags":["submissions"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"environmentId":{"type":"string","description":"The ID of the environment to build the package from"},"platform":{"enum":["chatgpt","claudeai"],"type":"string","description":"The directory the package targets: `chatgpt` for the OpenAI App Directory, `claudeai` for the Anthropic MCP Directory"}},"required":["environmentId","platform"]}}}},"responses":{"200":{"description":"The created submission package, with its prefilled fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Submission"}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/projects/{projectId}/submissions":{"get":{"operationId":"submissions.list.v1","summary":"List submission packages","description":"List the submission packages of a project, grouped by directory and most recently updated first, optionally narrowed to one environment or one directory","tags":["submissions"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the project"}},{"name":"environmentId","in":"query","schema":{"type":"string","description":"Filter by environment ID"},"allowEmptyValue":true,"allowReserved":true},{"name":"platform","in":"query","schema":{"enum":["chatgpt","claudeai"],"type":"string","description":"The directory the package targets: `chatgpt` for the OpenAI App Directory, `claudeai` for the Anthropic MCP Directory"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"The list of submission packages","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Submission"}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/v1/submissions/{submissionId}":{"get":{"operationId":"submissions.get.v1","summary":"Get a submission package","description":"Get a submission package by ID, including its form data and the prefill it started from","tags":["submissions"],"parameters":[{"name":"submissionId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the submission package"}}],"responses":{"200":{"description":"The submission package","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Submission"}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"put":{"operationId":"submissions.update.v1","summary":"Update a submission package","description":"Update the form data of a submission package. Only the fields you send are changed; the rest are left as they are. Unknown field names are rejected rather than ignored, so a typo fails the call. `platform` must match the package's own platform.","tags":["submissions"],"parameters":[{"name":"submissionId","in":"path","required":true,"schema":{"type":"string","description":"The ID of the submission package"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"anyOf":[{"const":"claudeai","description":"The directory the package targets: `chatgpt` for the OpenAI App Directory, `claudeai` for the Anthropic MCP Directory"},{"const":"chatgpt","description":"The directory the package targets: `chatgpt` for the OpenAI App Directory, `claudeai` for the Anthropic MCP Directory"}]},"formData":{"anyOf":[{"$ref":"#/components/schemas/ClaudeSubmissionFormDataUpdate"},{"$ref":"#/components/schemas/ChatgptSubmissionFormDataUpdate"}]}},"required":["platform","formData"]}}}},"responses":{"200":{"description":"The updated submission package","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Submission"}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}}}}