Created
April 21, 2026 05:37
-
-
Save chamilaadhi/d6c06ff2afdc8188df8492df0f63fa6c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| openapi: 3.0.3 | |
| info: | |
| title: API Developer Portal Core API | |
| version: 1.0.0 | |
| description: > | |
| REST API for the WSO2 API Developer Portal Core, covering organization | |
| management, identity providers, API metadata, applications, subscriptions, | |
| API keys, SDK generation, billing, usage, and invoicing. | |
| license: | |
| name: Apache 2.0 | |
| url: http://www.apache.org/licenses/LICENSE-2.0 | |
| servers: | |
| - url: / | |
| tags: | |
| - name: Organizations | |
| description: Organization CRUD | |
| - name: Identity Provider | |
| description: Per-organization identity provider configuration | |
| - name: Organization Content | |
| description: View layout assets (zip upload/download) | |
| - name: Organization Provider | |
| description: Per-organization provider configuration | |
| - name: APIs | |
| description: API metadata management (organization-scoped) | |
| - name: APIs (S2S) | |
| description: API metadata management (service-to-service, no org context) | |
| - name: Subscription Policies | |
| description: API subscription policy management | |
| - name: API Templates | |
| description: API content/template zip management | |
| - name: Labels | |
| description: Organization label management | |
| - name: Organization Applications | |
| description: Developer portal applications (organization-scoped) | |
| - name: Platform Subscriptions | |
| description: Platform gateway subscription management | |
| - name: Platform API Keys | |
| description: Platform API key lifecycle management | |
| - name: Store Subscriptions | |
| description: Store API subscription management | |
| - name: App Key Mapping | |
| description: Mapping between devportal and control-plane applications | |
| - name: Views | |
| description: Organization view management | |
| - name: Applications | |
| description: Application management (general, control-plane-backed) | |
| - name: API Keys | |
| description: Standalone API key lifecycle | |
| - name: SDK Generation | |
| description: SDK generation job management | |
| - name: Billing | |
| description: Stripe-backed billing, payment methods, and subscriptions | |
| - name: Usage | |
| description: Subscription usage data | |
| - name: Invoices | |
| description: Invoice listing and retrieval | |
| - name: Auth | |
| description: Authentication | |
| paths: | |
| # --------------------------------------------------------------------------- | |
| # Organizations | |
| # --------------------------------------------------------------------------- | |
| /organizations: | |
| post: | |
| tags: [Organizations] | |
| summary: Create an organization | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/OrganizationRequest' | |
| responses: | |
| '201': | |
| description: Organization created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Organization' | |
| '400': | |
| $ref: '#/components/responses/BadRequest' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/Forbidden' | |
| '409': | |
| $ref: '#/components/responses/Conflict' | |
| get: | |
| tags: [Organizations] | |
| summary: List all organizations | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: Array of organizations | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Organization' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/Forbidden' | |
| /organizations/{orgId}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| get: | |
| tags: [Organizations] | |
| summary: Get an organization by ID | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: Organization | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Organization' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| put: | |
| tags: [Organizations] | |
| summary: Update an organization | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/OrganizationRequest' | |
| responses: | |
| '200': | |
| description: Updated organization | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Organization' | |
| '400': | |
| $ref: '#/components/responses/BadRequest' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| delete: | |
| tags: [Organizations] | |
| summary: Delete an organization | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '204': | |
| description: Organization deleted | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| # --------------------------------------------------------------------------- | |
| # Identity Provider | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/identityProvider: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Identity Provider] | |
| summary: Create identity provider for an organization | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IdentityProviderRequest' | |
| responses: | |
| '201': | |
| description: Identity provider created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IdentityProvider' | |
| '400': | |
| $ref: '#/components/responses/BadRequest' | |
| put: | |
| tags: [Identity Provider] | |
| summary: Update identity provider for an organization | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IdentityProviderRequest' | |
| responses: | |
| '200': | |
| description: Updated identity provider | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IdentityProvider' | |
| get: | |
| tags: [Identity Provider] | |
| summary: Get identity provider for an organization | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: Identity provider | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IdentityProvider' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| delete: | |
| tags: [Identity Provider] | |
| summary: Delete identity provider for an organization | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: Resource deleted | |
| content: | |
| application/json: | |
| schema: | |
| type: string | |
| example: Resource Deleted Successfully | |
| # --------------------------------------------------------------------------- | |
| # Organization Content (View Layout) | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/views/{name}/layout: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/ViewName' | |
| post: | |
| tags: [Organization Content] | |
| summary: Upload view layout content (zip) | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: [file] | |
| properties: | |
| file: | |
| type: string | |
| format: binary | |
| description: ZIP archive containing view layout assets | |
| responses: | |
| '201': | |
| description: Content uploaded | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/OrgContentResponse' | |
| put: | |
| tags: [Organization Content] | |
| summary: Replace view layout content (zip) | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: [file] | |
| properties: | |
| file: | |
| type: string | |
| format: binary | |
| responses: | |
| '201': | |
| description: Content replaced | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/OrgContentResponse' | |
| get: | |
| tags: [Organization Content] | |
| summary: Retrieve view layout assets | |
| parameters: | |
| - name: fileType | |
| in: query | |
| schema: | |
| type: string | |
| - name: fileName | |
| in: query | |
| schema: | |
| type: string | |
| - name: filePath | |
| in: query | |
| schema: | |
| type: string | |
| responses: | |
| '200': | |
| description: Asset file or list of assets | |
| content: | |
| application/octet-stream: | |
| schema: | |
| type: string | |
| format: binary | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/OrgAsset' | |
| delete: | |
| tags: [Organization Content] | |
| summary: Delete view layout content | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '204': | |
| description: Content deleted | |
| /organizations/{orgId}/views/{name}/layout/{fileType}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/ViewName' | |
| - name: fileType | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| get: | |
| tags: [Organization Content] | |
| summary: Retrieve a specific file type from view layout | |
| parameters: | |
| - name: fileName | |
| in: query | |
| schema: | |
| type: string | |
| - name: filePath | |
| in: query | |
| schema: | |
| type: string | |
| responses: | |
| '200': | |
| description: Asset file | |
| content: | |
| application/octet-stream: | |
| schema: | |
| type: string | |
| format: binary | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/OrgAsset' | |
| # --------------------------------------------------------------------------- | |
| # Organization Provider | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/provider: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Organization Provider] | |
| summary: Create a provider for an organization | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ProviderRequest' | |
| responses: | |
| '201': | |
| description: Provider created | |
| put: | |
| tags: [Organization Provider] | |
| summary: Update provider for an organization | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ProviderRequest' | |
| responses: | |
| '200': | |
| description: Provider updated | |
| get: | |
| tags: [Organization Provider] | |
| summary: List providers for an organization | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: Providers list | |
| delete: | |
| tags: [Organization Provider] | |
| summary: Delete provider for an organization | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: Provider deleted | |
| # --------------------------------------------------------------------------- | |
| # APIs (organization-scoped) | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/apis: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [APIs] | |
| summary: Create API metadata | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: [apiMetadata] | |
| properties: | |
| apiMetadata: | |
| type: string | |
| description: JSON-serialized API metadata object | |
| example: '{"apiInfo":{"apiName":"PetStore","apiVersion":"1.0"}}' | |
| apiDefinition: | |
| type: string | |
| format: binary | |
| description: OpenAPI / AsyncAPI / GraphQL / WSDL definition file | |
| schemaDefinition: | |
| type: string | |
| format: binary | |
| description: GraphQL schema file (for GraphQL APIs) | |
| responses: | |
| '201': | |
| description: API created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/API' | |
| '400': | |
| $ref: '#/components/responses/BadRequest' | |
| get: | |
| tags: [APIs] | |
| summary: List all APIs for an organization | |
| security: | |
| - DeveloperScope: [] | |
| parameters: | |
| - name: query | |
| in: query | |
| schema: | |
| type: string | |
| - name: apiName | |
| in: query | |
| schema: | |
| type: string | |
| - name: version | |
| in: query | |
| schema: | |
| type: string | |
| - name: tags | |
| in: query | |
| schema: | |
| type: string | |
| - name: groups | |
| in: query | |
| schema: | |
| type: string | |
| - name: view | |
| in: query | |
| schema: | |
| type: string | |
| responses: | |
| '200': | |
| description: List of APIs | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/API' | |
| /organizations/{orgId}/apis/{apiId}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/ApiId' | |
| get: | |
| tags: [APIs] | |
| summary: Get API metadata | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: API metadata | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/API' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| put: | |
| tags: [APIs] | |
| summary: Update API metadata | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| properties: | |
| apiMetadata: | |
| type: string | |
| description: JSON-serialized API metadata object | |
| apiDefinition: | |
| type: string | |
| format: binary | |
| schemaDefinition: | |
| type: string | |
| format: binary | |
| responses: | |
| '200': | |
| description: Updated API | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/API' | |
| delete: | |
| tags: [APIs] | |
| summary: Delete API metadata | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '204': | |
| description: API deleted | |
| # --------------------------------------------------------------------------- | |
| # Subscription Policies | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/subscription-policies: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Subscription Policies] | |
| summary: Add subscription policies | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/SubscriptionPolicyRequest' | |
| responses: | |
| '201': | |
| description: Policies created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/SubscriptionPolicy' | |
| put: | |
| tags: [Subscription Policies] | |
| summary: Update subscription policies | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/SubscriptionPolicyRequest' | |
| responses: | |
| '200': | |
| description: Policies updated | |
| /organizations/{orgId}/subscription-policies/{policyID}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - name: policyID | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| get: | |
| tags: [Subscription Policies] | |
| summary: Get a subscription policy | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Subscription policy | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/SubscriptionPolicy' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| /organizations/{orgId}/subscription-policies/{policyName}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - name: policyName | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| delete: | |
| tags: [Subscription Policies] | |
| summary: Delete a subscription policy | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '204': | |
| description: Policy deleted | |
| # --------------------------------------------------------------------------- | |
| # API Templates | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/apis/{apiId}/template: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/ApiId' | |
| post: | |
| tags: [API Templates] | |
| summary: Upload API content template (zip) | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: [apiContent] | |
| properties: | |
| apiContent: | |
| type: string | |
| format: binary | |
| description: ZIP archive containing API template content | |
| responses: | |
| '201': | |
| description: Template uploaded | |
| put: | |
| tags: [API Templates] | |
| summary: Replace API content template (zip) | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: [apiContent] | |
| properties: | |
| apiContent: | |
| type: string | |
| format: binary | |
| responses: | |
| '200': | |
| description: Template replaced | |
| get: | |
| tags: [API Templates] | |
| summary: Download API template file | |
| responses: | |
| '200': | |
| description: Template archive | |
| content: | |
| application/octet-stream: | |
| schema: | |
| type: string | |
| format: binary | |
| delete: | |
| tags: [API Templates] | |
| summary: Delete API template | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '204': | |
| description: Template deleted | |
| # --------------------------------------------------------------------------- | |
| # APIs (S2S — no org context) | |
| # --------------------------------------------------------------------------- | |
| /apis: | |
| post: | |
| tags: [APIs (S2S)] | |
| summary: Create API metadata (S2S) | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: [apiMetadata] | |
| properties: | |
| apiMetadata: | |
| type: string | |
| description: JSON-serialized API metadata object | |
| apiDefinition: | |
| type: string | |
| format: binary | |
| schemaDefinition: | |
| type: string | |
| format: binary | |
| responses: | |
| '201': | |
| description: API created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/API' | |
| get: | |
| tags: [APIs (S2S)] | |
| summary: List all APIs (S2S) | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: List of APIs | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/API' | |
| /apis/{apiId}: | |
| parameters: | |
| - $ref: '#/components/parameters/ApiId' | |
| put: | |
| tags: [APIs (S2S)] | |
| summary: Update API metadata (S2S) | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| properties: | |
| apiMetadata: | |
| type: string | |
| apiDefinition: | |
| type: string | |
| format: binary | |
| schemaDefinition: | |
| type: string | |
| format: binary | |
| responses: | |
| '200': | |
| description: Updated API | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/API' | |
| delete: | |
| tags: [APIs (S2S)] | |
| summary: Delete API metadata (S2S) | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '204': | |
| description: API deleted | |
| # --------------------------------------------------------------------------- | |
| # Labels | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/labels: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Labels] | |
| summary: Create labels | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LabelRequest' | |
| responses: | |
| '201': | |
| description: Labels created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Label' | |
| put: | |
| tags: [Labels] | |
| summary: Update a label | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LabelRequest' | |
| responses: | |
| '200': | |
| description: Label updated | |
| get: | |
| tags: [Labels] | |
| summary: List all labels | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: List of labels | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Label' | |
| delete: | |
| tags: [Labels] | |
| summary: Delete labels | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '204': | |
| description: Labels deleted | |
| # --------------------------------------------------------------------------- | |
| # Organization Applications | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/applications: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Organization Applications] | |
| summary: Create a developer portal application | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ApplicationRequest' | |
| responses: | |
| '201': | |
| description: Application created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Application' | |
| get: | |
| tags: [Organization Applications] | |
| summary: List developer portal applications | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Applications list | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Application' | |
| /organizations/{orgId}/applications/{appId}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/AppId' | |
| get: | |
| tags: [Organization Applications] | |
| summary: Get developer portal application details | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Application details | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Application' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| put: | |
| tags: [Organization Applications] | |
| summary: Update a developer portal application | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ApplicationRequest' | |
| responses: | |
| '200': | |
| description: Updated application | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Application' | |
| delete: | |
| tags: [Organization Applications] | |
| summary: Delete a developer portal application | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '204': | |
| description: Application deleted | |
| /organizations/{orgId}/applications/import: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Organization Applications] | |
| summary: Import an application with API subscriptions (Admin only) | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: [file] | |
| properties: | |
| file: | |
| type: string | |
| format: binary | |
| description: YAML file containing the application export | |
| withKeys: | |
| type: string | |
| enum: ['true', 'false'] | |
| description: Whether to import application keys | |
| keyManager: | |
| type: string | |
| description: Key manager name to use for imported keys | |
| responses: | |
| '200': | |
| description: Application imported | |
| # --------------------------------------------------------------------------- | |
| # Platform Gateway Subscriptions | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/api-platform-subscriptions: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Platform Subscriptions] | |
| summary: Create a platform gateway subscription | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/PlatformSubscriptionRequest' | |
| responses: | |
| '201': | |
| description: Platform subscription created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/PlatformSubscription' | |
| get: | |
| tags: [Platform Subscriptions] | |
| summary: List platform gateway subscriptions | |
| security: | |
| - DeveloperScope: [] | |
| parameters: | |
| - name: apiId | |
| in: query | |
| schema: | |
| type: string | |
| responses: | |
| '200': | |
| description: Platform subscriptions | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/PlatformSubscription' | |
| /organizations/{orgId}/api-platform-subscriptions/{subscriptionId}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/SubscriptionId' | |
| get: | |
| tags: [Platform Subscriptions] | |
| summary: Get a platform gateway subscription | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Platform subscription | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/PlatformSubscription' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| put: | |
| tags: [Platform Subscriptions] | |
| summary: Update a platform gateway subscription | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: [status] | |
| properties: | |
| status: | |
| type: string | |
| enum: [ACTIVE, INACTIVE] | |
| responses: | |
| '200': | |
| description: Updated subscription | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/PlatformSubscription' | |
| delete: | |
| tags: [Platform Subscriptions] | |
| summary: Delete a platform gateway subscription | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Subscription deleted | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| message: | |
| type: string | |
| example: Subscription deleted successfully | |
| # --------------------------------------------------------------------------- | |
| # Platform API Keys | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/platform-api-keys/generate: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Platform API Keys] | |
| summary: Generate a new platform API key | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/PlatformApiKeyRequest' | |
| responses: | |
| '200': | |
| description: Generated platform API key | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/PlatformApiKey' | |
| /organizations/{orgId}/platform-api-keys: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| get: | |
| tags: [Platform API Keys] | |
| summary: List platform API keys | |
| security: | |
| - DeveloperScope: [] | |
| parameters: | |
| - name: apiId | |
| in: query | |
| required: true | |
| schema: | |
| type: string | |
| responses: | |
| '200': | |
| description: Platform API keys | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/PlatformApiKey' | |
| /organizations/{orgId}/platform-api-keys/{apiKeyId}/regenerate: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/ApiKeyId' | |
| post: | |
| tags: [Platform API Keys] | |
| summary: Regenerate a platform API key | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/PlatformApiKeyRequest' | |
| responses: | |
| '200': | |
| description: Regenerated API key | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/PlatformApiKey' | |
| /organizations/{orgId}/platform-api-keys/{apiKeyId}/revoke: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/ApiKeyId' | |
| post: | |
| tags: [Platform API Keys] | |
| summary: Revoke a platform API key | |
| security: | |
| - DeveloperScope: [] | |
| parameters: | |
| - name: apiId | |
| in: query | |
| required: true | |
| schema: | |
| type: string | |
| responses: | |
| '200': | |
| description: Key revoked | |
| # --------------------------------------------------------------------------- | |
| # Store API Subscriptions | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/subscriptions: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Store Subscriptions] | |
| summary: Create a store API subscription | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/StoreSubscriptionRequest' | |
| responses: | |
| '201': | |
| description: Subscription created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/StoreSubscription' | |
| put: | |
| tags: [Store Subscriptions] | |
| summary: Update a store API subscription | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/StoreSubscriptionRequest' | |
| responses: | |
| '200': | |
| description: Subscription updated | |
| get: | |
| tags: [Store Subscriptions] | |
| summary: List all store API subscriptions | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Subscriptions | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/StoreSubscription' | |
| delete: | |
| tags: [Store Subscriptions] | |
| summary: Unsubscribe from an API | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Unsubscribed | |
| /organizations/{orgId}/subscriptions/{subscriptionId}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/SubscriptionId' | |
| get: | |
| tags: [Store Subscriptions] | |
| summary: Get a store subscription | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Subscription | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/StoreSubscription' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| delete: | |
| tags: [Store Subscriptions] | |
| summary: Delete a store subscription | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '204': | |
| description: Subscription deleted | |
| # --------------------------------------------------------------------------- | |
| # App-Key Mapping | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/app-key-mapping: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [App Key Mapping] | |
| summary: Create an app key mapping | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/AppKeyMappingRequest' | |
| responses: | |
| '201': | |
| description: Mapping created | |
| /organizations/{orgId}/app-key-mapping/{appId}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/AppId' | |
| get: | |
| tags: [App Key Mapping] | |
| summary: Retrieve app key mappings | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Mappings | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/AppKeyMapping' | |
| # --------------------------------------------------------------------------- | |
| # Views | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/views: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Views] | |
| summary: Create a view | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ViewRequest' | |
| responses: | |
| '201': | |
| description: View created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/View' | |
| get: | |
| tags: [Views] | |
| summary: List all views | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: Views list | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/View' | |
| /organizations/{orgId}/views/{name}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/ViewName' | |
| get: | |
| tags: [Views] | |
| summary: Get a view by name | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: View | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/View' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| put: | |
| tags: [Views] | |
| summary: Update a view | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ViewRequest' | |
| responses: | |
| '200': | |
| description: Updated view | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/View' | |
| delete: | |
| tags: [Views] | |
| summary: Delete a view | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '204': | |
| description: View deleted | |
| # --------------------------------------------------------------------------- | |
| # Applications (general / CP-backed) | |
| # --------------------------------------------------------------------------- | |
| /applications: | |
| post: | |
| tags: [Applications] | |
| summary: Create an application | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ApplicationRequest' | |
| responses: | |
| '201': | |
| description: Application created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Application' | |
| /applications/{applicationId}: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| put: | |
| tags: [Applications] | |
| summary: Update an application | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ApplicationRequest' | |
| responses: | |
| '200': | |
| description: Updated application | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Application' | |
| delete: | |
| tags: [Applications] | |
| summary: Delete an application | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Application deleted | |
| /applications/{applicationId}/reset-throttle-policy: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| post: | |
| tags: [Applications] | |
| summary: Reset throttling policy for an application | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: [userName] | |
| properties: | |
| userName: | |
| type: string | |
| responses: | |
| '200': | |
| description: Policy reset | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| message: | |
| type: string | |
| /applications/{applicationId}/api-keys/generate: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| post: | |
| tags: [Applications] | |
| summary: Generate API keys for an application | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/GenerateApiKeyRequest' | |
| responses: | |
| '200': | |
| description: Generated API key | |
| /applications/{applicationId}/generate-keys: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| post: | |
| tags: [Applications] | |
| summary: Generate OAuth application keys | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/GenerateApplicationKeysRequest' | |
| responses: | |
| '200': | |
| description: Generated keys | |
| /applications/{applicationId}/oauth-keys/{keyMappingId}/generate-token: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| - $ref: '#/components/parameters/KeyMappingId' | |
| post: | |
| tags: [Applications] | |
| summary: Generate an OAuth token | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/GenerateOAuthTokenRequest' | |
| responses: | |
| '200': | |
| description: Generated token | |
| /applications/{applicationId}/oauth-keys/{keyMappingId}: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| - $ref: '#/components/parameters/KeyMappingId' | |
| put: | |
| tags: [Applications] | |
| summary: Update OAuth key mapping | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/UpdateOAuthKeysRequest' | |
| responses: | |
| '200': | |
| description: Keys updated | |
| delete: | |
| tags: [Applications] | |
| summary: Revoke OAuth key mapping | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Keys revoked | |
| /applications/{applicationId}/oauth-keys/{keyMappingId}/clean-up: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| - $ref: '#/components/parameters/KeyMappingId' | |
| post: | |
| tags: [Applications] | |
| summary: Clean up OAuth key mapping | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Clean up successful | |
| # --------------------------------------------------------------------------- | |
| # API Keys (standalone) | |
| # --------------------------------------------------------------------------- | |
| /api-keys/generate: | |
| post: | |
| tags: [API Keys] | |
| summary: Generate an API key | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/GenerateApiKeyRequest' | |
| responses: | |
| '200': | |
| description: Generated API key | |
| /api-keys/{apiKeyID}/revoke: | |
| parameters: | |
| - name: apiKeyID | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| post: | |
| tags: [API Keys] | |
| summary: Revoke an API key | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: API key revoked | |
| /api-keys/{apiKeyID}/regenerate: | |
| parameters: | |
| - name: apiKeyID | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| post: | |
| tags: [API Keys] | |
| summary: Regenerate an API key | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: API key regenerated | |
| # --------------------------------------------------------------------------- | |
| # SDK Generation | |
| # --------------------------------------------------------------------------- | |
| /applications/{applicationId}/generate-sdk: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| post: | |
| tags: [SDK Generation] | |
| summary: Start an SDK generation job | |
| security: | |
| - DeveloperScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/GenerateSdkRequest' | |
| responses: | |
| '200': | |
| description: Job started | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/SdkJob' | |
| /applications/{applicationId}/sdk/job-progress/{jobId}: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| - $ref: '#/components/parameters/JobId' | |
| get: | |
| tags: [SDK Generation] | |
| summary: Stream SDK generation job progress (SSE) | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Server-Sent Events stream with progress updates | |
| content: | |
| text/event-stream: | |
| schema: | |
| type: string | |
| /applications/{applicationId}/sdk/cancel/{jobId}: | |
| parameters: | |
| - $ref: '#/components/parameters/ApplicationId' | |
| - $ref: '#/components/parameters/JobId' | |
| post: | |
| tags: [SDK Generation] | |
| summary: Cancel an SDK generation job | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: Job cancelled | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/SdkJob' | |
| /sdk/download/{filename}: | |
| parameters: | |
| - name: filename | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| get: | |
| tags: [SDK Generation] | |
| summary: Download a generated SDK archive | |
| security: | |
| - DeveloperScope: [] | |
| responses: | |
| '200': | |
| description: SDK archive | |
| content: | |
| application/octet-stream: | |
| schema: | |
| type: string | |
| format: binary | |
| # --------------------------------------------------------------------------- | |
| # Billing | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/billing/usage-data: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| get: | |
| tags: [Billing] | |
| summary: Get billing usage data | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Usage data | |
| /organizations/{orgId}/billing/payment-methods: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| get: | |
| tags: [Billing] | |
| summary: Get payment methods | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Payment methods list | |
| /organizations/{orgId}/billing/info: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| get: | |
| tags: [Billing] | |
| summary: Get billing info | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Billing info | |
| /organizations/{orgId}/billing/subscriptions: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| get: | |
| tags: [Billing] | |
| summary: Get active billing subscriptions | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Active subscriptions | |
| /organizations/{orgId}/billing-engine-keys: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Billing] | |
| summary: Add billing engine keys | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/BillingEngineKeysRequest' | |
| responses: | |
| '201': | |
| description: Billing engine keys added | |
| put: | |
| tags: [Billing] | |
| summary: Update billing engine keys | |
| security: | |
| - AdminScope: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/BillingEngineKeysRequest' | |
| responses: | |
| '200': | |
| description: Billing engine keys updated | |
| delete: | |
| tags: [Billing] | |
| summary: Delete billing engine keys | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: Billing engine keys deleted | |
| get: | |
| tags: [Billing] | |
| summary: Get billing engine keys | |
| security: | |
| - AdminScope: [] | |
| responses: | |
| '200': | |
| description: Billing engine keys | |
| /organizations/{orgId}/monetization/checkout: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Billing] | |
| summary: Create a Stripe checkout session for a subscription | |
| security: | |
| - BillingAuth: [] | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/CheckoutRequest' | |
| responses: | |
| '200': | |
| description: Checkout session created | |
| /organizations/{orgId}/monetization/stripe/register/{checkoutSessionId}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - name: checkoutSessionId | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| post: | |
| tags: [Billing] | |
| summary: Register a completed Stripe checkout session | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Checkout session registered | |
| /organizations/{orgId}/subscriptions/{subId}/cancel: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/SubId' | |
| post: | |
| tags: [Billing] | |
| summary: Cancel a billing subscription | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Subscription cancelled | |
| /organizations/{orgId}/subscriptions/{subId}/billing-status: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/SubId' | |
| get: | |
| tags: [Billing] | |
| summary: Get billing status for a subscription | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Billing status | |
| /organizations/{orgId}/billing-portal: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| post: | |
| tags: [Billing] | |
| summary: Create a Stripe billing portal session for an organization | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Billing portal session | |
| /organizations/{orgId}/subscriptions/{subId}/billing-portal: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/SubId' | |
| post: | |
| tags: [Billing] | |
| summary: Create a Stripe billing portal session for a subscription | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Billing portal session | |
| # --------------------------------------------------------------------------- | |
| # Usage | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/subscriptions/{subId}/usage: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/SubId' | |
| get: | |
| tags: [Usage] | |
| summary: Get usage data for a subscription | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Subscription usage data | |
| # --------------------------------------------------------------------------- | |
| # Invoices | |
| # --------------------------------------------------------------------------- | |
| /organizations/{orgId}/invoices: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| get: | |
| tags: [Invoices] | |
| summary: List invoices for an organization | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Invoice list | |
| /organizations/{orgId}/invoices/{invoiceId}: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - name: invoiceId | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| get: | |
| tags: [Invoices] | |
| summary: Get an invoice | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Invoice | |
| /organizations/{orgId}/subscriptions/{subId}/invoices: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - $ref: '#/components/parameters/SubId' | |
| get: | |
| tags: [Invoices] | |
| summary: List invoices for a subscription | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: Invoice list | |
| /organizations/{orgId}/invoices/{invoiceId}/pdf: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - name: invoiceId | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| get: | |
| tags: [Invoices] | |
| summary: Get a PDF link for an invoice | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '200': | |
| description: PDF link | |
| /organizations/{orgId}/invoices/{invoiceId}/hosted: | |
| parameters: | |
| - $ref: '#/components/parameters/OrgId' | |
| - name: invoiceId | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| get: | |
| tags: [Invoices] | |
| summary: Redirect to the hosted invoice page | |
| security: | |
| - BillingAuth: [] | |
| responses: | |
| '302': | |
| description: Redirect to hosted invoice | |
| # --------------------------------------------------------------------------- | |
| # Auth | |
| # --------------------------------------------------------------------------- | |
| /login: | |
| post: | |
| tags: [Auth] | |
| summary: Login | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: [username, password] | |
| properties: | |
| username: | |
| type: string | |
| password: | |
| type: string | |
| format: password | |
| responses: | |
| '200': | |
| description: Login successful | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| message: | |
| type: string | |
| example: Login successful | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| # ============================================================================= | |
| # Components | |
| # ============================================================================= | |
| components: | |
| parameters: | |
| OrgId: | |
| name: orgId | |
| in: path | |
| required: true | |
| description: Organization identifier | |
| schema: | |
| type: string | |
| format: uuid | |
| ApiId: | |
| name: apiId | |
| in: path | |
| required: true | |
| description: API identifier | |
| schema: | |
| type: string | |
| format: uuid | |
| AppId: | |
| name: appId | |
| in: path | |
| required: true | |
| description: Application identifier | |
| schema: | |
| type: string | |
| format: uuid | |
| ApplicationId: | |
| name: applicationId | |
| in: path | |
| required: true | |
| description: Application identifier | |
| schema: | |
| type: string | |
| format: uuid | |
| SubscriptionId: | |
| name: subscriptionId | |
| in: path | |
| required: true | |
| description: Subscription identifier | |
| schema: | |
| type: string | |
| format: uuid | |
| SubId: | |
| name: subId | |
| in: path | |
| required: true | |
| description: Billing subscription identifier | |
| schema: | |
| type: string | |
| ViewName: | |
| name: name | |
| in: path | |
| required: true | |
| description: View name | |
| schema: | |
| type: string | |
| KeyMappingId: | |
| name: keyMappingId | |
| in: path | |
| required: true | |
| description: OAuth key mapping identifier | |
| schema: | |
| type: string | |
| ApiKeyId: | |
| name: apiKeyId | |
| in: path | |
| required: true | |
| description: Platform API key identifier | |
| schema: | |
| type: string | |
| JobId: | |
| name: jobId | |
| in: path | |
| required: true | |
| description: SDK generation job identifier | |
| schema: | |
| type: string | |
| responses: | |
| BadRequest: | |
| description: Bad request — invalid input | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| Unauthorized: | |
| description: Authentication required | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| Forbidden: | |
| description: Insufficient permissions | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| NotFound: | |
| description: Resource not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| Conflict: | |
| description: Resource already exists | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| securitySchemes: | |
| AdminScope: | |
| type: http | |
| scheme: bearer | |
| description: Requires admin scope token | |
| DeveloperScope: | |
| type: http | |
| scheme: bearer | |
| description: Requires developer scope token | |
| BillingAuth: | |
| type: http | |
| scheme: bearer | |
| description: Billing-specific authentication | |
| schemas: | |
| # ------------------------------------------------------------------------- | |
| # Organization | |
| # ------------------------------------------------------------------------- | |
| OrganizationRequest: | |
| type: object | |
| required: [orgName, orgHandle] | |
| properties: | |
| orgName: | |
| type: string | |
| description: Unique organization name | |
| businessOwner: | |
| type: string | |
| businessOwnerContact: | |
| type: string | |
| businessOwnerEmail: | |
| type: string | |
| format: email | |
| orgHandle: | |
| type: string | |
| description: Unique URL-friendly handle | |
| roleClaimName: | |
| type: string | |
| groupsClaimName: | |
| type: string | |
| organizationClaimName: | |
| type: string | |
| organizationIdentifier: | |
| type: string | |
| adminRole: | |
| type: string | |
| subscriberRole: | |
| type: string | |
| Organization: | |
| allOf: | |
| - $ref: '#/components/schemas/OrganizationRequest' | |
| - type: object | |
| properties: | |
| orgId: | |
| type: string | |
| format: uuid | |
| superAdminRole: | |
| type: string | |
| orgConfiguration: | |
| type: object | |
| description: JSON configuration blob | |
| # ------------------------------------------------------------------------- | |
| # Identity Provider | |
| # ------------------------------------------------------------------------- | |
| IdentityProviderRequest: | |
| type: object | |
| required: [name, issuer, authorizationURL, tokenURL, clientId, callbackURL, scope, logoutURL, logoutRedirectURI] | |
| properties: | |
| name: | |
| type: string | |
| issuer: | |
| type: string | |
| format: uri | |
| authorizationURL: | |
| type: string | |
| format: uri | |
| tokenURL: | |
| type: string | |
| format: uri | |
| clientId: | |
| type: string | |
| format: uuid | |
| callbackURL: | |
| type: string | |
| format: uri | |
| scope: | |
| type: string | |
| description: Space-separated OAuth scopes | |
| logoutURL: | |
| type: string | |
| format: uri | |
| logoutRedirectURI: | |
| type: string | |
| format: uri | |
| userInfoURL: | |
| type: string | |
| format: uri | |
| signUpURL: | |
| type: string | |
| format: uri | |
| jwksURL: | |
| type: string | |
| format: uri | |
| certificate: | |
| type: string | |
| description: PEM-encoded certificate | |
| IdentityProvider: | |
| allOf: | |
| - $ref: '#/components/schemas/IdentityProviderRequest' | |
| # ------------------------------------------------------------------------- | |
| # Organization Content | |
| # ------------------------------------------------------------------------- | |
| OrgContentResponse: | |
| type: object | |
| properties: | |
| orgId: | |
| type: string | |
| format: uuid | |
| fileName: | |
| type: string | |
| OrgAsset: | |
| type: object | |
| properties: | |
| orgId: | |
| type: string | |
| format: uuid | |
| fileName: | |
| type: string | |
| fileContent: | |
| type: string | |
| format: byte | |
| description: Base64-encoded file content | |
| # ------------------------------------------------------------------------- | |
| # Provider | |
| # ------------------------------------------------------------------------- | |
| ProviderRequest: | |
| type: object | |
| description: Provider configuration (structure varies by provider type) | |
| additionalProperties: true | |
| # ------------------------------------------------------------------------- | |
| # API | |
| # ------------------------------------------------------------------------- | |
| APIInfo: | |
| type: object | |
| required: [apiName, apiVersion] | |
| properties: | |
| apiName: | |
| type: string | |
| apiVersion: | |
| type: string | |
| apiDescription: | |
| type: string | |
| apiType: | |
| type: string | |
| enum: [REST, WS, GRAPHQL, SOAP, WEBSUB] | |
| visibility: | |
| type: string | |
| enum: [PUBLIC, PRIVATE] | |
| gatewayVendor: | |
| type: string | |
| gatewayType: | |
| type: string | |
| tokenBasedSubscriptionEnabled: | |
| type: boolean | |
| visibleGroups: | |
| type: array | |
| items: | |
| type: string | |
| tags: | |
| type: array | |
| items: | |
| type: string | |
| labels: | |
| type: array | |
| items: | |
| type: string | |
| addedLabels: | |
| type: array | |
| items: | |
| type: string | |
| removedLabels: | |
| type: array | |
| items: | |
| type: string | |
| owners: | |
| $ref: '#/components/schemas/Owner' | |
| apiImageMetadata: | |
| type: object | |
| Owner: | |
| type: object | |
| properties: | |
| technicalOwner: | |
| type: string | |
| technicalOwnerEmail: | |
| type: string | |
| format: email | |
| businessOwner: | |
| type: string | |
| businessOwnerEmail: | |
| type: string | |
| format: email | |
| APIEndpoints: | |
| type: object | |
| properties: | |
| sandboxURL: | |
| type: string | |
| format: uri | |
| productionURL: | |
| type: string | |
| format: uri | |
| APIMonetizationInfo: | |
| type: object | |
| properties: | |
| enabled: | |
| type: boolean | |
| APISubscriptionPolicy: | |
| type: object | |
| properties: | |
| policyName: | |
| type: string | |
| displayName: | |
| type: string | |
| requestCount: | |
| type: string | |
| policyID: | |
| type: string | |
| format: uuid | |
| description: | |
| type: string | |
| billingPlan: | |
| type: string | |
| pricingModel: | |
| type: string | |
| currency: | |
| type: string | |
| billingPeriod: | |
| type: string | |
| flatAmount: | |
| type: number | |
| format: decimal | |
| unitAmount: | |
| type: number | |
| format: decimal | |
| pricingMetadata: | |
| type: object | |
| API: | |
| type: object | |
| properties: | |
| apiID: | |
| type: string | |
| format: uuid | |
| apiReferenceID: | |
| type: string | |
| format: uuid | |
| apiHandle: | |
| type: string | |
| provider: | |
| type: string | |
| dataSource: | |
| type: string | |
| apiInfo: | |
| $ref: '#/components/schemas/APIInfo' | |
| endPoints: | |
| $ref: '#/components/schemas/APIEndpoints' | |
| monetizationInfo: | |
| $ref: '#/components/schemas/APIMonetizationInfo' | |
| subscriptionPolicies: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/APISubscriptionPolicy' | |
| # ------------------------------------------------------------------------- | |
| # Subscription Policy | |
| # ------------------------------------------------------------------------- | |
| SubscriptionPolicyRequest: | |
| type: object | |
| required: [policyName, displayName] | |
| properties: | |
| policyName: | |
| type: string | |
| displayName: | |
| type: string | |
| billingPlan: | |
| type: string | |
| description: | |
| type: string | |
| requestCount: | |
| type: string | |
| pricingModel: | |
| type: string | |
| currency: | |
| type: string | |
| billingPeriod: | |
| type: string | |
| flatAmount: | |
| type: number | |
| format: decimal | |
| unitAmount: | |
| type: number | |
| format: decimal | |
| pricingMetadata: | |
| type: object | |
| SubscriptionPolicy: | |
| allOf: | |
| - $ref: '#/components/schemas/SubscriptionPolicyRequest' | |
| - type: object | |
| properties: | |
| policyID: | |
| type: string | |
| format: uuid | |
| orgID: | |
| type: string | |
| format: uuid | |
| # ------------------------------------------------------------------------- | |
| # Label | |
| # ------------------------------------------------------------------------- | |
| LabelRequest: | |
| type: object | |
| required: [name, displayName] | |
| properties: | |
| name: | |
| type: string | |
| displayName: | |
| type: string | |
| Label: | |
| allOf: | |
| - $ref: '#/components/schemas/LabelRequest' | |
| - type: object | |
| properties: | |
| labelId: | |
| type: string | |
| format: uuid | |
| # ------------------------------------------------------------------------- | |
| # Application | |
| # ------------------------------------------------------------------------- | |
| ApplicationRequest: | |
| type: object | |
| required: [name] | |
| properties: | |
| name: | |
| type: string | |
| description: | |
| type: string | |
| type: | |
| type: string | |
| Application: | |
| allOf: | |
| - $ref: '#/components/schemas/ApplicationRequest' | |
| - type: object | |
| properties: | |
| id: | |
| type: string | |
| format: uuid | |
| appMap: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/AppMappingEntry' | |
| AppMappingEntry: | |
| type: object | |
| properties: | |
| appRefID: | |
| type: string | |
| token: | |
| type: string | |
| shared: | |
| type: boolean | |
| # ------------------------------------------------------------------------- | |
| # Platform Subscription | |
| # ------------------------------------------------------------------------- | |
| PlatformSubscriptionRequest: | |
| type: object | |
| required: [apiId] | |
| properties: | |
| apiId: | |
| type: string | |
| subscriptionPlanName: | |
| type: string | |
| applicationId: | |
| type: string | |
| PlatformSubscription: | |
| type: object | |
| description: Platform gateway subscription as returned by the control plane | |
| additionalProperties: true | |
| # ------------------------------------------------------------------------- | |
| # Platform API Key | |
| # ------------------------------------------------------------------------- | |
| PlatformApiKeyRequest: | |
| type: object | |
| required: [apiId, name] | |
| properties: | |
| apiId: | |
| type: string | |
| name: | |
| type: string | |
| description: Must match /^[a-z0-9][a-z0-9_-]{0,127}$/ | |
| pattern: '^[a-z0-9][a-z0-9_-]{0,127}$' | |
| expiresAt: | |
| type: string | |
| description: ISO-8601 datetime with timezone or epoch milliseconds | |
| PlatformApiKey: | |
| type: object | |
| description: Platform API key as returned by the control plane | |
| additionalProperties: true | |
| # ------------------------------------------------------------------------- | |
| # Store Subscription | |
| # ------------------------------------------------------------------------- | |
| StoreSubscriptionRequest: | |
| type: object | |
| required: [appId, apiId] | |
| properties: | |
| appId: | |
| type: string | |
| format: uuid | |
| apiId: | |
| type: string | |
| format: uuid | |
| policyId: | |
| type: string | |
| format: uuid | |
| billingCustomerId: | |
| type: string | |
| billingSubscriptionId: | |
| type: string | |
| StoreSubscription: | |
| allOf: | |
| - $ref: '#/components/schemas/StoreSubscriptionRequest' | |
| - type: object | |
| properties: | |
| id: | |
| type: string | |
| format: uuid | |
| # ------------------------------------------------------------------------- | |
| # App Key Mapping | |
| # ------------------------------------------------------------------------- | |
| AppKeyMappingRequest: | |
| type: object | |
| properties: | |
| appId: | |
| type: string | |
| format: uuid | |
| cpAppRef: | |
| type: string | |
| apiRefId: | |
| type: string | |
| format: uuid | |
| subscriptionRefId: | |
| type: string | |
| format: uuid | |
| sharedToken: | |
| type: boolean | |
| tokenType: | |
| type: string | |
| enum: [API_KEY, OAUTH, BASIC] | |
| AppKeyMapping: | |
| allOf: | |
| - $ref: '#/components/schemas/AppKeyMappingRequest' | |
| - type: object | |
| properties: | |
| mappingId: | |
| type: string | |
| format: uuid | |
| # ------------------------------------------------------------------------- | |
| # View | |
| # ------------------------------------------------------------------------- | |
| ViewRequest: | |
| type: object | |
| required: [name, displayName] | |
| properties: | |
| name: | |
| type: string | |
| displayName: | |
| type: string | |
| labels: | |
| type: array | |
| items: | |
| type: string | |
| View: | |
| allOf: | |
| - $ref: '#/components/schemas/ViewRequest' | |
| - type: object | |
| properties: | |
| viewId: | |
| type: string | |
| format: uuid | |
| # ------------------------------------------------------------------------- | |
| # Application Key Management | |
| # ------------------------------------------------------------------------- | |
| GenerateApiKeyRequest: | |
| type: object | |
| required: [apiId] | |
| properties: | |
| apiId: | |
| type: string | |
| applicationId: | |
| type: string | |
| devportalAppId: | |
| type: string | |
| projectID: | |
| type: string | |
| name: | |
| type: string | |
| keyType: | |
| type: string | |
| subscriptionPlan: | |
| type: string | |
| billingCustomerId: | |
| type: string | |
| billingSubscriptionId: | |
| type: string | |
| GenerateApplicationKeysRequest: | |
| type: object | |
| required: [keyType, grantTypes] | |
| properties: | |
| keyType: | |
| type: string | |
| enum: [PRODUCTION, SANDBOX] | |
| grantTypes: | |
| type: array | |
| items: | |
| type: string | |
| additionalProperties: | |
| type: object | |
| GenerateOAuthTokenRequest: | |
| type: object | |
| required: [grantTypes] | |
| properties: | |
| grantTypes: | |
| type: array | |
| items: | |
| type: string | |
| tokenValidityPeriod: | |
| type: integer | |
| UpdateOAuthKeysRequest: | |
| type: object | |
| properties: | |
| grantTypes: | |
| type: array | |
| items: | |
| type: string | |
| tokenValidityPeriod: | |
| type: integer | |
| additionalProperties: | |
| type: object | |
| # ------------------------------------------------------------------------- | |
| # SDK Generation | |
| # ------------------------------------------------------------------------- | |
| GenerateSdkRequest: | |
| type: object | |
| required: [selectedAPIs, sdkConfiguration] | |
| properties: | |
| selectedAPIs: | |
| type: array | |
| items: | |
| type: object | |
| description: API reference selected for SDK generation | |
| sdkConfiguration: | |
| type: object | |
| description: SDK generation configuration options | |
| orgName: | |
| type: string | |
| SdkJob: | |
| type: object | |
| properties: | |
| jobId: | |
| type: string | |
| orgId: | |
| type: string | |
| appId: | |
| type: string | |
| status: | |
| type: string | |
| enum: [PENDING, MERGING, SDK_GENERATION, APP_CODE_GENERATION, COMPLETED, FAILED, CANCELED] | |
| progress: | |
| type: integer | |
| minimum: 0 | |
| maximum: 100 | |
| currentStep: | |
| type: string | |
| errorMessage: | |
| type: string | |
| createdAt: | |
| type: string | |
| format: date-time | |
| updatedAt: | |
| type: string | |
| format: date-time | |
| # ------------------------------------------------------------------------- | |
| # Billing | |
| # ------------------------------------------------------------------------- | |
| BillingEngineKeysRequest: | |
| type: object | |
| description: Billing engine (Stripe) key configuration | |
| additionalProperties: true | |
| CheckoutRequest: | |
| type: object | |
| description: Stripe checkout session parameters | |
| additionalProperties: true | |
| # ------------------------------------------------------------------------- | |
| # Error | |
| # ------------------------------------------------------------------------- | |
| Error: | |
| type: object | |
| properties: | |
| code: | |
| type: integer | |
| message: | |
| type: string |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment