Skip to content

Instantly share code, notes, and snippets.

@chamilaadhi
Created April 21, 2026 05:37
Show Gist options
  • Select an option

  • Save chamilaadhi/d6c06ff2afdc8188df8492df0f63fa6c to your computer and use it in GitHub Desktop.

Select an option

Save chamilaadhi/d6c06ff2afdc8188df8492df0f63fa6c to your computer and use it in GitHub Desktop.
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