openapi: 3.1.0 info: title: Apollo Config Open Apps Releases API description: Apollo Open API for configuration management including app management, namespace management, configuration publishing, and release management. Apollo provides centralized configuration management for distributed systems with real-time push, versioning, and gray release support. version: 2.2.0 contact: name: Apollo Config url: https://www.apolloconfig.com/ license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 servers: - url: http://localhost:8070 description: Local Apollo Portal - url: http://{portal_host}:{port} description: Custom Apollo Portal variables: portal_host: default: localhost port: default: '8070' security: - PortalToken: [] tags: - name: Releases description: Release and publish management paths: /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases/latest: get: operationId: getLatestRelease summary: Get latest release description: Returns the latest active release for a namespace. tags: - Releases parameters: - $ref: '#/components/parameters/env' - $ref: '#/components/parameters/appId' - $ref: '#/components/parameters/clusterName' - $ref: '#/components/parameters/namespaceName' responses: '200': description: Latest release content: application/json: schema: $ref: '#/components/schemas/Release' '404': description: No releases found /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases: post: operationId: createRelease summary: Publish a release description: Publishes current configuration items as a new release. tags: - Releases parameters: - $ref: '#/components/parameters/env' - $ref: '#/components/parameters/appId' - $ref: '#/components/parameters/clusterName' - $ref: '#/components/parameters/namespaceName' requestBody: required: true content: application/json: schema: type: object required: - releaseTitle - releasedBy properties: releaseTitle: type: string description: Title for the release releaseComment: type: string description: Optional comment releasedBy: type: string description: User who is publishing responses: '200': description: Release created content: application/json: schema: $ref: '#/components/schemas/Release' /openapi/v1/envs/{env}/releases/{releaseId}/rollback: put: operationId: rollbackRelease summary: Rollback a release description: Rolls back to a previous release by release ID. tags: - Releases parameters: - $ref: '#/components/parameters/env' - name: releaseId in: path required: true schema: type: integer format: int64 - name: operator in: query required: true schema: type: string description: Operator performing the rollback responses: '200': description: Rollback successful /openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/gray-del-releases: post: operationId: createGrayRelease summary: Create a gray release description: Creates a gray (canary) release for a subset of instances. tags: - Releases parameters: - $ref: '#/components/parameters/env' - $ref: '#/components/parameters/appId' - $ref: '#/components/parameters/clusterName' - $ref: '#/components/parameters/namespaceName' requestBody: required: true content: application/json: schema: type: object required: - releaseTitle - releasedBy - grayDelKeys properties: releaseTitle: type: string releaseComment: type: string releasedBy: type: string grayDelKeys: type: array items: type: string description: Keys to include in the gray release responses: '200': description: Gray release created content: application/json: schema: $ref: '#/components/schemas/Release' components: parameters: clusterName: name: clusterName in: path required: true schema: type: string description: Cluster name (default is 'default') env: name: env in: path required: true schema: type: string description: Environment (e.g., DEV, FAT, UAT, PRO) namespaceName: name: namespaceName in: path required: true schema: type: string description: Namespace name (default is 'application') appId: name: appId in: path required: true schema: type: string description: Application ID schemas: Release: type: object properties: id: type: integer format: int64 appId: type: string clusterName: type: string namespaceName: type: string name: type: string description: Release title comment: type: string isAbandoned: type: boolean configurations: type: object additionalProperties: type: string description: Key-value configuration snapshot at release time dataChangeCreatedBy: type: string dataChangeLastModifiedBy: type: string dataChangeCreatedTime: type: string format: date-time dataChangeLastModifiedTime: type: string format: date-time securitySchemes: PortalToken: type: apiKey name: Authorization in: header description: Apollo Portal open API token