openapi: 3.0.3 info: title: APIHUB Registry – External API description: | Public-facing API contract for APIHUB. This API is intended for external and integration clients and covers package/catalog operations, publication workflows, search, user/profile actions, and selected administration capabilities secured by APIHUB authentication schemes. contact: name: Netcracker Opensource Group email: opensourcegroup@netcracker.com license: name: Apache-2.0 url: https://www.apache.org/licenses/LICENSE-2.0 version: "2026.1" x-api-kind: BWC externalDocs: description: Find out more about this project and repository documentation url: https://github.com/Netcracker/qubership-apihub servers: - url: https://{apihub}.qubership.org description: Primary APIHUB server endpoint (use the apihub variable to select production, development, or staging). variables: apihub: description: APIHUB subdomain/environment selector (apihub=production, dev.apihub=development, staging.apihub=staging). enum: - apihub - dev.apihub - staging.apihub default: apihub security: - BearerAuth: [] - CookieAuth: [] - api-key: [] - PersonalAccessToken: [] tags: - name: Auth description: APIs for auth integrations. - name: Packages description: APIs for the package management. - name: Publish description: Publish version API - name: Versions description: Published package versions API. - name: Export description: Export API documentation. - name: Users description: APIs for the user operations. - name: Search description: Search functions. - name: Admin description: APIs for technical administration. - name: Integrations description: APIs for git integrations. - name: Roles description: APIs for role management. - name: Operations description: Operations APIs. - name: Contracts description: DDL and MCP contract APIs. - name: Documents description: Documents APIs. - name: Changes description: Changes APIs. - name: TryIt description: API for 'try it' functionality - name: Operation groups description: Operation groups - name: User profile description: APIs for user's personal settings. - name: Custom description: Custom APIs. - name: Internal Documents description: APIs for internal documents management. - name: AI Chat description: | APIs for AI chat assistant. Each user has their own chat list; chats are persisted on the server with a configurable TTL and pinning support. Conversations support streaming responses (SSE) and automatic context compaction (old messages are re-packed into a summary when the conversation approaches the model's context window, so that older facts are preserved instead of being silently dropped by the LLM). - name: Ephemeral Files description: | APIs for short-lived file downloads. Files are stored temporarily on the server and accessed via signed tokens embedded in producer responses (e.g. AI chat assistant markdown links). paths: "/api/v1/system/info": get: tags: - Custom summary: Get system info. description: Get system info. operationId: getInfo parameters: [] responses: "200": description: Successful execution content: application/json: schema: $ref: "#/components/schemas/SystemInfo" examples: SystemInfo: $ref: "#/components/examples/SystemInfo" "500": $ref: "#/components/examples/InternalServerError" "/api/v1/system/configuration": get: tags: - Auth summary: System configuration deprecated: true description: Global parameters of system configuration. operationId: getSystemConfiguration security: [{}] responses: "200": description: Success content: application/json: schema: type: object required: - autoRedirect properties: ssoIntegrationEnabled: type: boolean autoRedirect: type: boolean defaultWorkspaceId: description: Id of the workspace, which is used by default while working with the system. type: string example: WSPACE1 "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/system/configuration": get: tags: - Auth summary: System configuration description: Global parameters of system configuration. operationId: getSystemConfigurationV2 security: [{}] responses: "200": description: Success content: application/json: schema: type: object required: - authConfig properties: defaultWorkspaceId: description: Id of the workspace, which is used by default while working with the system. type: string example: WSPACE1 authConfig: type: object required: - identityProviders properties: identityProviders: type: array minItems: 1 items: type: object required: - id - type - displayName - imageSvg - loginStartEndpoint properties: id: type: string type: type: string enum: [internal, external] displayName: type: string imageSvg: type: string loginStartEndpoint: type: string refreshTokenEndpoint: type: string autoLogin: type: boolean extensions: description: List of enabled extension services for apihub type: array items: description: Extension item type: object properties: name: description: Unique name of the extension service type: string example: linter baseUrl: description: URL of the extension service type: string example: http://example.com pathPrefix: description: path for routing type: string example: api-linter "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" /api/v1/logout: post: tags: - Auth summary: User logout description: Logs out the authenticated user and invalidates all active sessions. operationId: logoutUser security: - BearerAuth: [] - CookieAuth: [] responses: "204": description: No content content: {} '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Unauthorized: $ref: "#/components/examples/Unauthorized" '500': description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/export": post: tags: - Export summary: Async export of version, document or operations group description: | Start export of package version, one document or operations group. Use ```GET /api/v1/export/{exportId}/status``` to get status of export and exported file itself.\ Export of document is currently available for documents with type openapi-3-1, openapi-3-0, or openapi-2-0 and is intended to retrieve content with some transformations. For other document types, use GET /api/v2/packages/{packageId}/versions/{version}/files/{slug} to obtain the original document content.\ Export of operations group is currently available for groups with apiType = REST, GraphQL or AsyncAPI. operationId: postExport requestBody: description: | Defines an entity that shall be exported and export settings.\ The following entities can be exported: - **version** - export of all documents from the version. - **OpnAPI document** - export of one specific document with type openapi-3-1, openapi-3-0, or openapi-2-0. - **REST operations group** - export of operations group. Only operations group with apiType = REST can be exported. - **GraphQL operations group** - export of operations group. Only operations group with apiType = GraphQL can be exported. - **AsyncAPI operations group** - export of operations group. Only operations group with apiType = AsyncAPI can be exported. content: application/json: schema: oneOf: - $ref: "#/components/schemas/ExportVersion" - $ref: "#/components/schemas/ExportRestDocument" - $ref: "#/components/schemas/ExportRestOperationsGroup" - $ref: "#/components/schemas/ExportGraphqlOperationsGroup" - $ref: "#/components/schemas/ExportAsyncapiOperationsGroup" discriminator: propertyName: exportedEntity responses: "202": description: Export process started content: application/json: schema: type: object properties: exportId: type: string description: Export process Id format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" VersionNotFound: $ref: "#/components/examples/VersionNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/export/{exportId}/status": parameters: - name: exportId description: Export process id. in: path required: true schema: type: string format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc get: tags: - Export summary: Get status of async export description: | Get status of async export operation (POST /api/v1/export). If file for export is ready, then it will be returned. The resulting file is stored temporarily; once deleted, it needs to be re-calculated. operationId: getExportIdStatus responses: '200': description: Success content: application/json: schema: type: object properties: status: description: | Export process status.\ "none" status means - not started. type: string enum: - running - error - none message: description: The message for **error** status. type: string application/octet-stream: schema: type: string format: binary description: | File to download. headers: Content-Disposition: schema: type: string description: | File name for exported entity. - if version was exported: _. - if document was exported: __. - if operations group was exported: __. example: attachment; filename="PCKG1.zip" '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: IncorrectInputParams: $ref: '#/components/examples/IncorrectInputParameters' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Unauthorized: $ref: "#/components/examples/Unauthorized" '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: PackageNotFound: $ref: '#/components/examples/PackageNotFound' VersionNotFound: $ref: '#/components/examples/VersionNotFound' FileNotFound: $ref: '#/components/examples/FileNotFound' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: InternalServerError: $ref: '#/components/examples/InternalServerError' /api/v4/activity: get: tags: - Packages summary: Get activity history description: | Get activity history. Return the last N events in descending date order. operationId: getActivityV4 parameters: - name: onlyFavorite description: | * If true, then only events from packages that are favorites for the current user shall be returned (including all child groups/packages/dashboards for favorite groups/workspaces) * If false, events for all packages shall be returned. in: query schema: type: boolean default: false - name: onlyShared in: query description: filter only shared packages schema: type: boolean default: false - name: kind in: query description: | Filter by package kind. The list of values is acceptable. In this case, the following pattern will be used: ```?kind=group,package,dashboard```. schema: type: array items: type: string enum: - workspace - group - package - dashboard example: [group, package, dashboard] - name: types description: | Filter for events by group types: * package_members - grant_role, update_role, delete_role. * package_security - generate_api_key, revoke_api_key. * new_version - publish_new_version. * package_version - patch_version_meta, delete_version, publish_new_revision, delete_revision. * package_management - create_package, delete_package, patch_package_meta. * operations_group - create_manual_group, delete_manual_group, update_operations_group_parameters in: query schema: type: array items: type: string enum: - package_members - package_security - new_version - package_version - package_management - operations_group - name: textFilter in: query description: Filter by userName/packageName schema: type: string - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: type: object properties: events: type: array items: type: object required: - date - principal - packageId - packageName - kind - params properties: date: description: Date when event was generated type: string format: date-time principal: $ref: "#/components/schemas/ActivityHistoryPrincipal" packageId: description: Package unique string identifier (full alias) type: string packageName: description: Package name type: string kind: description: Package kind type: string enum: - workspace - group - package - dashboard eventType: description: Activity event type type: string enum: - generate_api_key - revoke_api_key - create_package - delete_package - grant_role - delete_role - update_role - publish_new_version - delete_version - delete_revision - publish_new_revision - patch_version_meta - patch_package_meta - create_manual_group - delete_manual_group - update_operations_group_parameters - update_document_shareability params: type: object description: Events specific params oneOf: - type: object title: ParamsForGrantAndDeleteRole description: params for grant_role and delete_role events required: - memberId - memberName - roles properties: memberId: description: Login of the member type: string example: user1221 memberName: description: User which was added/deleted to/from package with some role(s) type: string example: John Doe roles: type: array items: $ref: "#/components/schemas/Role" - type: object title: ParamsForUpdateRole description: params for update_role event required: - memberId - memberName properties: memberId: description: Login of the member type: string example: user1221 memberName: description: User which was added/deleted to/from package with some role(s) type: string example: John Doe - type: object title: ParamsForPublishAndDeleteVersion description: params for publish_new_version and delete_version events required: - version - status properties: version: description: Package version name. type: string example: "22.3" status: $ref: "#/components/schemas/VersionStatusEnum" - type: object title: ParamsForPublishNewRevision description: params for publish_new_revision event required: - version - revision - status properties: version: description: Package version name. type: string example: "22.3" revision: description: Number of the revision. type: integer format: int32 example: 3 status: $ref: "#/components/schemas/VersionStatusEnum" - type: object title: ParamsForUpdateVersionMeta description: params for patch_version_meta event required: - version - versionMeta properties: version: description: Package version name. type: string example: "22.3" versionMeta: description: List of parameters that was updated in version type: array items: type: string enum: - status - label - type: object title: ParamsForPatchPackageMeta description: params for patch_package_meta event required: - packageMeta properties: packageMeta: description: List of parameters that was updated in package type: array items: type: string enum: - name - description - serviceName - defaultRole - type: object title: ParamsForPostDeleteManualGroups description: | params for the following events: * create_manual_group * deleted_manual_group required: - version - groupName - apiType properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "22.3@2" notLatestRevision: type: boolean default: false description: If parameter is not returned, then it is latest revision. groupName: description: Manual group name type: string apiType: type: string enum: - rest - graphql - protobuf - asyncapi - type: object title: ParamsForPatchOperationsGroup description: | params for the update_operations_group_parameters event required: - version - groupName - groupsParams - isPrefixGroup - apiType properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "22.3@2" apiType: type: string enum: - rest - graphql - asyncapi notLatestRevision: description: If parameter is not returned, then it is latest revision. type: boolean default: false groupName: description: Manual group name type: string groupsParams: description: List of parameters that was updated in group type: array items: type: string enum: - name - description - template - operations isPrefixGroup: type: boolean description: true - if the group created automatically via restGroupingPrefix. - type: object title: ParamsForDeleteRevision description: | params for delete_revision event required: - version - status properties: version: description: Package version name with revision. The @ format is used. type: string example: "4@2" status: $ref: "#/components/schemas/VersionStatusEnum" - type: object title: ParamsForUpdateDocumentShareability description: params for update_document_shareability event required: - version - documentDisplayName - shareabilityStatus properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "22.3@2" notLatestRevision: type: boolean default: false description: If parameter is not returned, then it is latest revision. documentDisplayName: description: Title + version of the document whose shareability was updated type: string example: "API Specification 1.0.0" shareabilityStatus: description: New shareability status type: string enum: - shareable - non-shareable - unknown "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages": post: tags: - Packages - Admin summary: Create a new package description: Create a new package in APIHUB registry. operationId: postPackages requestBody: description: Package for creation content: application/json: schema: $ref: "#/components/schemas/PackageCreate" examples: {} required: true responses: "201": description: Created content: application/json: schema: allOf: - $ref: "#/components/schemas/Package" - type: object properties: parents: description: List of all parent packages type: array items: $ref: "#/components/schemas/PackageList" examples: {} "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" get: tags: - Packages summary: Get packages list description: Retrieve the packages list. operationId: getPackages parameters: - name: parentId in: query description: Filter by the parent package Id. schema: type: string example: QS.CQSS.CPQ - name: kind in: query description: | Filter the packages by kind. The list of values is acceptable. In this case, the following pattern will be used: ```?kind=group,package,dashboard```. If not transmitted, the default value will be used. schema: type: array items: type: string enum: - workspace - group - package - dashboard default: [workspace] example: [group, package, dashboard] - name: showAllDescendants in: query description: | Show all the descendants to the parent workspace or group. * If ```true```, return the list of all child groups/packages/dashboards to the parentId (take into account all other filter parameters). * If the parentId is not transmitted??? * If the parent is transmitted, but kind not - and parentId = package??? schema: type: boolean default: false - name: textFilter in: query description: filter by name/alias/label. schema: type: string - name: onlyFavorite in: query description: filter only favorite packages schema: type: boolean default: false - name: onlyShared in: query description: filter only shared packages schema: type: boolean default: false - name: lastReleaseVersionDetails in: query description: | Show/hide the detailed info about the last release version and it's changes, comparing with the previous one. schema: type: boolean default: false - name: serviceName description: Service name that package belongs to. Should be equal to service deployment name in kubernetes. in: query schema: type: string example: "quote-tmf-service" - $ref: "#/components/parameters/showParents" - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: description: Whole packages list with paging. type: object properties: packages: type: array title: Detailed package items: required: - packageId - alias - name allOf: - $ref: "#/components/schemas/Package" - type: object properties: parents: description: List of all parent packages type: array items: $ref: "#/components/schemas/PackageList" lastReleaseVersionDetails: type: object description: | Details about the last release version and it's changes with previous version. * Returns only if the lastReleaseVersionDetails:true and the lastReleaseVersion is explicitly filled in on a package. * Otherwise - will be omitted in the answer. properties: version: description: | Last release version specified on the package.The @ mask is used to return the revision number. type: string example: "2022.4@2" notLatestRevision: type: boolean default: false summary: $ref: "#/components/schemas/ChangeSummary" examples: {} "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}": parameters: - $ref: "#/components/parameters/packageId" get: tags: - Packages summary: Get package by Id description: Common information about the selected package without files and references. operationId: getPackagesId parameters: - $ref: "#/components/parameters/showParents" responses: "200": description: Success content: application/json: schema: allOf: - $ref: "#/components/schemas/Package" - type: object properties: parents: description: List of all parent packages type: array items: allOf: - $ref: "#/components/schemas/PackageList" - type: object properties: hasReadPermission: type: boolean description: true - if current user has read permission fot this package defaultReleaseVersion: description: | Default release version for the package. Only `release` version may be placed as default. Return the error otherwise. The @ mask is used to return the revision number. type: string example: "2023.1@5" defaultVersion: description: | Default release version for the package. It is calculable by the algorithm: * If defaultReleaseVersion is filled in on the package explicitly, return it. * If not - return the last published version (by name) with "release" status. * If there were no published release versions, return the last published "draft" version (by date). * Otherwise - return "". The @ mask is used to return the revision number. type: string example: "2023.1@5" examples: Package: $ref: "#/components/examples/Package" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" patch: tags: - Packages - Admin summary: Change the package's parameters description: | Change the package's parameters. * If the parameter is not transmitted in request - its value stays unchanged. * The empty parameter value in request sets the empty value in database. operationId: patchPackagesId requestBody: description: Package update parameters content: application/json: schema: $ref: "#/components/schemas/PackageUpdate" responses: "200": description: Success content: application/json: schema: allOf: - $ref: "#/components/schemas/Package" - type: object properties: parents: description: List of all parent packages type: array items: $ref: "#/components/schemas/PackageList" defaultReleaseVersion: description: | Default release version for the package. Only `release` version may be placed as default. Return the error otherwise. type: string example: "2023.1" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "422": description: Unprocessable Entity content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" delete: tags: - Packages - Admin summary: Delete package description: Delete the package and all included published versions. operationId: deletePackagesId responses: "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageReferencedByDashboard: $ref: "#/components/examples/PackageReferencedByDashboard" GroupOrWorkspaceReferencedByDashboard: $ref: "#/components/examples/GroupOrWorkspaceReferencedByDashboard" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/exportConfig": parameters: - $ref: "#/components/parameters/packageId" get: tags: - Packages summary: Get package configuration for documents export settings. description: Returns information about the configured document export settings for the current package. operationId: getPackageIdExportConfig responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/PackageExportConfig" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" patch: tags: - Packages summary: Change parameter of package export config. description: | Change parameter of package export config: - If the parameter is not transmitted in request - its value stays unchanged. - The empty parameter value in request sets the empty value in database. "create_and_update_package" permission is necessary to update package export config. operationId: patchPackagesIdExportConfig requestBody: description: Parameters of package export config for update. content: application/json: schema: $ref: "#/components/schemas/PackageExportConfigUpdate" responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/PackageExportConfig" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "422": description: Unprocessable Entity content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" /api/v4/packages/{packageId}/activity: get: tags: - Packages summary: Get activity history for the package description: | Get activity history for specific package. Return the last N events in descending date order. operationId: getPackageIdActivityV4 parameters: - name: packageId description: Package unique string identifier (full alias). in: path required: true schema: type: string - name: types description: | Filter for events by group types: * package_members - grant_role, update_role, delete_role. * package_security - generate_api_key, revoke_api_key. * new_version - publish_new_version. * package_version - patch_version_meta, delete_version, publish_new_revision, delete_revision. * package_management - create_package, delete_package, patch_package_meta. * operations_group - create_manual_group, delete_manual_group, update_operations_group_parameters in: query schema: type: array items: type: string enum: - package_members - package_security - new_version - package_version - package_management - operations_group - name: includeRefs in: query description: If true, then events for specified package and all its referenced packages (on any level of hierarchy) shall be returned schema: type: boolean default: false - name: textFilter in: query description: Filter by userName/packageName schema: type: string - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: type: object properties: events: type: array items: type: object required: - date - principal - packageId - packageName - kind - params properties: date: description: Date when event was generated type: string format: date-time principal: $ref: "#/components/schemas/ActivityHistoryPrincipal" packageId: description: Package unique string identifier (full alias) type: string packageName: description: Package name type: string kind: description: Package kind type: string enum: - workspace - group - package - dashboard eventType: description: Activity event type type: string enum: - generate_api_key - revoke_api_key - create_package - delete_package - grant_role - delete_role - update_role - publish_new_version - delete_version - delete_revision - publish_new_revision - patch_version_meta - patch_package_meta - create_manual_group - delete_manual_group - update_operations_group_parameters - update_document_shareability params: type: object description: Events specific params oneOf: - type: object title: ParamsForGrantAndDeleteRole description: params for grant_role and delete_role events required: - memberId - memberName - roles properties: memberId: description: Login of the member type: string example: user1221 memberName: description: User which was added/deleted to/from package with some role(s) type: string example: John Doe roles: type: array items: $ref: "#/components/schemas/Role" - type: object title: ParamsForUpdateRole description: params for update_role event required: - memberId - memberName properties: memberId: description: Login of the member type: string example: user1221 memberName: description: User which was added/deleted to/from package with some role(s) type: string example: John Doe - type: object title: ParamsForPublishAndDeleteVersion description: params for publish_new_version and delete_version events required: - version - status properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "22.3@1" notLatestRevision: type: boolean default: false status: $ref: "#/components/schemas/VersionStatusEnum" - type: object title: ParamsForPublishNewRevision description: params for publish_new_revision event required: - version - status properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "22.3@2" notLatestRevision: type: boolean default: false status: $ref: "#/components/schemas/VersionStatusEnum" - type: object title: ParamsForUpdateVersionMeta description: params for patch_version_meta event required: - version - versionMeta properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "22.3@2" notLatestRevision: type: boolean default: false versionMeta: description: List of parameters that was updated in version type: array items: type: string enum: - status - label - type: object title: ParamsForPatchPackageMeta description: params for patch_package_meta event required: - packageMeta properties: packageMeta: description: List of parameters that was updated in package type: array items: type: string enum: - name - description - serviceName - defaultRole - type: object title: ParamsForPostDeleteManualGroups description: | params for the following events: * create_manual_group * deleted_manual_group required: - version - groupName - apiType properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "22.3@2" notLatestRevision: type: boolean default: false description: If parameter is not returned, then it is latest revision. groupName: description: Manual group name type: string apiType: type: string enum: - rest - graphql - protobuf - asyncapi - type: object title: ParamsForPatchOperationsGroup description: | params for the update_operations_group_parameters event required: - version - groupName - groupsParams - isPrefixGroup - apiType properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "22.3@2" notLatestRevision: description: If parameter is not returned, then it is latest revision. type: boolean default: false groupName: description: Manual group name type: string groupsParams: description: List of parameters that was updated in group type: array items: type: string enum: - name - description - template - operations isPrefixGroup: type: boolean description: true - if the group created automatically via restGroupingPrefix. apiType: type: string enum: - rest - graphql - protobuf - asyncapi - type: object title: ParamsForDeleteRevision description: | params for delete_revision event required: - version - status properties: version: description: Package version name with revision. The @ format is used. type: string example: "4@2" status: $ref: "#/components/schemas/VersionStatusEnum" - type: object title: ParamsForUpdateDocumentShareability description: params for update_document_shareability event required: - version - documentDisplayName - shareabilityStatus properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "22.3@2" notLatestRevision: type: boolean default: false description: If parameter is not returned, then it is latest revision. documentDisplayName: description: Title + version of the document whose shareability was updated type: string example: "API Specification 1.0.0" shareabilityStatus: description: New shareability status type: string enum: - shareable - non-shareable - unknown "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v4/packages/{packageId}/apiKeys": parameters: - $ref: "#/components/parameters/packageId" post: tags: - Admin summary: Create a package API Key description: | Create a package API Key. The Api Key for package with kind:group is acceptable for all child groups and packages.\ If packageId = '\*', then system tokens shall be created. Only system administrator can specify packageId = '\*'. operationId: postPackagesIdApiKeysV4 requestBody: description: Create API key parameters content: application/json: schema: type: object properties: name: type: string description: API key name. Name must be unique. roles: description: List of roles for api key. Limited by user's available roles, i.e. only available roles could be set. List of available roles could be retrieved via "/packages/{packageId}/availableRoles" endpoint. type: array items: type: string createdFor: type: string description: id of the user for whom the API key shall be created. example: user1221 required: - name responses: "200": description: Success content: application/json: schema: allOf: - $ref: "#/components/schemas/PackageApiKey" - type: object properties: apiKey: description: | Generated ApiKey. It shows only once. Need to copy to your credentials storage. type: string examples: {} "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" get: tags: - Admin summary: Package API Keys list retrieve description: | Get a package API Keys list.\ If packageId = '\*', then system tokens shall be returned. Only system administrator can specify packageId = '\*'. operationId: getPackagesIdApiKeysV4 responses: "200": description: Success content: application/json: schema: type: object properties: apiKeys: description: List of apikeys for package. type: array items: $ref: "#/components/schemas/PackageApiKey" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/apiKeys/{id}": parameters: - $ref: "#/components/parameters/packageId" - name: id description: Package API key Id in: path required: true schema: type: string delete: tags: - Admin summary: Delete package API Key description: | Delete package API Key.\ If packageId = '\*', then system token with specified id shall be deleted. Only system administrator can specify packageId = '\*'. operationId: deletePackagesIdApiKeysId responses: "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/personalAccessToken": post: tags: - User profile summary: Create a personal access token description: | Generates a new personal access token for the current user.\ User cannot have more than 100 tokens. The limitation is applicable to active and expired tokens which are not deleted. operationId: postPersonalAccessToken requestBody: description: Create personal access token parameters content: application/json: schema: type: object properties: name: type: string description: Name of the personal access token. The name must be unique per user. example: token1 daysUntilExpiry: type: integer description: | The number of days after which the token will expire.\ * "-1" means that token does not have an expiration date. * "0" is prohibited. minimum: -1 required: - name - daysUntilExpiry responses: '201': description: Created content: application/json: schema: allOf: - $ref: '#/components/schemas/PersonalAccessToken' - type: object required: - token properties: token: description: > Generated personall acess token. type: string examples: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: IncorrectInputParams: $ref: '#/components/examples/IncorrectInputParameters' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Unauthorized: $ref: "#/components/examples/Unauthorized" '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: {} '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: InternalServerError: $ref: '#/components/examples/InternalServerError' get: tags: - User profile summary: Personal access token list retrieve description: > Retrieve all personal access token that have been generated for the current user.\ User cannot have more than 100 tokens. The limitation is applicable to active and expired tokens which are not deleted. operationId: getPersonalAccessToken responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/PersonalAccessToken' examples: {} '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Unauthorized: $ref: "#/components/examples/Unauthorized" '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: {} '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: InternalServerError: $ref: '#/components/examples/InternalServerError' "/api/v1/personalAccessToken/{id}": parameters: - name: id description: Personal access token Id in: path required: true schema: type: string delete: tags: - User profile summary: Delete personal access token description: > Delete personal access token. Deleted token cannot be used to authenticate to APIHUB. operationId: deletePersonalAccessToken responses: '204': description: No content content: {} '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Unauthorized: $ref: "#/components/examples/Unauthorized" '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: {} '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: {} '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: InternalServerError: $ref: '#/components/examples/InternalServerError' "/api/v2/packages/{packageId}/favor": parameters: - $ref: "#/components/parameters/packageId" post: tags: - Packages - Users summary: Favor package description: Add the package to favorite list for the user. The user is taken from the token info. operationId: postPackagesIdFavor responses: "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/disfavor": parameters: - $ref: "#/components/parameters/packageId" post: tags: - Packages - Users summary: Disfavor package description: Remove the package from favorite list for the user. The user is taken from the token info. operationId: postPackagesIdDisfavor responses: "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/publish": parameters: - $ref: "#/components/parameters/packageId" post: tags: - Publish - Admin summary: Publish package version via upload description: | Publish package version via upload. Possible options: * **Client-side building** - client application marks, that the validation and build of the final specification will be outside the APIHUB backend. The final specifications will be stored using the POST /packages/{packageId}/publish/{publishId}/status API. The 202 response and the publish process Id will be returned in success. In case of the client session close, the build will be continued on the server-sde. * **Server-side building** - client application send all raw files-sources and starts the validation and build of the final specification in APIHUB backend. The 202 response and the publish process Id will be returned in success. * **No building** - only references publication. Files array in config and sources are empty. In this case the build process won't be started. The 204 response will be returned in success. operationId: postPackagesIdPublish parameters: - name: clientBuild in: query description: Client-side package build will be used. Should be used only for browser-based build process. required: false schema: type: boolean default: false - name: resolveRefs in: query required: false description: With resolveRefs=true all references will be resolved into a flat list. With resolveRefs=false it's expected that all references are already resolved. schema: type: boolean default: true - name: resolveConflicts in: query required: false description: "In case when resolved refs list contains multiple versions of the same package: - if resolveConflicts=false - status 400 (Bad request). Conflicts should be resolved manually. - if resolveConflicts=true - conflicts will be resolved automatically, some refs will be marked as excluded" schema: type: boolean default: true requestBody: description: Publish params content: multipart/form-data: schema: type: object required: - config properties: sources: type: string description: | Files for publish in one zip archive. **Required**, if the files array is filled in the config. format: binary config: $ref: "#/components/schemas/BuildConfig" builderId: type: string description: Builder identifier. **Required** only if clientBuild=true. Used to bind the build to specific executor. responses: "202": description: Publish process started content: application/json: schema: oneOf: - type: object title: serverBuild properties: publishId: type: string description: Publish process Id format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc - type: object title: clientBuild description: Returns final build config when clientBuild=true properties: publishId: type: string description: Publish process Id format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc config: $ref: "#/components/schemas/BuildConfig" "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" PreviousVersionNotRelease: $ref: "#/components/examples/PreviousVersionNotRelease" VersionReferencedAsPreviousByRelease: $ref: "#/components/examples/VersionReferencedAsPreviousByRelease" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden. Editor or admin rights for the package are required to publish version. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/publish/{publishId}/status": parameters: - $ref: "#/components/parameters/packageId" - name: publishId description: Publish Id in: path required: true schema: type: string format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc get: tags: - Publish - Admin summary: Get publish process status description: Get publish process status. operationId: getPackagesIdPublishIdStatus responses: "200": description: Success content: application/json: schema: type: object properties: status: description: Publish process status. type: string enum: - running - error - complete - none message: description: The message for **error** status. type: string "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/publish/withOperationsGroup": parameters: - $ref: '#/components/parameters/packageId' post: tags: - Publish summary: Start dashboard version publication from CSV file deprecated: true x-deprecation-reason: Use /api/v2/packages/{packageId}/publish/withOperationsGroup/{apiType} instead description: | Start dashboard version publication from CSV file (value of 'packageId' path parameter must be an Id of dashboard).\ In this process the system reads information from the input CSV file which contains list of services and their versions. Based on this info, the system searches for package release versions and publish dashboard version with references to the found package versions.\ Also, CSV file contains info about REST API operations (method, path) of listed services, the system searches for operations from the included package versions and automatically creates operations group (manual group with rest api type) in published dashboard version with all found operations. operationId: DashboardPublishWithOperationsGroup requestBody: content: multipart/form-data: schema: type: object required: - csvFile - version - status - servicesWorkspaceId properties: csvFile: description: | CSV file with information about services and their operations: * serviceName * serviceVersion * method * path type: string format: binary servicesWorkspaceId: type: string description: Id of the workspace in which the system will search for packages for the services specified in the CSV file. version: description: Version name for publication in the dashboard. type: string example: '2022.3' previousVersion: description: Name of the previous published version in the dashboard. type: string example: '2022.2' previousVersionPackageId: description: >- packageId of the previous version. The parameter may be empty if the value is equal to the packageId. type: string example: NC.CloudBSS.CPQ.Q-TMF status: $ref: '#/components/schemas/VersionStatusEnum' versionLabels: description: List of version labels in dashboard version. type: array items: type: string example: - part-of:CloudBSS-CPQBE responses: '202': description: Publish process started content: application/json: schema: type: object properties: publishId: type: string description: Publish process Id format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: IncorrectInputParams: $ref: '#/components/examples/IncorrectInputParameters' PreviousVersionNotRelease: $ref: '#/components/examples/PreviousVersionNotRelease' VersionReferencedAsPreviousByRelease: $ref: '#/components/examples/VersionReferencedAsPreviousByRelease' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Unauthorized: $ref: "#/components/examples/Unauthorized" '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: {} '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: PackageNotFound: $ref: '#/components/examples/PackageNotFound' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: InternalServerError: $ref: '#/components/examples/InternalServerError' "/api/v1/packages/{packageId}/publish/{publishId}/withOperationsGroup/status": parameters: - $ref: '#/components/parameters/packageId' - name: publishId description: Publish Id in: path required: true schema: type: string format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc get: tags: - Publish summary: Get dashboard version publication from CSV file status description: | Get dashboard version publication from CSV file status. operationId: getDashboardPublishWithOperationsGroupStatus responses: '200': description: Success content: application/json: schema: type: object properties: status: description: Publish process status. type: string enum: - running - error - complete - none message: description: | * The message for **error** status. * The message for **complete** status with the following information (if applicalbe): * N services were not included into dashboard version. * N operations were not included into \ operation group. If all services and operations were included into dashboard and group, then message shall be empty. type: string '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Unauthorized: $ref: "#/components/examples/Unauthorized" '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: {} '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: PackageNotFound: $ref: '#/components/examples/PackageNotFound' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: InternalServerError: $ref: '#/components/examples/InternalServerError' "/api/v1/packages/{packageId}/publish/{publishId}/withOperationsGroup/status/report": parameters: - $ref: '#/components/parameters/packageId' - name: publishId description: Publish Id in: path required: true schema: type: string format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc get: tags: - Publish summary: Get CSV report of dashboard version publication from CSV file description: | CSV file with initial input information which is added with status and error messages for each row. operationId: getDashboardPublishWithOperationsGroupStatusReport responses: '200': description: Success content: text/csv: schema: type: string format: binary description: CSV file which contains initial (input) content and supplemented with information about status and details info if any problems occured (package version was not found, operation was not found, insufficient information provided). '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Unauthorized: $ref: "#/components/examples/Unauthorized" '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: {} '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: PackageNotFound: $ref: '#/components/examples/PackageNotFound' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: InternalServerError: $ref: '#/components/examples/InternalServerError' "/api/v2/packages/{packageId}/publish/withOperationsGroup/{apiType}": parameters: - $ref: '#/components/parameters/packageId' - name: apiType description: Type of the API. Only REST and GraphQL are supported for CSV publish. in: path required: true schema: type: string enum: - rest - graphql post: tags: - Publish summary: Start dashboard version publication from CSV file description: | Start dashboard version publication from CSV file (value of 'packageId' path parameter must be an Id of dashboard). In this process the system reads information from the input CSV file which contains list of services and their versions. Based on this info, the system searches for package release versions (in the specified workspace) and publishes a dashboard version with references to the found package versions. Also, the CSV file contains info about operations of listed services, the system searches for operations from the included package versions and automatically creates an operations group (manual group with the specified api type) in the published dashboard version with all found operations. CSV file columns depend on the API type, all columns are mandatory: * **REST**: service, version, method, path * **GraphQL**: service, version, type, method operationId: DashboardPublishWithOperationsGroupV2 requestBody: content: multipart/form-data: schema: type: object required: - csvFile - version - status - servicesWorkspaceId properties: csvFile: description: | CSV file with information about services and their operations. Columns depend on the API type: * **REST**: service, version, method, path * **GraphQL**: service, version, type, method type: string format: binary servicesWorkspaceId: type: string description: Id of the workspace in which the system will search for packages for the services specified in the CSV file. version: description: Version name for publication in the dashboard. type: string example: '2022.3' previousVersion: description: Name of the previous published version in the dashboard. type: string example: '2022.2' previousVersionPackageId: description: >- packageId of the previous version. The parameter may be empty if the value is equal to the packageId. type: string example: NC.CloudBSS.CPQ.Q-TMF status: $ref: '#/components/schemas/VersionStatusEnum' versionLabels: description: List of version labels in dashboard version. type: array items: type: string example: - part-of:CloudBSS-CPQBE responses: '202': description: Publish process started content: application/json: schema: type: object properties: publishId: type: string description: Publish process Id format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: IncorrectInputParams: $ref: '#/components/examples/IncorrectInputParameters' PreviousVersionNotRelease: $ref: '#/components/examples/PreviousVersionNotRelease' VersionReferencedAsPreviousByRelease: $ref: '#/components/examples/VersionReferencedAsPreviousByRelease' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Unauthorized: $ref: "#/components/examples/Unauthorized" '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: {} '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: PackageNotFound: $ref: '#/components/examples/PackageNotFound' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: InternalServerError: $ref: '#/components/examples/InternalServerError' "/api/v3/packages/{packageId}/versions": parameters: - $ref: "#/components/parameters/packageId" get: tags: - Versions summary: Get package versions list description: Get the published package's versions list. operationId: getPackagesIdVersionsV3 parameters: - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" - name: textFilter in: query description: Filter by version name|labels. schema: type: string - name: status in: query description: Filter versions by status (start with match) required: false schema: type: string enum: - draft - release - archived - name: checkRevisions in: query description: | Flag, if to search in the previous versions revisions. * if several revisions were found, return only the maximum found value. * if false - return the last published revision. schema: type: boolean default: false - name: versionLabel in: query description: | Filter the package versions by label, exact match. * if the checkRevisions: false - search in the last published revision. * if the checkRevisions: true - search in all revisions (backward order). schema: type: string example: "app.kubernetes.io/version:release-2022.4-20230228.094427-171" - name: sortBy in: query description: Sort versions by version name or creation date schema: type: string enum: - version - createdAt default: version - name: sortOrder in: query description: Sorting order schema: type: string enum: - asc - desc default: desc responses: "200": description: Success content: application/json: schema: description: Whole package versions list with paging. type: object properties: versions: type: array items: $ref: "#/components/schemas/PackageVersion" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}": parameters: - $ref: "#/components/parameters/packageId" patch: tags: - Versions - Admin summary: Update package version description: | Update package version. * If the parameter is not transmitted in request - its value stays unchanged. * The empty parameter value in request sets the empty value in database. * The array of labels will be fully replaced as-it-send, no JSON-Patch approach for arrays is applicable. operationId: patchPackagesIdVersionsIdV2 parameters: - $ref: "#/components/parameters/version" requestBody: description: Version update params content: application/json: schema: type: object properties: status: $ref: "#/components/schemas/VersionStatusEnum" versionLabels: description: List of version labels. type: array items: type: string example: ["app.kubernetes.io/part-of:CloudQSS-CPQBE", "app.kubernetes.io/version:release-candidate-20230410.152115-2782"] responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/PackageVersionContent" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" VersionStatusChangePreviousVersionNotRelease: $ref: "#/components/examples/VersionStatusChangePreviousVersionNotRelease" VersionReferencedAsPreviousByRelease: $ref: "#/components/examples/VersionReferencedAsPreviousByRelease" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "422": description: Unprocessable Entity content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" delete: tags: - Versions - Admin summary: Delete package version description: | Delete the package's version. If the version was placed as a "defaultReleaseVersion" on a package, it will be cleared on this package (without the previous version restore). operationId: deletePackagesIdVersionsId parameters: - $ref: "#/components/parameters/version" responses: "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "409": description: Conflict content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: VersionReferencedByDashboard: $ref: "#/components/examples/VersionReferencedByDashboard" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}": parameters: - $ref: "#/components/parameters/packageId" get: tags: - Versions summary: Get package version content description: Get the published package's version content. Returns all content objects and folders. operationId: getPackagesIdVersionsIdV4 parameters: - name: version in: path description: | Package version. The mask @ may be used for search in a specific revision. required: true schema: type: string example: 22.3@3 - name: includeSummary in: query description: Show/hide the summary info about changes and operations. schema: type: boolean default: false - name: includeOperations in: query description: Show/hide the version's operations list. schema: type: boolean default: false - name: includeGroups in: query description: Flag to define whether to return list of groups of current version or not. schema: type: boolean default: false - name: sortBy in: query description: Sort versions by version name or creation date schema: type: string enum: - version - createdAt default: version - name: sortOrder in: query description: Sorting order schema: type: string enum: - asc - desc default: desc responses: "200": description: Success content: application/json: schema: allOf: - $ref: "#/components/schemas/PackageVersionContent" - type: object properties: operationTypes: type: array items: type: object properties: apiType: $ref: "#/components/schemas/ApiType" changesSummary: allOf: - $ref: '#/components/schemas/ChangeSummary' - type: object description: Number of declarative changes in the version. numberOfImpactedOperations: allOf: - $ref: '#/components/schemas/ChangeSummary' - type: object description: Number of operations impacted by each severety type. operationsCount: type: number deprecatedCount: type: number noBwcOperationsCount: type: number description: Number of no-BWC operations. internalAudienceOperationsCount: type: number description: Number of operations with apiAudience = internal unknownAudienceOperationsCount: type: number description: Number of operations with apiAudience = unknown apiAudienceTransitions: type: array description: Shows transitions of operations' apiAudience value (compared to the previous release version) and number of operations in which this transition occurred. The array contains only records of transitions that actually occurred in operations. items: type: object properties: currentAudience: type: string description: Current apiAudience value (currentAudience must not be equal to previousAudience) enum: - internal - external - unknown previousAudience: type: string description: Previous apiAudience value enum: - internal - external - unknown operationsCount: type: number description: Number of operations in which the apiAudience was changed from previousAudience to currentAudience contractsSummary: $ref: "#/components/schemas/VersionContractsSummary" - type: object properties: operationGroups: type: array description: | List of groups. items: allOf: - $ref: "#/components/schemas/CreateOperationGroup" - type: object required: - operationsCount properties: operationsCount: type: number description: Number of operations in operation group ghostOperationsCount: type: number description: Number of ghost operations in operation group "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/changes/summary": get: tags: - Changes summary: Get changes summary description: | Get summary of changes between two packages versions. operationId: getPackageIdVersionChangesSummary parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" responses: "200": description: Success content: application/json: schema: oneOf: - type: object title: packageComparison description: List of changes data. required: - operationTypes properties: operationTypes: type: array items: type: object properties: apiType: $ref: "#/components/schemas/ApiType" numberOfImpactedOperations: allOf: - $ref: '#/components/schemas/ChangeSummary' - type: object description: Number of operations impacted by each severety type. changesSummary: allOf: - $ref: '#/components/schemas/ChangeSummary' - type: object description: Number of declarative changes of each severety type. tags: type: array items: type: string example: ["tag1", "tag2"] noContent: type: boolean description: true - operation comparison cache is not stored in database default: false contractsChangesSummary: $ref: "#/components/schemas/VersionComparisonContractsSummary" - type: object title: dashboardComparison required: - refs - packages properties: refs: description: | Refs shows which packages in compared dashboards were added/deleted/changed and changes summary for each package: * added package - packageRef is returned * deleted package - previousPackageRef is returned returned * changed package - both packageRef and previousPackageRef are returned type: array items: type: object properties: packageRef: description: | Parent package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" previousPackageRef: description: | Parent package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" operationTypes: type: array items: type: object properties: apiType: $ref: "#/components/schemas/ApiType" numberOfImpactedOperations: allOf: - $ref: '#/components/schemas/ChangeSummary' - type: object description: Number of operations impacted by each severety type. changesSummary: allOf: - $ref: '#/components/schemas/ChangeSummary' - type: object description: Number of declarative changes of each severety type. tags: type: array items: type: string example: ["tag1", "tag2"] noContent: type: boolean description: true - operation comparison cache is not stored in database default: false contractsChangesSummary: $ref: "#/components/schemas/VersionComparisonContractsSummary" packages: $ref: "#/components/schemas/PackagesMap" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v4/packages/{packageId}/versions/{version}/{apiType}/changes": get: tags: - Changes - Versions summary: Get list of changed operations description: | Get changes between two compared package versions with details by operations.\ The result list depends on the API type. operationId: getPackagesIdVersionsIdApiTypeChangesV4 parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/apiAudience" - $ref: "#/components/parameters/asyncapiChannel" - $ref: "#/components/parameters/asyncapiProtocol" - $ref: "#/components/parameters/severity" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" - name: version in: path description: | Package version. The mask @ may be used for search in a specific revision. required: true schema: type: string example: "2022.3@3" - name: refPackageId description: Filter by package id of ref package and previous ref package. in: query schema: type: string - name: apiKind description: Filter by api kind in: query schema: type: string enum: - bwc - no-bwc - experimental - name: documentSlug in: query description: Document unique string identifier schema: type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" - name: tag in: query schema: type: string description: | A full match is required.\ Multiple tags separated by comma can be specified. - name: emptyTag in: query description: | Flag, filtering the operations without tags at all. In response will be returned the list of operations, on what the tag is not filled in. This attribute has a higher priority than the **tag**. In case, then **emptyTag: true**, it will override the **tag** filter. schema: type: boolean default: false - name: group in: query description: | Name of the group for filtering.\ The filter is applied only to the groups of current version. Groups from previous version will be ignored.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: string example: v1 - name: emptyGroup in: query description: | Flag for filtering operations without a group.\ The filter is applied only to the groups of current version. Groups from previous version will be ignored.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: boolean default: false - name: textFilter in: query description: | Filter by operation's title/path/method. For AsyncAPI: searches by message title(or messageId), channel title(or channelId) or operation action. schema: type: string - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: type: object required: - operations properties: previousVersion: description: Name of the previous published version. The @ mask is used to return the revision number. type: string example: "2022.2@5" previousVersionPackageId: description: Previous release version package id. type: string example: "QS.CloudQSS.CPQ.Q-TMF" operations: type: array items: allOf: - oneOf: - title: RestOperation type: object properties: previousOperation: $ref: "#/components/schemas/RestOperationInfoFromDifferentVersions" currentOperation: $ref: "#/components/schemas/RestOperationInfoFromDifferentVersions" - title: GraphQLOperation type: object required: - type - method properties: previousOperation: $ref: "#/components/schemas/GqlOperationInfoFromDifferentVersions" currentOperation: $ref: "#/components/schemas/GqlOperationInfoFromDifferentVersions" - title: AsyncAPIOperation description: AsyncAPI 3.0 operation change entry. Type-specific fields (action, channel, protocol) are inside previousOperation/currentOperation. type: object properties: previousOperation: $ref: "#/components/schemas/AsyncAPIOperationInfoFromDifferentVersions" currentOperation: $ref: "#/components/schemas/AsyncAPIOperationInfoFromDifferentVersions" - type: object required: - changeSummary - comparisonInternalDocumentId properties: changeSummary: allOf: - $ref: "#/components/schemas/ChangeSummary" - type: object description: Number of declarative changes in one specific operation. comparisonInternalDocumentId: description: > Unique string identifier of the internal merged document, where diffs between operation and previous operation are present. Corresponds to `id` field for the document in `comparison-internal-documents.json` type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-qitmf-v5-12-merged-json" packages: $ref: "#/components/schemas/PackagesMap" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" /api/v3/packages/{packageId}/versions/{version}/{apiType}/export/changes: parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/apiAudience" - $ref: "#/components/parameters/asyncapiChannel" - $ref: "#/components/parameters/asyncapiProtocol" - $ref: "#/components/parameters/severity" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" - name: refPackageId description: Filter by package id of ref package and previous ref package. in: query schema: type: string - name: apiKind description: Filter by api kind in: query schema: type: string enum: - bwc - no-bwc - experimental - name: tag in: query schema: type: string description: | A full match is required.\ Multiple tags separated by comma can be specified. - name: emptyTag in: query description: | Flag, filtering the operations without tags at all. In response will be returned the list of operations, on what the tag is not filled in. This attribute has a higher priority than the **tag**. In case, then **emptyTag: true**, it will override the **tag** filter. schema: type: boolean default: false - name: group in: query description: | Name of the group for filtering.\ The filter is applied only to the groups of current version. Groups from previous version will be ignored.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: string example: v1 - name: emptyGroup in: query description: | Flag for filtering operations without a group.\ The filter is applied only to the groups of current version. Groups from previous version will be ignored.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: boolean default: false - name: textFilter in: query description: | Filter by operation's title/path/method. For AsyncAPI: searches by message title(or messageId), channel title(or channelId) or operation action. schema: type: string get: tags: - Changes summary: Export API changes to xlsx file description: Export API changes to xlsx file operationId: getPackageIdVersionIdChangesExportV3 responses: "200": description: Success content: application/xlsx: schema: type: string format: binary description: xlsx file to download headers: Content-Disposition: schema: type: string description: xlsx file name example: attachment; filename="APIChanges_package.id_version.xlsx" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" VersionNotFound: $ref: "#/components/examples/VersionNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" /api/v2/packages/{packageId}/versions/{version}/changes/export: parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" - name: format in: query description: File format for export schema: type: string enum: - xlsx default: xlsx get: tags: - Changes summary: Export API changes to xlsx file description: Export API changes to xlsx file operationId: getPackageIdVersionIdChangesExport responses: "200": description: Success content: application/xlsx: schema: type: string format: binary description: xlsx file to download headers: Content-Disposition: schema: type: string description: xlsx file name example: attachment; filename="APIChanges_package.id_version.xlsx" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" VersionNotFound: $ref: "#/components/examples/VersionNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/sources": parameters: - $ref: "#/components/parameters/packageId" - name: version in: path description: Package version. The mask @ may be used to get resouces of the specific revision. If the @revision is not provided, the latest version's revision will be used. required: true schema: type: string example: "2022.3" get: tags: - Export - Versions summary: Export sources of package version description: | Export sources of package version as a zip archive. operationId: getPackagesIdVersionsIdSources responses: "200": description: Success content: application/octet-stream: schema: type: string format: binary description: ZIP file with pacakge version sources to download "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" VersionNotFound: $ref: "#/components/examples/VersionNotFound" FileNotFound: $ref: "#/components/examples/FileNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/config": parameters: - $ref: "#/components/parameters/packageId" - name: version in: path description: Package version. The mask @ may be used to get resouces of the specific revision. If the @revision is not provided, the latest version's revision will be used. required: true schema: type: string example: "2022.3" get: tags: - Versions summary: Get package version config description: | Get content of package version config operationId: getPackagesIdVersionsIdConfig responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/BuildConfig" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" VersionNotFound: $ref: "#/components/examples/VersionNotFound" FileNotFound: $ref: "#/components/examples/FileNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/copy": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" post: tags: - Publish - Admin summary: Copy package version to another package description: | Publish package version in target package using sources of source package (server-side building only).\ The final specifications will be stored using the POST /packages/{packageId}/publish/{publishId}/status. 202 response and the publish process Id will be returned in success. operationId: getPackageIdVersionIdCopy requestBody: content: application/json: schema: type: object required: - targetPackageId - targetVersion - targetStatus properties: targetPackageId: description: Target package unique identifier (full alias). type: string example: QS.CQSS.CPQ.TMF targetVersion: description: Version name for publication in target package. type: string example: "2022.3" targetPreviousVersion: description: Name of the previous published version in target package. type: string example: "2022.2" targetPreviousVersionPackageId: description: Package id of the previous version. The parameter may be empty if the value is equal to the targetPackageId. type: string example: "QS.CloudQSS.CPQ.Q-TMF" targetStatus: $ref: "#/components/schemas/VersionStatusEnum" targetVersionLabels: description: List of version labels in target package. type: array items: type: string example: ["part-of:CloudQSS-CPQBE"] responses: "202": description: Publish process started content: application/json: schema: type: object title: serverBuild properties: publishId: type: string description: Publish process Id format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden. No permission to publish version in current status in target package. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/compare": post: tags: - Changes summary: Version changelog async calculation description: | Calculate changes between any two packages/versions/revisions for any type of API. * **200 Comparison calculated successfully** if there is such comparison. * **202 Accepted** will be returned after starting of the async changelog calculation. operationId: postCompare parameters: - name: clientBuild in: query description: Client-side package build will be used. required: false schema: type: boolean default: false - name: builderId in: query required: false description: Builder identifier. **Required** if clientBuild=true. schema: type: string - name: reCalculate in: query description: | Flag for the force changelog re-calculation. May be used after the previous API call with **error** status. schema: type: boolean default: false requestBody: description: Changelog calculation parameters. content: multipart/form-data: schema: type: object required: - packageId - version - previousVersionPackageId - previousVersion properties: packageId: description: Package unique identifier (full alias). type: string example: QS.CQSS.CPQ.TMF version: description: | Package version. The mask @ may be used for search in a specific revision. If the @revision is not provided, the latest version's revision will be used. type: string example: "2022.3@3" previousVersionPackageId: description: Package id of the previous version to compare with. type: string example: "QS.CloudQSS.CPQ.Q-TMF" previousVersion: description: | Name of the previous published version to compare with. The mask @ may be used for search in a specific revision. If the @revision is not provided, the latest version's revision will be used. type: string example: "2022.2@4" responses: "200": description: Comparison calculated successfully "201": description: Created content: application/json: schema: type: object description: build config properties: packageId: description: Package unique identifier (full alias). type: string example: QS.CQSS.CPQ.TMF version: description: | Package version. The mask @ will be used for return in a specific revision. If the @ was not transmitted in the request - it won't be returned in response. Consider the version as the latest one. type: string example: "2022.3@3" previousVersionPackageId: description: Previous release version package id. type: string example: "QS.CloudQSS.CPQ.Q-TMF" previousVersion: description: | Name of the previous published version. The mask @ will be used for return a specific revision. If the @ was not transmitted in the request - it won't be returned in response. Consider the version as the latest one. type: string example: "2022.2@4" buildType: description: | Type of the build process. Available options are: **changelog** - Only the changelog calculation, no API contracts version will be created. type: string enum: - changelog createdBy: description: User, created the changelog build. type: string buildId: description: Id of the created build. type: string "202": description: Accepted content: application/json: schema: type: object properties: status: description: Calculation process status. type: string enum: - running - error message: description: The message for **error** status. type: string "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/{apiType}/build/groups/{groupName}/buildType/{buildType}": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - name: apiType description: Type of the API. in: path required: true schema: type: string enum: - rest - name: buildType description: | Type of the build process for OpeanAPI specification tranformation. Available options are: - **reducedSourceSpecifications** - proccess that finds source specifications for all operations from operation group and removes from these specifications operations other than those that are included into operation group. - **mergedSpecification** - process the merges all operations from an operation group into one specification. in: path required: true schema: type: string enum: - reducedSourceSpecifications - mergedSpecification - name: groupName in: path required: true description: Name of the operation group schema: type: string post: deprecated: true x-deprecation-reason: POST /api/v1/export shall be used instead of the current operation. tags: - Versions - Operation groups summary: Async document transformation description: | Async task for document transformation. Document transformation is required for exporting operations group. * **200 Documents transformation completed successfully** if documents were already transformed. * **202 Accepted** will be returned after starting process for documents transformation. operationId: postGenerateDocumentV3 parameters: - name: clientBuild in: query description: Client-side package build will be used. required: false schema: type: boolean default: false - name: builderId in: query required: false description: Builder identifier. **Required** if clientBuild=true. schema: type: string - name: reCalculate in: query description: | Flag for the force document re-calculation. May be used after the previous API call with **error** status. schema: type: boolean default: false - name: format in: query description: | Format of the exported file.\ If buidType = reducedSourceSpecifications, then format can be yaml, json or html.\ If buidType = mergedspecification, then format can be yaml or json; html is not supported for this buildType. schema: type: string enum: - yaml - json - html default: json responses: "200": description: Documents transformation completed successfully "201": description: Created content: application/json: schema: type: object description: build config properties: packageId: description: Package unique identifier (full alias). type: string example: QS.CQSS.CPQ.TMF version: description: | Package version. The mask @ will be used for return in a specific revision. If the @ was not transmitted in the request - it won't be returned in response. Consider the version as the latest one. type: string example: "2022.3@3" apiType: description: Document transformation is available only for apiType = REST type: string enum: - rest groupName: description: Name of the group type: string example: v1 buildType: description: | Type of the build process for OpeanAPI specification tranformation. Available options are: - **reducedSourceSpecifications** - proccess that finds source specifications for all operations from operation group and removes from these specifications operations other than those that are included into operation group. - **mergedSpecification** - process the merges all operations from an operation group into one specification. type: string enum: - reducedSourceSpecifications - mergedSpecification format: type: string enum: - yaml - json - html createdBy: description: The user who created the object type: string buildId: description: Id of the created build. type: string "202": description: Accepted content: application/json: schema: type: object properties: status: description: Calculation process status. type: string enum: - running - error message: description: The message for **error** status. type: string "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/{apiType}/export/groups/{groupName}/buildType/{buildType}": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - name: apiType description: Type of the API. in: path required: true schema: type: string enum: - rest - name: buildType description: | Type of the build process for OpeanAPI specification tranformation. Available options are: - **reducedSourceSpecifications** - proccess that finds source specifications for all operations from operation group and removes from these specifications operations other than those that are included into operation group. - **mergedSpecification** - process the merges all operations from an operation group into one specification. in: path required: true schema: type: string enum: - reducedSourceSpecifications - mergedSpecification - name: groupName in: path required: true description: Name of the operation group schema: type: string get: deprecated: true x-deprecation-reason: POST /api/v1/export shall be used instead of the current operation. tags: - Export - Operation groups summary: Export operations group as OpenAPI documents description: | Export all operations from an operations group (with apiType = REST API) as OpenAPI specification(s). operationId: getPackagesIdVersionsIdExportGroupNameV3 parameters: - name: format in: query required: true description: | Format of the exported file.\ If buidType = reducedSourceSpecifications, then format can be yaml, json or html.\ If buidType = mergedspecification, then format can be yaml or json; html is not supported for this buildType. schema: type: string enum: - yaml - json - html default: json responses: "200": description: Success content: application/zip: schema: type: string format: binary description: ZIP file to download. ZIP will be returned if buildType = reducedSourceSpecifications application/json: schema: type: string format: binary description: JSON file to download. JSON will be returned if buidType = mergedspecification and format = json application/yaml: schema: type: string format: binary description: YAML file to download. YAML will be returned if buidType = mergedspecification and format = yaml headers: Content-Disposition: schema: type: string description: File name example: attachment; filename="__.zip" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/files/{slug}/raw": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/slug" get: tags: - Versions summary: Get file data (published) description: Get the published content object in a RAW format operationId: getPackagesIdVersionsIdFilesSlugRaw responses: "200": description: Success content: plain/text: schema: description: TXT file content (JSON, YAML, MD, TXT). type: string application/octet-stream: schema: description: Binary content for unsupported file types (doc, xls, jpg, png, etc.). type: string format: binary headers: Content-Disposition: schema: type: string description: Indicates inline content and file name example: inline; filename="petstore.yaml" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/files/{slug}/doc": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/slug" get: deprecated: true x-deprecation-reason: POST /api/v1/export shall be used instead of the current operation. tags: - Export summary: Export offline API documentation by selected file description: | Export of offline API documentation by selected file as a zip archive. Type of the documentation file is provided as input parameters: - interactive - html document - raw - yaml/json document. operationId: getPackagesIdVersionsIdFilesSlugDoc parameters: - name: docType in: query description: Type of the exported documentation. required: false schema: type: string enum: - interactive - raw default: interactive responses: "200": description: Success content: application/octet-stream: schema: type: string format: binary description: Documentation ZIP file (if docType = interactive) or yaml/json (if docType = raw) to download "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" VersionNotFound: $ref: "#/components/examples/VersionNotFound" FileNotFound: $ref: "#/components/examples/FileNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/sourceData": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" get: tags: - Export - Versions summary: Export sources of package version with build config description: | Export sources of package version as a zip archive and build configuration that was used for this version. operationId: getPackageVersionSourcesWithBuildConfig responses: "200": description: Success content: application/json: schema: type: object description: Build configuration and ZIP file with package version sources to download properties: sources: type: string description: ZIP file with package version sources to download config: $ref: "#/components/schemas/BuildConfig" "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" VersionNotFound: $ref: "#/components/examples/VersionNotFound" FileNotFound: $ref: "#/components/examples/FileNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/doc": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" get: deprecated: true x-deprecation-reason: POST /api/v1/export shall be used instead of the current operation. tags: - Export summary: Export offline API documentation by selected versions description: | Export of offline API documentation by selected version (all files) as a zip archive. Type of the documentation file is provided as input parameters: * interactive - html document. operationId: getPackagesIdVersionsIdDoc parameters: - name: docType in: query description: Type of the exported documentation. required: false schema: type: string enum: - interactive default: interactive responses: "200": description: Success content: application/zip: schema: type: string format: binary description: Documentation ZIP file to download "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" VersionNotFound: $ref: "#/components/examples/VersionNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/version-internal-documents/{hash}": parameters: - name: hash in: path description: Document hash required: true schema: type: string get: tags: - Internal Documents summary: Get version internal document content description: Get version internal document content operationId: getVersionInternalDocumentsHash security: - BearerAuth: [] - CookieAuth: [] - api-key: [] responses: "200": description: Success content: application/json: schema: description: Text file content type: string headers: Content-Disposition: schema: type: string description: Indicates inline content and file name example: inline; filename="qitmf-v5.11.json" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/comparison-internal-documents/{hash}": parameters: - name: hash in: path description: Document hash required: true schema: type: string get: tags: - Internal Documents summary: Get comparison internal document content description: Get comparison internal document content operationId: getComparisonInternalDocumentsHash security: - BearerAuth: [ ] - CookieAuth: [ ] - api-key: [ ] responses: "200": description: Success content: application/json: schema: description: Text file content type: string headers: Content-Disposition: schema: type: string description: Indicates inline content and file name example: inline; filename="qitmf-v5.11.json" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/permissions": get: tags: - Roles summary: Get list of permissions description: List of all permissions. operationId: getPermissions responses: "200": description: Success content: application/json: schema: type: object properties: permissions: description: List of available permissions. type: array items: type: object properties: permission: $ref: "#/components/schemas/Permission" name: type: string description: Name of the permission example: Read content of public package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "/api/v2/roles": get: tags: - Roles summary: Get list of existing roles description: List of all roles and their permissions. operationId: getRoles responses: "200": description: Success content: application/json: schema: type: object properties: roles: description: List of existing roles. type: array items: allOf: - $ref: "#/components/schemas/Role" - type: object properties: readOnly: description: | A flag that indicates an immutability of a role. readOnly roles cannot be changed or deleted. type: boolean default: false permissions: type: array description: List of permissions applicable to the role. items: $ref: "#/components/schemas/Permission" example: ["read", "create_and_update_package", "delete_package"] "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/availableRoles": parameters: - $ref: "#/components/parameters/packageId" get: tags: - Roles summary: Get list of available roles for package description: | List of available roles to change for package and current user (by access token). operationId: getPackagesIdAvailableRoles parameters: - name: id in: query description: Unique user login (username) used to authenticate the user. required: false schema: type: string example: user1221 responses: "200": description: Success content: application/json: schema: type: object description: List of available roles. properties: roles: description: List of available roles. type: array items: allOf: - $ref: "#/components/schemas/Role" - type: object properties: readOnly: description: | A flag that indicates an immutability of a role. readOnly roles cannot be changed or deleted. type: boolean default: false permissions: type: array description: List of permissions applicable to the role. items: $ref: "#/components/schemas/Permission" example: ["read", "create_and_update_package", "delete_package"] "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/members": parameters: - $ref: "#/components/parameters/packageId" post: tags: - Roles - Users summary: Add members to the package description: | Add new user (one user or multiple users) with a role to the package. A member may be added to the package if the assigned role is greater than the existing one. operationId: postPackagesIdMembers requestBody: description: Package members assignment parameters content: application/json: schema: $ref: "#/components/schemas/MemberCreate" responses: "201": description: Created content: application/json: schema: type: object properties: members: description: List of the package's users with roles type: array items: $ref: "#/components/schemas/Member" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" get: tags: - Roles - Users summary: Get the package's members list description: List of all users and their roles, assigned to the particular package operationId: getPackagesIdMembers responses: "200": description: Success content: application/json: schema: type: object properties: members: description: List of the package's users with roles type: array items: $ref: "#/components/schemas/Member" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/members/{userId}": parameters: - $ref: "#/components/parameters/packageId" - name: userId in: path required: true description: Login of the user schema: type: string example: user1221 patch: tags: - Roles - Users summary: Package member update description: | Change the member parameters on the package operationId: patchPackagesIdMembersId requestBody: description: Package member update parameters content: application/json: schema: type: object required: - roleId - action properties: roleId: type: string description: Unique role identifier. The value is the slug of role name. example: editor action: type: string description: Name of the action with user role. enum: - add - remove responses: "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" delete: tags: - Roles - Users summary: Package member delete description: | Delete (unassign) the member from the package. Response variants logic: * 200 - if the user has direct role assigned to the current package AND assignment to the parent package, will be returned his inherited role. * 204 - if the user has only direct role assigned to the current package, this assignment will be deleted. operationId: deletePackagesIdMembersId responses: "200": description: Success content: application/json: schema: type: object properties: member: $ref: "#/components/schemas/Member" "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/sharedFiles": post: tags: - Versions summary: Share a published file description: Create public link for file that can be used to retrieve the file without security restrictions. The link could be used to embed file content. operationId: postSharedFiles requestBody: description: Parameters of package file sharing content: application/json: schema: type: object required: - packageId - version - slug properties: packageId: description: Package unique identifier (full alias) type: string example: "QS.CloudQSS.CPQ.Q-TMF" version: description: Package version type: string example: "2022.3" slug: description: File unique string identifier type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" responses: "200": description: Success content: application/json: schema: type: object properties: sharedFileId: type: string description: Shared file id pattern: "^[a-z0-9]" example: ebbcce45 "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/sharedFiles/{sharedFileId}": get: tags: - Versions summary: Get shared file data description: Get shared file data by public shared link operationId: getSharedFilesId security: [{}] parameters: - name: sharedFileId in: path description: Shared file id required: true schema: type: string maxLength: 8 pattern: "^[a-z0-9]" example: ebbcce45 responses: "200": description: Success content: plain/text: schema: description: TXT file content (JSON, YAML, MD, TXT). type: string "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "410": description: Gone content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/user": get: tags: - Users summary: Get Extended User Information description: Retrieves detailed information about the authenticated user. deprecated: true operationId: getExtendedUser security: - BearerAuth: [] - CookieAuth: [] - PersonalAccessToken: [] responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/ExtendedUser" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: User Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/user": get: tags: - Users summary: Get Extended User Information description: Retrieves detailed information about the authenticated user. operationId: getExtendedUserV2 security: - BearerAuth: [] - CookieAuth: [] - PersonalAccessToken: [] responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/ExtendedUserV2" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: User Not Found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/users": get: tags: - Users summary: Get users list description: List of all users with detailed info operationId: getUsers parameters: - name: textFilter in: query description: Filter by userId (login)/name/email address. schema: type: string - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: type: object properties: users: description: List of all available users type: array items: $ref: "#/components/schemas/User" examples: {} "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/users/{userId}": get: tags: - Users summary: Get user by id description: User's detailed info operationId: getUser parameters: - name: userId description: Unique user login (username) used to authenticate the user. in: path required: true schema: type: string example: user1221 responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/User" examples: {} "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/operations": get: tags: - Operations summary: Get list of operations description: | Full list of operations without grouping by parent specification document. The result list depends on the API type. operationId: getPackagesIdVersionsIdApiTypeOperations parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/apiAudience" - $ref: "#/components/parameters/asyncapiChannel" - $ref: "#/components/parameters/asyncapiProtocol" - name: skipRefs in: query description: | If false and package has references, then package references (including references to the deleted package versions) shall be resolved. schema: type: boolean default: false - name: textFilter in: query description: | Filter by title/path/method. Custom tag format in search is key: value. Search works as a complete match. For AsyncAPI: searches by message title(or messageId), channel title(or channelId) or operation action. schema: type: string - name: documentSlug in: query description: Filter by document schema: type: string example: "billing-rating-catalog-integration-service1-json" - name: tag in: query description: | Name of the tag for filtering/grouping. A full match is required. To get the list of available tags use GET /tags API. schema: type: string example: RestControllerV5 - name: emptyTag in: query description: | Flag, filtering the operations without tags at all. In response will be returned the list of operations, on what the tag is not filled in. This attribute has a higher priority than the **tag**. In case, then **emptyTag: true**, it will override the **tag** filter. schema: type: boolean default: false - name: group in: query description: | Name of the group for filtering.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: string example: v1 - name: emptyGroup in: query description: | Flag for filtering operations without a group.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: boolean default: false - name: kind description: | Operation kind. * bwc - API with backward compatibility support (a.k.a. public). * no-bwc - API without backward compatibility support (a.k.a. internal). * experimental - APIs for feature testing. Usage is not recommended. in: query schema: type: string enum: - all - bwc - no-bwc - experimental default: all - name: deprecated description: Filter operations by 'deprecated' status. in: query schema: type: string enum: - "all" - "true" - "false" default: all - name: includeData in: query description: Include the operation's content data. schema: type: boolean default: false - name: ids in: query description: List of the operationId to filter. schema: type: array items: type: string example: ["get-quoteManagement-v5-quote", "post-quoteManagement-v5-quote"] - name: refPackageId description: Filter by package id of ref package, shall be used in case of dashboard. in: query schema: type: string - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: description: List of operations. type: object properties: operations: type: array items: allOf: - oneOf: - $ref: "#/components/schemas/RestOperation" - $ref: "#/components/schemas/GraphQLOperation" - $ref: "#/components/schemas/ProtobufOperation" - $ref: "#/components/schemas/AsyncAPIOperation" - type: object properties: data: description: | Content of the operation as a JSON object. Required, if includeData: true. type: object customTags: description: | Custom tags. type: object packageRef: description: | Parent package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" packages: $ref: "#/components/schemas/PackagesMap" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/ddl/entities": get: tags: - Contracts summary: Get DDL entities description: | Get DDL contract entities for a package version. Only `table` entities are supported now. operationId: getPackageVersionDdlEntities parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - name: textFilter in: query description: Filter by DDL entity name (case-insensitive substring match). schema: type: string - $ref: "#/components/parameters/limit" - name: offset in: query description: Number of records to skip. schema: type: integer minimum: 0 default: 0 responses: "200": description: Success content: application/json: schema: type: object properties: entities: type: array items: $ref: "#/components/schemas/DdlEntityView" packages: $ref: "#/components/schemas/PackagesMap" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/ddl/entities/{ddlEntityId}": get: tags: - Contracts summary: Get DDL entity details description: Get DDL contract entity details, including the raw SQL payload. Only `table` entities are supported now. operationId: getPackageVersionDdlEntity parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/ddlEntityId" responses: "200": description: Success content: application/json: schema: allOf: - $ref: "#/components/schemas/DdlEntityView" - type: object required: - data properties: data: description: Raw SQL definition of the DDL entity (minimal valid SQL for the table). type: string "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/ddl/entities/{ddlEntityId}/changes": get: tags: - Contracts - Changes summary: Get DDL entity changes description: Get changes of one DDL entity between current and previous published package versions. Only `table` entities are supported now. operationId: getPackageVersionDdlEntityChanges parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/ddlEntityId" - $ref: "#/components/parameters/severity" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" - in: query name: previousVersionDdlEntityId description: DDL entity identifier from previous version.\ Empty, if requested entity is added in the current version; otherwise, must be specified. schema: type: string example: public-table-accounts responses: "200": description: Success content: application/json: schema: type: object properties: changes: description: List of individual DDL entity changes. type: array items: $ref: "#/components/schemas/SingleOperationChange" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/ddl/changes": get: tags: - Contracts - Changes summary: Get list of changed DDL entities description: | Get DDL contract changes between two compared package versions with details by entities. Only `table` entities are supported now. operationId: getPackageVersionDdlChanges parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/severity" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" - name: refPackageId description: Filter by package id of ref package and previous ref package. in: query schema: type: string - name: textFilter in: query description: Filter by DDL entity name (case-insensitive substring match). schema: type: string - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: type: object required: - entities properties: previousVersion: description: Name of the previous published version. The @ mask is used to return the revision number. type: string example: "2022.2@5" previousVersionPackageId: description: Previous release version package id. type: string example: "QS.CloudQSS.CPQ.Q-TMF" entities: type: array items: type: object required: - changeSummary - comparisonInternalDocumentId properties: ddlEntityData: $ref: "#/components/schemas/DdlEntityChange" previousDdlEntityData: $ref: "#/components/schemas/DdlEntityChange" changeSummary: allOf: - $ref: "#/components/schemas/ChangeSummary" - type: object description: Number of declarative changes in one specific DDL entity. comparisonInternalDocumentId: description: > Unique string identifier of the internal merged document, where diffs between entity and previous entity are present. Corresponds to `id` field for the document in `comparison-internal-documents.json` type: string example: "shop_1.0.0_shop-pkg_shop_2.0.0_shop-pkg" packages: $ref: "#/components/schemas/PackagesMap" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/ddl/entities/{ddlEntityId}/changes/summary": get: tags: - Contracts - Changes summary: Single DDL entity changes summary description: | Get summary of changes for one DDL entity between current and previous published package version. Only `table` entities are supported now. operationId: getPackageVersionDdlEntityChangesSummary parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/ddlEntityId" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" - name: refPackageId description: Filter by package id of ref package and previous ref package. in: query schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/ChangeSummary" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/ddl/export/entities": get: tags: - Contracts - Export summary: Export DDL entities to xlsx file description: Export DDL contract entities of a package version. Only `table` entities are supported now. operationId: getPackageVersionDdlEntitiesExport parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - name: refPackageId description: Filter by package id of ref package, shall be used in case of dashboard. in: query schema: type: string - name: textFilter in: query description: Filter by DDL entity name (case-insensitive substring match). schema: type: string responses: "200": description: Success content: application/xlsx: schema: type: string format: binary description: xlsx file to download headers: Content-Disposition: schema: type: string description: xlsx file name example: attachment; filename="DDLEntities_package.id_version.xlsx" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/ddl/export/changes": get: tags: - Contracts - Changes - Export summary: Export DDL changes to xlsx file description: Export DDL contract changes between two compared package versions. Only `table` entities are supported now. operationId: getPackageVersionDdlChangesExport parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/severity" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" - name: refPackageId description: Filter by package id of ref package and previous ref package. in: query schema: type: string - name: textFilter in: query description: Filter by DDL entity name (case-insensitive substring match). schema: type: string responses: "200": description: Success content: application/xlsx: schema: type: string format: binary description: xlsx file to download headers: Content-Disposition: schema: type: string description: xlsx file name example: attachment; filename="DDLChanges_package.id_version.xlsx" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" VersionNotFound: $ref: "#/components/examples/VersionNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/mcp/{entity}": get: tags: - Contracts summary: Get MCP contract entities description: Get MCP discovery contract entities for a package version. operationId: getPackageVersionMcpEntities parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/mcpEntity" - name: mcpEndpoint in: query description: Filter entities belonging to a specific MCP endpoint (relative path, e.g. `/mcp`). schema: type: string example: "/mcp" - name: textFilter in: query description: Filter by MCP entity title and description (case-insensitive substring match). schema: type: string - $ref: "#/components/parameters/limit" - name: offset in: query description: Number of records to skip. schema: type: integer minimum: 0 default: 0 responses: "200": description: Success content: application/json: schema: type: object properties: entities: type: array items: $ref: "#/components/schemas/McpEntityView" packages: $ref: "#/components/schemas/PackagesMap" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/mcp/{entity}/{mcpEntityId}": get: tags: - Contracts summary: Get MCP contract entity details description: Get MCP discovery contract entity details. operationId: getPackageVersionMcpEntity parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/mcpEntity" - $ref: "#/components/parameters/mcpEntityId" responses: "200": description: Success content: application/json: schema: allOf: - $ref: "#/components/schemas/McpEntityView" - type: object required: - data properties: data: description: Original MCP discovery entity payload. type: object "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/mcp/export/{entity}": get: tags: - Contracts - Export summary: Export MCP contract entities to xlsx file description: Export MCP discovery contract entities of a package version. operationId: getPackageVersionMcpEntitiesExport parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/mcpEntity" - name: refPackageId description: Filter by package id of ref package, shall be used in case of dashboard. in: query schema: type: string - name: textFilter in: query description: Filter by MCP entity title and description (case-insensitive substring match). schema: type: string responses: "200": description: Success content: application/xlsx: schema: type: string format: binary description: xlsx file to download headers: Content-Disposition: schema: type: string description: xlsx file name example: attachment; filename="MCPEntities_package.id_version.xlsx" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/deprecated/summary": get: tags: - Versions summary: Get deprecated operations summary description: | Get summary of deprecated operations in the version operationId: getPackageIdVersionDeprecatedSummaryV3 parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" responses: "200": description: Success content: application/json: schema: oneOf: - type: object title: package description: List of changes data. required: - operationTypes properties: operationTypes: type: array items: type: object properties: apiType: $ref: "#/components/schemas/ApiType" deprecatedCount: description: Total number of deprecated operations in the version type: string tags: type: array items: type: string example: ["tag1", "tag2"] - type: object title: dashboard required: - refs - packages properties: refs: description: | Refs to packages, which contains deprecated operations/items type: array items: type: object properties: packageRef: description: | Parent package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" operationTypes: type: array items: type: object properties: apiType: $ref: "#/components/schemas/ApiType" deprecatedCount: description: Total number of deprecated operations in the version type: string tags: type: array items: type: string example: ["tag1", "tag2"] packages: $ref: "#/components/schemas/PackagesMap" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/deprecated": get: tags: - Versions summary: Get list of deprecated operations description: | List of deprecated operations in the current version operationId: getPackagesIdVersionsIdApiTypeDeprecations parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/apiAudience" - $ref: "#/components/parameters/asyncapiChannel" - $ref: "#/components/parameters/asyncapiProtocol" - name: includeDeprecatedItems in: query description: Include deprecated items inside operation. schema: type: boolean default: false - name: ids in: query description: List of the operationId to filter. schema: type: array items: type: string example: ["get-quoteManagement-v5-quote", "post-quoteManagement-v5-quote"] - name: version in: path description: | Package version. The mask @ may be used for search in a specific revision. required: true schema: type: string example: "2022.3@3" - name: refPackageId description: Filter by package id of ref package, shall be used in case of dashboard. in: query schema: type: string - name: textFilter in: query description: | Filter operation by operation title/path/method. For AsyncAPI: searches by message title(or messageId), channel title(or channelId) or operation action. schema: type: string - name: apiKind description: Filter by API kind in: query schema: type: string enum: - bwc - no-bwc - experimental - name: documentSlug in: query description: Document unique string identifier schema: type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" - name: tag in: query description: | A full match is required.\ Multiple tags separated by comma can be specified. schema: type: string example: "tag1, tag2" - name: emptyTag in: query description: | Flag, filtering the operations without tags at all. In response will be returned the list of operations, on what the tag is not filled in. This attribute has a higher priority than the **tag**. In case, then **emptyTag: true**, it will override the **tag** filter. schema: type: boolean default: false - name: group in: query description: | Name of the group for filtering.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: string example: v1 - name: emptyGroup in: query description: | Flag for filtering operations without a group.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: boolean default: false - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: type: object properties: operations: description: | List of discrepancies data of operations in a published version. The resulted list depends on the API type. type: array items: allOf: - type: object properties: packageRef: description: > Parent package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: QS.CloudQSS.CPQ.Q-TMF@2023.2 operationId: description: Operation generated unique identifier (slug). type: string example: get-quoteManagement-v5-quote title: description: Operation summary/title. type: string apiKind: description: Operation API kind type: string enum: - bwc - no-bwc - experimental deprecated: description: True if the operation itself is deprecated. type: boolean deprecatedInPreviousVersions: description: List of previous release versions where operation was also deprecated type: array items: type: string example: ["2022.2", "2022,1", "2021.4"] deprecatedCount: type: string description: number of deprecated items in the operation deprecatedInfo: description: | Additional information about deprecated operation: * for REST API it is value of 'x-deprecated-meta' extension (value of extension must be string), which is defined for deprecated operation. * for GraphQL API it is value of 'reason' argument of @deprecated directive, which is defined for deprecated operation. * for AsyncAPI 3.0: "[Deprecated] message {name}" when message has x-deprecated: true (name = message.title or messageId), or "[Deprecated] channel {name}" when channel has x-deprecated: true (name = channel.title or channelId). type: string deprecatedItems: allOf: - $ref: "#/components/schemas/DeprecatedItems" - type: object description: List of deprecated items in the operation. deprecatedItems is required only if includeDeprecatedItems = true externalMetadata: description: External operation metadata. type: object - oneOf: - $ref: "#/components/schemas/RestOperationMeta" - $ref: "#/components/schemas/GraphQLOperationMeta" - $ref: "#/components/schemas/ProtobufOperationMeta" - $ref: "#/components/schemas/AsyncAPIOperationMeta" packages: $ref: "#/components/schemas/PackagesMap" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/operations/{operationId}/deprecatedItems": get: tags: - Operations summary: Deprecated items of single operation description: | Get list of all deprecated items inside of the single operation.\ Deprecated item is entity that is deprecated inside of API operation. For example for REST API it can be parameter or schema, for GraphQL API - field or enum value. operationId: getPackagesIdVersionsApiTypeOperationsIddeprecatedItems parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/operationId" responses: "200": description: Success content: application/json: schema: type: object properties: deprecatedItems: $ref: "#/components/schemas/DeprecatedItems" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/operations/{operationId}/models/{modelName}/usages": get: tags: - Operations summary: List of operations with the same model description: | Get list of operations that have the same model operationId: getPackagesIdVersionsApiTypeOperationsIdModelsModelName parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/operationId" - $ref: "#/components/parameters/modelName" responses: "200": description: Success content: application/json: schema: type: object properties: modelUsages: description: List of operationIds and model names type: array items: type: object properties: operationId: description: Operation unique identifier (slug). Not the same as operationId tag from the OpenAPI file. type: string example: get-quoteManagement-v5-quote modelNames: description: List of models with the same hash. type: array items: type: string "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/export/operations": get: tags: - Operations summary: Export operations to xlsx file description: | Export operations of specific API type. operationId: getPackagesIdVersionsIdApiTypeOperationsExport parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/apiAudience" - $ref: "#/components/parameters/asyncapiChannel" - $ref: "#/components/parameters/asyncapiProtocol" - name: textFilter in: query description: | Filter by title/path/method. For AsyncAPI: searches by message title(or messageId), channel title(or channelId) or operation action. schema: type: string - name: tag in: query description: | Name of the tag for filtering/grouping. A full match is required. To get the list of available tags use GET /tags API. schema: type: string example: RestControllerV5 - name: emptyTag in: query description: | Flag, filtering the operations without tags at all. In response will be returned the list of operations, on what the tag is not filled in. This attribute has a higher priority than the **tag**. In case, then **emptyTag: true**, it will override the **tag** filter. schema: type: boolean default: false - name: kind description: | Operation kind. * bwc - API with backward compatibility support (a.k.a. public). * no-bwc - API without backward compatibility support (a.k.a. internal). * experimental - APIs for feature testing. Usage is not recommended. in: query schema: type: string enum: - all - bwc - no-bwc - experimental default: all - name: group in: query description: | Name of the group for filtering.\ The filter is applied only to the groups of current version. Groups from previous version will be ignored.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: string example: v1 - name: emptyGroup in: query description: | Flag for filtering operations without a group.\ The filter is applied only to the groups of current version. Groups from previous version will be ignored.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: boolean default: false - name: refPackageId description: Filter by package id of ref package, shall be used in case of dashboard. in: query schema: type: string responses: "200": description: Success content: application/xlsx: schema: type: string format: binary description: xlsx file to download headers: Content-Disposition: schema: type: string description: xlsx file name example: attachment; filename="APIOperations_package.id_version.xlsx" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/export/operations/deprecated": get: tags: - Operations summary: Export deprecated operations to xlsx file description: | Export operations of specific API type. operationId: getPackagesIdVersionsIdApiTypeDeprecatedOperationsExport parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/apiAudience" - $ref: "#/components/parameters/asyncapiChannel" - $ref: "#/components/parameters/asyncapiProtocol" - name: textFilter in: query description: | Filter by title/path/method. For AsyncAPI: searches by message title(or messageId), channel title(or channelId) or operation action. schema: type: string - name: tag in: query description: | A full match is required.\ Multiple tags separated by comma can be specified. schema: type: string example: "tag1, tag2" - name: kind description: | Operation kind. * bwc - API with backward compatibility support (a.k.a. public). * no-bwc - API without backward compatibility support (a.k.a. internal). * experimental - APIs for feature testing. Usage is not recommended. in: query schema: type: string enum: - all - bwc - no-bwc - experimental default: all - name: emptyTag in: query description: | Flag, filtering the operations without tags at all. In response will be returned the list of operations, on what the tag is not filled in. This attribute has a higher priority than the **tag**. In case, then **emptyTag: true**, it will override the **tag** filter. schema: type: boolean default: false - name: group in: query description: | Name of the group for filtering.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: string example: v1 - name: emptyGroup in: query description: | Flag for filtering operations without a group.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: boolean default: false - name: refPackageId description: Filter by package id of ref package, shall be used in case of dashboard. in: query schema: type: string responses: "200": description: Success content: application/xlsx: schema: type: string format: binary description: xlsx file to download headers: Content-Disposition: schema: type: string description: xlsx file name example: attachment; filename="APIOperations_package.id_version.xlsx" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/operations/{operationId}": get: tags: - Operations summary: Get operation details description: | Operation's parameters and data. The result depends on the API type. operationId: getPackagesIdVersionsIdApiTypeOperationsId parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/operationId" - name: includeData in: query description: Include the operation's content data. schema: type: boolean default: true responses: "200": description: Success content: application/json: schema: allOf: - oneOf: - $ref: "#/components/schemas/RestOperation" - $ref: "#/components/schemas/GraphQLOperation" - $ref: "#/components/schemas/ProtobufOperation" - $ref: "#/components/schemas/AsyncAPIOperation" - type: object required: - data properties: data: description: Content of the operation as a JSON object. type: object customTags: description: | Custom tags. type: object "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/operations/{operationId}/changes": get: tags: - Changes - Operations summary: Single operation change log description: | Get changes of one operation between current and previous published package version. The result depends on the API type. operationId: getPackagesIdVersionsApiTypeOperationsIdChanges parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/operationId" - $ref: "#/components/parameters/severity" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" - in: query name: previousVersionOperationId description: Operation unique identifier from previous version (not the same as operationId tag from the OpenAPI file).\ Empty, if requested operation is added in the current version; otherwise, must be specified. schema: type: string example: get-quoteManagement-v5-quote-id responses: "200": description: Success content: application/json: schema: type: object properties: changes: description: List of discrepancies data in the operation. type: array items: $ref: "#/components/schemas/SingleOperationChange" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/operations/{operationId}/changes/summary": get: tags: - Changes - Operations summary: Single operation changes summary description: | Get summary of changes for one operation between current and previous published package version. The result depends on the API type. operationId: getPackagesIdVersionsApiTypeOperationsIdChangesSummary parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/operationId" - $ref: "#/components/parameters/previousVersion" - $ref: "#/components/parameters/previousVersionPackageId" - name: refPackageId description: Filter by package id of ref package and previous ref package. in: query schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/ChangeSummary" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/tags": get: tags: - Operations summary: Get list of operations tags description: | Get list of operations tags in one published version. The result list depends on the API type. operationId: getPackagesIdVersionsIdApiTypeTags parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/apiAudience" - name: textFilter in: query description: | Filter by tag. Partial name is applicable. schema: type: string - name: skipRefs in: query description: | If false and package has references, then package references (including references to the deleted package versions) shall be resolved. schema: type: boolean default: false - name: kind description: | Operation kind. * bwc - API with backward compatibility support (a.k.a. public). * no-bwc - API without backward compatibility support (a.k.a. internal). * experimental - APIs for feature testing. Usage is not recommended. in: query schema: type: string - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" - name: group in: query description: | Name of the group for filtering.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: string example: v1 - name: emptyGroup in: query description: | Flag for filtering operations without a group.\ Either "group" or "emptyGroup" (= true) can be sent in the request, if both of them are specified then 400 will be returned in the response. schema: type: boolean default: false responses: "200": description: Success content: application/json: schema: description: List of tags. type: object properties: tags: type: array items: type: string example: ["TMF"] examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/{apiType}/groups": post: tags: - Versions - Operation groups summary: Create manual operation group description: | Create manual operation group.\ Manual groups can be created for both packages and dashboards. One group can contain operations of one API type only. operationId: PostPackageIdVersionApiTypeGroupsV3 parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/apiType" requestBody: description: New version group content: multipart/form-data: schema: type: object required: - groupName properties: groupName: description: Name of new group. Name must be unique within one API type. type: string description: description: Description of created group. type: string template: description: | OpenAPI specification template that will be used to export operations from an operation group with buildType = mergedSpecification.\ Template can only be specified for the group with apiType = rest.\ Both YAML and JSON file formats are supported. type: string format: binary responses: "201": description: Created "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/{apiType}/groups/{groupName}": get: tags: - Versions - Operation groups summary: Get list of operations for operation group operationId: getPackagesIdVersionsIdApiTypeGroupsGroupName description: | Get list of operations from operation group. The result list depends on the API type. parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/groupName" - $ref: "#/components/parameters/apiAudience" - $ref: "#/components/parameters/asyncapiChannel" - $ref: "#/components/parameters/asyncapiProtocol" - name: textFilter in: query description: | Filter by title/path/method. For AsyncAPI: searches by message title(or messageId), channel title(or channelId) or operation action. schema: type: string - name: documentSlug in: query description: Filter by document schema: type: string example: "billing-rating-catalog-integration-service1-json" - name: tag in: query description: | Name of the tag for filtering/grouping. A full match is required. To get the list of available tags use GET /tags API. schema: type: string example: RestControllerV5 - name: emptyTag in: query description: | Flag, filtering the operations without tags at all. In response will be returned the list of operations, on what the tag is not filled in. This attribute has a higher priority than the **tag**. In case, then **emptyTag: true**, it will override the **tag** filter. schema: type: boolean default: false - name: onlyAddable in: query description: | Flag for filtering operations that are not included in this group true - will return all operations from version except operations that are already included in this group false - will return all operations that are included in this group schema: type: boolean default: false - name: kind description: | Operation kind. * bwc - API with backward compatibility support (a.k.a. public). * no-bwc - API without backward compatibility support (a.k.a. internal). * experimental - APIs for feature testing. Usage is not recommended. in: query schema: type: string enum: - all - bwc - no-bwc - experimental default: all - name: deprecated description: Filter operations by 'deprecated' status. in: query schema: type: string enum: - "all" - "true" - "false" default: all - name: refPackageId description: Filter by package id of ref package, shall be used in case of dashboard. in: query schema: type: string - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: description: List of group operations. type: object properties: operations: type: array description: | List of grouped operations that were present in the previous revision and are deleted in the current revision. items: allOf: - oneOf: - $ref: "#/components/schemas/RestOperation" - $ref: "#/components/schemas/GraphQLOperation" - $ref: "#/components/schemas/ProtobufOperation" - $ref: "#/components/schemas/AsyncAPIOperation" - type: object properties: packageRef: description: | Parent package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" packages: $ref: "#/components/schemas/PackagesMap" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" delete: tags: - Versions - Operation groups summary: Delete operation group description: | Delete version group. operationId: getPackagesIdVersionsIdApiTypeGroups parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/groupName" responses: "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/{apiType}/groups/{groupName}": patch: tags: - Versions - Operation groups summary: Update parameters of operation group description: | Update parameters of operations group. operationId: patchPackageIdVersionApiTypeGroupName parameters: - name: groupName description: Old groupName in: path required: true schema: type: string - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" requestBody: description: Version group update parameters content: multipart/form-data: schema: type: object properties: groupName: description: | Name of new group. Name must be unique within one API type.\ Group name can be changed only for manual group. type: string description: description: Description of the operation group (can be update for the manual or rest path prefix group) type: string template: description: | OpenAPI specification template that will be used to export operations from an operation group with buildType = mergedSpecification.\ Template can be specified for the manual or rest path prefix group, but only with apiType = rest.\ Both YAML and JSON file formats are supported. type: string format: binary operations: type: array description: Operations in the group. One group can contain no more than 200 operations. items: type: object required: - operationId properties: packageId: description: | ID of package.\ PackageId and version shall be specified in case of dashboard to identify source package. If packageId and version are not specified, this will mean that the source of the operation is the current package version. type: string example: "QS.CloudQSS.CPQ.Q-TMF" version: description: Version and revision of the package. type: string example: "2023.3@3" operationId: description: Operation unique identifier. type: string example: get-quoteManagement-v5-quote responses: "204": description: No content content: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/{apiType}/groups/{groupName}/template": get: tags: - Versions - Operation groups summary: Get export template of operation group description: | Export OpenAPI specification template from an operation group (manual or rest path prefix). This feature is supported only for apiType = rest. operationId: getPackageIdVersionApiTypeGroupNameTemplate parameters: - $ref: "#/components/parameters/apiType" - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/groupName" responses: "200": description: Success content: application/octet-stream: schema: type: string format: binary description: template headers: Content-Disposition: schema: type: string description: file name example: attachment; filename=".xlsx" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" /api/v2/packages/{packageId}/calculateGroups: get: tags: - Versions summary: Calculate groups by restGroupingPrefix description: | Calculate groups by transmitted restGroupingPrefix. This is in-flight calculation, i.e. calculated groups will not be saved. operationId: postPackagesIdCalculateGroups parameters: - $ref: "#/components/parameters/packageId" - name: groupingPrefix in: query description: Regular expression used as criteria for grouping operations. schema: type: string responses: "200": description: Success content: application/json: schema: description: List of groups. type: object properties: groups: description: Operation groups calculated by groupingPrefix. type: array items: type: string example: ["v1", "v2"] examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" /api/v2/packages/{packageId}/recalculateGroups: post: tags: - Versions summary: Recalculate package version groups description: | Recalculate package groups by specified restGroupingPrefix on the package operationId: postPackagesIdRecalculateGroups parameters: - $ref: "#/components/parameters/packageId" responses: "200": description: Success "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/documents": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" get: tags: - Documents - Versions summary: Get version documents description: | Get list of documents in a version. The result depend on the package.kind: * For package.kind: package - return the list of version documents. * For package.kind: dashboard - return the list of all referenced dashboards and their referenced packages in recursion. The returned list will contain only leaves - referenced packages of the lowest level with their published documents. operationId: getPackagesIdVersionsIdDocuments parameters: - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" - $ref: "#/components/parameters/apiTypeQueryParam" - name: contractType in: query description: | Filter documents by contract type. Mutually exclusive with `apiType`: specify at most one of `apiType` / `contractType` (if both are specified then 400 will be returned). schema: type: string enum: - ddl - mcp - name: skipRefs in: query description: | If false and package has references, then package references (including references to the deleted package versions) shall be resolved. schema: type: boolean default: false - name: textFilter in: query description: Filter by document title. schema: type: string responses: "200": description: Success content: application/json: schema: description: List of documents in a package. type: object properties: documents: type: array items: allOf: - $ref: "#/components/schemas/PackageVersionFile" - type: object properties: packageRef: description: | Parent package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: QS.CloudQSS.CPQ.Q-TMF@2023.2 packages: $ref: "#/components/schemas/PackagesMap" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/documents/{slug}": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/slug" get: tags: - Documents summary: Get document details description: Get the published content object's details by ID. operationId: getPackagesIdVersionsIdDocumentsSlugV2 responses: "200": description: Success content: application/json: schema: allOf: - $ref: "#/components/schemas/PackageVersionFile" - type: object properties: description: description: Document description. type: string info: description: Info object from openapi document type: object externalDocs: description: External documentation object from openapi document type: object operations: description: List of the operations in a file without operation's data. type: array items: oneOf: - $ref: "#/components/schemas/RestOperation" - $ref: "#/components/schemas/GraphQLOperation" - $ref: "#/components/schemas/ProtobufOperation" - $ref: "#/components/schemas/AsyncAPIOperation" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/documents/{slug}/shareability": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/slug" patch: tags: - Documents summary: Update document shareability description: Update the shareability property of a published document. Only available to package owners and admins. operationId: updateDocumentShareability requestBody: required: true content: application/json: schema: type: object required: - status properties: status: description: The shareability status to set type: string enum: - shareable - non-shareable - unknown responses: "204": description: Shareability updated successfully "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "/api/v2/packages/{packageId}/versions/{version}/export/shareability-report": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" get: tags: - Export summary: Generate shareability report description: | Generate a shareability status xlsx report for all documents in a group, including all sub-groups and packages. Rows are sorted by package name, document name, slug. Requires read permission on the group. operationId: generateShareabilityReport responses: "200": description: Success content: application/octet-stream: schema: type: string format: binary description: xlsx file to download headers: Content-Disposition: schema: type: string description: xlsx file name example: 'attachment; filename="shareability_report_group.id_2024.1_20240101120000.xlsx"' "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/shareability/bulk-update": post: tags: - Documents summary: Bulk update document shareability description: | Upload a shareability report xlsx file to bulk-update shareability statuses for all documents with changed values. `document_shareability_management` is required for all packages listed in the report. operationId: bulkUpdateDocumentShareability requestBody: required: true content: application/octet-stream: schema: type: string format: binary description: Shareability report xlsx file responses: "204": description: Shareability statuses updated successfully "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/version-internal-documents": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" get: tags: - Internal Documents - Versions summary: Get version internal documents description: | Get list of version internal documents for the version. Version internal documents are only supported for packages of kind `package` operationId: getPackagesIdVersionsIdVersionInternalDocuments security: - BearerAuth: [] - CookieAuth: [] - api-key: [] responses: "200": description: Success content: application/json: schema: description: List of internal documents in a package version. type: array items: allOf: - $ref: "#/components/schemas/InternalDocumentMetadata" - type: object required: - hash properties: hash: description: Hash of the corresponding document content. type: string "301": description: Moved Permanently headers: Location: schema: type: string description: Current endpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/packages/{packageId}/versions/{version}/comparison-internal-documents": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/previousVersionPackageId" - $ref: "#/components/parameters/previousVersion" get: tags: - Internal Documents - Changes summary: Get version comparison internal documents description: | Get list of internal documents for the version comparison. Internal documents are only supported for packages of kind `package` operationId: getPackagesIdVersionsIdComparisonInternalDocuments security: - BearerAuth: [ ] - CookieAuth: [ ] - api-key: [ ] parameters: - name: refPackageId description: Filter by package id of ref package and previous ref package. in: query schema: type: string responses: "200": description: Success content: application/json: schema: description: List of internal documents in a version comparison. type: array items: allOf: - $ref: "#/components/schemas/InternalDocumentMetadata" - type: object required: - hash properties: hash: description: Hash of the corresponding document content. type: string "301": description: Moved Permanently headers: Location: schema: type: string description: Current endpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/{apiType}/groups/{groupName}/documents": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - $ref: "#/components/parameters/apiType" - name: groupName in: path required: true description: Name of the operation group schema: type: string get: tags: - Documents - Versions summary: Get documents of operations from operation group. description: | Get list of package version documents of operations from operation group. operationId: getPackagesIdVersionsIdTransformationDocumentsV3 parameters: - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: description: List of documents in a package. type: object properties: documents: type: array items: allOf: - $ref: "#/components/schemas/PackageTransformationFile" - type: object properties: packageRef: description: | Referenced package and version link. Created by the concatenation of the packageId and version name with At sign.\ Parameter is required if operation is called for the package with kind = dashboard; otherwise, parameter will not be returned. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" packages: $ref: "#/components/schemas/PackagesMap" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/{apiType}/groups/{groupName}/publish": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - name: apiType description: Type of the API. in: path required: true schema: type: string enum: - rest - graphql - asyncapi - name: groupName in: path required: true description: Name of the operation group schema: type: string post: tags: - Operation groups - Publish summary: Start operation group publication description: | Start operation group publish process.\ In this process all operations from operation group will be published to the selected package version. operationId: postOperationGroupPublish requestBody: content: application/json: schema: type: object required: - packageId - version - status properties: packageId: description: Package unique identifier (full alias). type: string example: QS.CQSS.CPQ.TMF version: description: Version name for publication in package. type: string example: "2022.3" previousVersion: description: Name of the previous published version in package. type: string example: "2022.2" previousVersionPackageId: description: Package id of the previous version. The parameter may be empty if the value is equal to the packageId. type: string example: "QS.CloudQSS.CPQ.Q-TMF" status: $ref: "#/components/schemas/VersionStatusEnum" versionLabels: description: List of version labels in package. type: array items: type: string example: ["part-of:CloudQSS-CPQBE"] responses: "202": description: Publish process started content: application/json: schema: type: object properties: publishId: type: string description: Publish process Id format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" PreviousVersionNotRelease: $ref: "#/components/examples/PreviousVersionNotRelease" VersionReferencedAsPreviousByRelease: $ref: "#/components/examples/VersionReferencedAsPreviousByRelease" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/{apiType}/groups/{groupName}/publish/{publishId}/status": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - name: apiType description: Type of the API. in: path required: true schema: type: string enum: - rest - graphql - asyncapi - name: groupName in: path required: true description: Name of the operation group schema: type: string - name: publishId description: Publish Id in: path required: true schema: type: string format: uuid example: 9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc get: tags: - Operation groups - Publish summary: Get operation group publication status description: | Get operation group publish status. operationId: getOperationGroupPublishStatus responses: "200": description: Success content: application/json: schema: type: object properties: status: description: Publish process status. type: string enum: - running - error - complete - none message: description: The message for **error** status. type: string "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/references": parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" get: tags: - Documents - Versions summary: Get version references description: | Get flat list of all version references operationId: getPackagesIdVersionsIdReferencesv3 responses: "200": description: Success content: application/json: schema: description: List of references. type: object properties: references: type: array items: type: object properties: packageRef: description: | Referenced package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" parentPackageRef: description: | Parent referenced package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" excluded: description: All excluded refs will be ignored (but will still be visible for package version). type: boolean packages: $ref: "#/components/schemas/PackagesMap" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/packages/{packageId}/versions/{version}/revisions": get: tags: - Versions summary: Get the version revisions list description: | Get the list of version revisions. operationId: getPackagesIdVersionsIdRevisionsV3 parameters: - $ref: "#/components/parameters/packageId" - $ref: "#/components/parameters/version" - name: textFilter in: query description: Filter by label|user|meta. schema: type: string - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" responses: "200": description: Success content: application/json: schema: type: object properties: revisions: description: List of version revisions. type: array items: $ref: "#/components/schemas/PackageVersionRevision" examples: {} "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/publish/availableStatuses": parameters: - $ref: "#/components/parameters/packageId" get: tags: - Publish - Packages summary: Get a list of available publish statuses for the package deprecated: true description: | Get a list of available publish statuses for the package. List depends on the current user access rights. operationId: getPackagesIdAvailableStatuses responses: "200": description: Success content: application/json: schema: type: object properties: statuses: description: List of available statuses. type: array items: $ref: "#/components/schemas/VersionStatusEnum" "301": description: Moved Permanently headers: Location: schema: type: string description: Current ednpoint with new packageId of moved package X-New-Package-Id: schema: type: string description: New packageId of moved package "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PackageNotFound: $ref: "#/components/examples/PackageNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/space": get: tags: - Users summary: Get user's private workspace description: Get personal private workspace of the current user. operationId: getSpace security: - BearerAuth: [] - CookieAuth: [] - PersonalAccessToken: [] responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/Package" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" post: tags: - Users summary: Create own personal private package description: | Any user is able to create one personal private workspace (*no permissions required*) PackageId for this workspace could be set via user creation endpoint (only for new users) or generated automatically when user first logs in to apihub operationId: postspace security: - BearerAuth: [] - CookieAuth: [] - PersonalAccessToken: [] responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/Package" "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/users/{userId}/space": post: tags: - Users summary: Create personal private package for the user description: | Any user is able to create one personal private workspace (*no permissions required*) PackageId for this workspace could be set via user creation endpoint (only for new users) or generated automatically when user first logs in to apihub operationId: postUsersIdAvailablePackagePromoteStatuses parameters: - name: userId description: Unique user login (username) used to authenticate the user. in: path required: true schema: type: string example: user1221 responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/Package" "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/login/sso/saml": get: x-nc-api-audience: noBWC tags: - Auth summary: SAML authentication (legacy) deprecated: true description: | Starts the SAML authentication process in APIHUB (legacy endpoint). This is a deprecated endpoint. Use `/api/v1/login/sso/{idpId}` instead. In case of successful authentication, the request will be redirected to the **redirectUri** and the response will contain cookie with access token for future API calls. All subsequent APIHUB calls must use this token in a **CookieAuth** or **BearerAuth** authentication. operationId: getLoginSsoSaml security: - {} - RefreshTokenAuth: [] parameters: - name: redirectUri in: query description: URI, where user must be redirected in case of successful APIHUB authentication. required: false schema: type: string format: uri example: "https://apihub.qubership.org/portal" responses: "302": description: Found - Redirect to SAML identity provider headers: Location: description: URL of the SAML identity provider for authentication schema: type: string format: uri "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/auth/saml": post: x-nc-api-audience: noBWC tags: - Auth summary: SAML authentication deprecated: true description: | Starts the SAML authentication process in APIHUB. In case of successful authentication, the request will be redirected to the **redirectUri** and the response will contain cookie with access token for future API calls. All subsequent APIHUB calls must use this token in a **BearerAuth** authentication. operationId: postAuthSAML security: [{}] parameters: - name: redirectUri in: query description: URI, where user must be redirected in case of successful APIHUB authentication. required: true schema: type: string format: uri example: "https://apihub.qubership.org/portal" responses: "302": description: Found headers: Set-Cookie: description: A base64 encoded userView cookie, containing the user data and access token. schema: type: string example: "userView=eyJ0b2tlbiI6ImV5SmhiR2NpT2lKSVV6STFOaUlzSW10cFpDSTZJbk5sWTNKbGRDMXBaQ0lzSW5SNWNDSTZJa3BYVkNKOS5leUpGZUhSbGJuTnBiMjV6SWpwN2ZTd2lSM0p2ZFhCeklqcGJYU3dpU1VRaU9pSmxkbVZzTURJeE9TSXNJazVoYldVaU9pSmxkbVZzTURJeE9TSXNJbUYxWkNJNld5SWlYU3dpWlhod0lqb3hOamMwTURZNU1UVTRMQ0pwWVhRaU9qRTJOelF3TWpVNU5UZ3NJbTVpWmlJNk1UWTNOREF5TlRrMU9Dd2ljM1ZpSWpvaVpYWmxiREF5TVRraWZRLk45d2poeGhLRkoyTlEzNXpCaGw0VEs4VFBOS3RoeDE5czNQQnNheTNkclEiLCJyZW5ld1Rva2VuIjoiZXlKaGJHY2lPaUpJVXpJMU5pSXNJbXRwWkNJNkluTmxZM0psZEMxcFpDSXNJblI1Y0NJNklrcFhWQ0o5LmV5SkZlSFJsYm5OcGIyNXpJanA3ZlN3aVIzSnZkWEJ6SWpwYlhTd2lTVVFpT2lKbGRtVnNNREl4T1NJc0lrNWhiV1VpT2lKbGRtVnNNREl4T1NJc0ltRjFaQ0k2V3lJaVhTd2laWGh3SWpveE5qYzJOakUzT1RVNExDSnBZWFFpT2pFMk56UXdNalU1TlRnc0ltNWlaaUk2TVRZM05EQXlOVGsxT0N3aWMzVmlJam9pWlhabGJEQXlNVGtpZlEuUnRyZEEwNkJrN2lIQnA1bVRYUE1PSnVJdmhtQ0FudHRnVlBqNGZicXN6WSIsInVzZXIiOnsiaWQiOiJldmVsMDIxOSIsImVtYWlsIjoiZXZnZW5paS5lbGl6YXJvdkBuZXRjcmFja2VyLmNvbSIsIm5hbWUiOiJFdmdlbmlpIEVsaXphcm92IiwiYXZhdGFyVXJsIjoiL2FwaS92Mi91c2Vycy9ldmVsMDIxOS9wcm9maWxlL2F2YXRhciJ9fQ==;" "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/users/{userId}/availablePackagePromoteStatuses": post: x-nc-api-audience: noBWC tags: - Publish - Users summary: Get list of available package publish statuses for the user. description: | By collection of packages, **get** the available statuses for publish into for the particular user. Statuses list depends on the current user access rights for the particular package. The response is a **mapped list** of statuses to the packageIds. operationId: getUsersIdAvailablePackagePromoteStatuses parameters: - name: userId description: Unique user login (username) used to authenticate the user. in: path required: true schema: type: string example: user1221 requestBody: description: Packages list to check. content: application/json: schema: type: object required: - packages properties: packages: description: PackageIds list. type: array items: type: string example: ["QS.CloudQSS.CPQ.Q-TMF", "QS.CloudQSS.CPQ.QE-SRV"] required: true responses: "200": description: Success content: application/json: schema: type: object description: List of packages and available statuses. additionalProperties: type: array description: Mapped list of statuses to the packageId. items: type: string enum: - draft - release example: QS.CloudQSS.CPQ.Q-TMF: - draft - release QS.CloudQSS.CPQ.QE-SRV: - draft "400": description: default response content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/users/{userId}/profile/avatar": get: x-nc-api-audience: noBWC tags: - Users - Admin summary: Get the user avatar description: | Get the user avatar. API returns the data of photo file in a png format. operationId: getUsersIdProfileAvatar security: [{}] parameters: - name: userId description: Unique user login (username) used to authenticate the user. in: path required: true schema: type: string example: user1221 responses: "200": description: Success content: image/png: schema: type: string format: binary "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v3/search/{searchLevel}": parameters: - name: searchLevel in: path required: true description: | Level of object for search. schema: type: string enum: - operations - documents - packages post: deprecated: true x-deprecation-reason: POST /api/v4/search/{searchLevel} shall be used instead. x-nc-api-audience: noBWC tags: - Search summary: "Global search" description: Global search by text or custom parameters operationId: postSearch parameters: - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" requestBody: description: Filters for search content: application/json: schema: type: object required: - searchString title: searchCommonParams description: Common parameters for Global search properties: searchString: description: Search by common text fields (summary, description, title, etc.). type: string example: "Billing account" packageIds: description: | List of Package Id(s). * If user specified Workspace(s), then Workspace Id(s) must be transmitted. * If user specified Workspace(s) and Group(s), then Group Id(s) must be transmitted. * If user specified Workspace(s), Group(s) and Package(s) or Workspace(s) and Package(s), then Package Id(s) must be transmitted. type: array items: type: string example: ["QS.CloudQSS.CPQ.Q-TMF", "QS.CloudQSS.CPQ.CORE"] versions: description: Package version names. type: array items: type: string example: ["2022.2", "2022.3"] statuses: description: List of package version statuses type: array items: $ref: "#/components/schemas/VersionStatusEnum" creationDateInterval: description: | Search interval for the package version publication date. Both dates are included. type: object properties: startDate: description: Start date of the search. type: string format: date default: "1970-01-01" endDate: description: End date of the search. type: string format: date default: "2050-12-31" operationParams: type: object title: ApiSpecificParams description: Search parameters specific for particular API type. required: - apiType oneOf: - type: object description: | Search parameters specific for REST API. These params shall be used only if apiType in search request equals to REST API. title: SearchRestParams properties: apiType: description: Type of the API type: string enum: - rest scope: description: Search scope for operation type: array items: type: string enum: - request - response detailedScope: description: Detailed search scope for operation type: array items: type: string enum: - properties - annotation - examples methods: description: Operation method type: array items: type: string enum: - post - get - put - patch - delete - head - options - connect - trace example: ["post", "get"] - type: object description: | Search parameters specific for GraphQL. These params shall be used only if apiType in search request equals to GraphQL. title: SearchGQLParams properties: apiType: description: Type of the API type: string enum: - graphql scope: type: array items: type: string enum: - argument - property - annotation operationTypes: type: array items: type: string enum: - query - mutation - subscription examples: {} required: true responses: "200": description: Success content: application/json: schema: description: Results of the global search list type: object properties: operations: type: array items: $ref: "#/components/schemas/SearchResultOperation" documents: type: array items: $ref: "#/components/schemas/SearchResultDocument" packages: type: array items: $ref: "#/components/schemas/SearchResultPackage" examples: {} "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v4/search/{searchLevel}": parameters: - name: searchLevel in: path required: true description: | Level of object for search. schema: type: string enum: - operations - documents - packages - ddl - mcp post: x-nc-api-audience: noBWC tags: - Search summary: "Global search v4" description: Global search by text or custom parameters operationId: postSearchV4 parameters: - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/page" requestBody: description: Filters for search content: application/json: schema: type: object required: - searchString - workspace - status title: searchCommonParamsV4 description: | Common parameters for Global search v4. `apiType` is required when `searchLevel = operations`; it is ignored for `ddl` and `mcp` search levels. properties: searchString: description: Search text type: string example: "Billing account" apiType: description: Type of the API to search for. Required when `searchLevel = operations`. type: string enum: - rest - graphql - asyncapi - protobuf workspace: description: Top-level workspace ID (no dots). type: string example: "QS" status: description: Package version status. allOf: - $ref: "#/components/schemas/VersionStatusEnum" packageIds: description: | List of Package Id(s). Must belong to the specified workspace. type: array items: type: string example: ["QS.CloudQSS.CPQ.Q-TMF", "QS.CloudQSS.CPQ.CORE"] versions: description: Package version names. type: array items: type: string example: ["2022.2", "2022.3"] creationDateInterval: description: | Search interval for the package version publication date. Both dates are included. type: object properties: startDate: description: Start date of the search. type: string format: date default: "1970-01-01" endDate: description: End date of the search. type: string format: date default: "2050-12-31" examples: {} required: true responses: "200": description: Success content: application/json: schema: description: Results of the global search list type: object properties: operations: description: Returned when `searchLevel = operations`. type: array items: $ref: "#/components/schemas/SearchResultOperation" ddlContracts: description: Returned when `searchLevel = ddl`. type: array items: $ref: "#/components/schemas/SearchResultDDLContract" mcpContracts: description: Returned when `searchLevel = mcp`. type: array items: $ref: "#/components/schemas/SearchResultMCPContract" documents: description: Returned when `searchLevel = documents`. type: array items: $ref: "#/components/schemas/SearchResultDocument" packages: description: Returned when `searchLevel = packages`. type: array items: $ref: "#/components/schemas/SearchResultPackage" examples: {} "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: {} "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" /playground/proxy: get: summary: Proxy endpoint for try it in case of non-cloud environments. description: Allows to send any request to any address. operationId: getAgentsIdNamespacesIdServicesProxy security: - BearerAuth: [] - CookieAuth: [] tags: - TryIt parameters: - name: X-Apihub-Proxy-Url in: header required: true schema: type: string description: | Full URL that includes paths and query params example: http://127.0.0.1:8080/api/v2/escaped/te%20xt/text/text123?escaped=te%20xt - name: X-Apihub-Authorization in: header required: true schema: type: string description: | The header is a replacement for Authorization header, because original Authorization header should be passed to the target service. responses: 1XX: description: Information responses content: "*/*": schema: description: Schema of any type 2XX: description: Successful responses content: "*/*": schema: description: Schema of any type 3XX: description: Redirection messages content: "*/*": schema: description: Schema of any type 4XX: description: Client error responses content: "*/*": schema: description: Schema of any type 5XX: description: Server error responses content: "*/*": schema: description: Schema of any type /metrics: get: tags: - Admin summary: Get Prometheus metrics description: | Returns Prometheus metrics in text format. operationId: getMetrics security: [] responses: "200": description: Success content: text/plain: schema: type: string description: Prometheus metrics in text format "/api/v2/packages/{packageId}/publish/statuses": get: tags: - Publish summary: Get builds statuses description: | Get statuses for multiple publish operations. Note: In Service.go this endpoint is implemented as POST, but CSV specifies GET. operationId: getPublishStatuses parameters: - $ref: "#/components/parameters/packageId" - name: publishIds in: query required: false description: List of publish IDs to get statuses for schema: type: array items: type: string style: form explode: true responses: "200": description: Success content: application/json: schema: type: array items: type: object properties: publishId: type: string status: type: string message: type: string "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/changes": get: tags: - Versions - Changes summary: Get version changes description: | Get validation changes for a package version. operationId: getVersionChanges deprecated: true parameters: - $ref: "#/components/parameters/packageId" - name: version in: path required: true description: Version identifier schema: type: string responses: "200": description: Success content: application/json: schema: type: object properties: previousVersion: type: string previousVersionPackageId: type: string changes: type: array items: type: object bwcMessages: type: array items: type: object "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v2/packages/{packageId}/versions/{version}/problems": get: tags: - Versions summary: Get version problems description: | Get validation problems for a package version. operationId: getVersionProblems deprecated: true parameters: - $ref: "#/components/parameters/packageId" - name: version in: path required: true description: Version identifier schema: type: string responses: "200": description: Success content: application/json: schema: type: object properties: messages: type: array items: type: object "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "403": description: Forbidden content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/ai-chat/chats": get: tags: - AI Chat summary: List chats of the current user. description: | Returns chat metadata (without messages) for the authenticated user, sorted first by `pinned` desc, then by `lastMessageAt` desc. Chats of other users are never returned. Pagination is keyset-based rather than page-based because a user's chat list is a live view: pinning/unpinning and incoming messages constantly reorder entries, so a second offset-based request would produce duplicates or gaps. A timestamp cursor (`before`) is stable under these changes. Usage: the first request omits `before` and receives the newest `limit` chats; subsequent requests pass `before` = `lastMessageAt` of the last (oldest) chat from the previous page. The client never generates the timestamp itself, so no client/server clock-skew handling is required. operationId: listAiChats parameters: - name: limit in: query description: Maximum number of chats to return. Server may cap this value. required: false schema: type: integer minimum: 1 maximum: 200 default: 100 - name: before in: query description: | Keyset cursor. Return only chats with `lastMessageAt` strictly less than this value. Format: RFC 3339 timestamp. When omitted, the server returns the newest `limit` chats (i.e. the first page). Pinned chats are always returned before non-pinned chats regardless of the cursor. required: false schema: type: string format: date-time example: "2026-04-18T09:12:33Z" - name: search in: query description: Optional case-insensitive substring match on chat `title`. required: false schema: type: string responses: "200": description: Successful execution content: application/json: schema: type: object required: - chats properties: chats: type: array items: $ref: "#/components/schemas/AiChat" hasMore: description: True if more chats are available with an earlier `lastMessageAt`. type: boolean examples: AiChatsList: $ref: "#/components/examples/AiChatsList" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: Unauthorized: $ref: "#/components/examples/Unauthorized" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" post: tags: - AI Chat summary: Create a new chat. description: | Creates an empty chat owned by the authenticated user. The title is optional and will be filled automatically (from the first user message) if omitted; it can be changed later via PATCH. operationId: createAiChat requestBody: required: false content: application/json: schema: $ref: "#/components/schemas/AiChatCreateRequest" responses: "201": description: Chat created content: application/json: schema: $ref: "#/components/schemas/AiChat" examples: AiChat: $ref: "#/components/examples/AiChat" "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: IncorrectInputParams: $ref: "#/components/examples/IncorrectInputParameters" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: Unauthorized: $ref: "#/components/examples/Unauthorized" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/ai-chat/chats/{chatId}": parameters: - $ref: "#/components/parameters/chatId" get: tags: - AI Chat summary: Get chat metadata. description: | Returns the metadata of a chat owned by the current user. The response does not contain messages — use `GET /api/v1/ai-chat/chats/{chatId}/messages` to retrieve them. operationId: getAiChat responses: "200": description: Successful execution content: application/json: schema: $ref: "#/components/schemas/AiChat" examples: AiChat: $ref: "#/components/examples/AiChat" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: Unauthorized: $ref: "#/components/examples/Unauthorized" "404": description: Chat not found or does not belong to the current user. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: AiChatNotFound: $ref: "#/components/examples/AiChatNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" patch: tags: - AI Chat summary: Update chat (rename / pin / unpin). description: | Partially updates a chat. Only the fields present in the request body are updated. Pinning rules: * a user may pin at most **3** chats (the limit is hard-coded identically on the client and on the server); pinning beyond the limit returns `400`; * pinned chats are exempt from TTL-based cleanup. operationId: updateAiChat requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AiChatUpdateRequest" responses: "200": description: Chat updated content: application/json: schema: $ref: "#/components/schemas/AiChat" "400": description: | Bad request. Typical reasons: * attempting to pin when the user already has the maximum allowed number of pinned chats; * `title` too long or empty after trimming. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: PinLimitExceeded: $ref: "#/components/examples/AiChatPinLimitExceeded" AiChatValidationFailed: $ref: "#/components/examples/AiChatValidationFailed" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: Unauthorized: $ref: "#/components/examples/Unauthorized" "404": description: Chat not found or does not belong to the current user. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: AiChatNotFound: $ref: "#/components/examples/AiChatNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" delete: tags: - AI Chat summary: Delete a chat. description: | Permanently deletes a chat together with all its messages. Any generated files referenced by its messages remain available on disk until their file-level TTL expires. operationId: deleteAiChat responses: "204": description: Chat deleted content: {} "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: Unauthorized: $ref: "#/components/examples/Unauthorized" "404": description: Chat not found or does not belong to the current user. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: AiChatNotFound: $ref: "#/components/examples/AiChatNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/ai-chat/chats/{chatId}/messages": parameters: - $ref: "#/components/parameters/chatId" get: tags: - AI Chat summary: List chat messages. description: | Returns messages of the given chat in reverse-chronological order (newest first). Use keyset pagination via `before` to fetch older pages. Keyset pagination is used (rather than `page`) because messages are appended live: a naive offset would miss or duplicate items whenever a new message arrives between two page fetches. The first request omits `before` and receives the newest `limit` messages; subsequent requests pass `before` = `createdAt` of the last (oldest) message from the previous page. For every `assistant` message the response includes: * full markdown `content` (same that was streamed) — including any inline markdown links to generated files, with freshly re-issued signed tokens so the links remain usable for the standard file TTL at the moment of the request; * `toolInvocations` — UI-facing summaries (tool name, status, duration) that were shown as transient pills during the live stream, so that after a reload the user still sees which tools were used. Clients that do not need this telemetry may ignore the field. What is intentionally not returned: * raw LLM tool-call arguments and tool results (internal; not needed for rendering); * system prompt and compaction summaries (internal context-management artefacts). This endpoint is the only way to load history — the streaming endpoint is strictly for producing new turns, not for replaying existing ones. operationId: listAiChatMessages parameters: - name: limit in: query required: false description: Maximum number of messages to return. schema: type: integer minimum: 1 maximum: 200 default: 100 - name: before in: query required: false description: | Keyset cursor. Return only messages created strictly before this timestamp (RFC 3339). When omitted, the server returns the newest `limit` messages (i.e. the first page). schema: type: string format: date-time responses: "200": description: Successful execution content: application/json: schema: type: object required: - messages properties: messages: type: array description: Messages in reverse-chronological order (newest first). items: $ref: "#/components/schemas/AiChatMessage" hasMore: description: True if more messages are available before the oldest returned one. type: boolean examples: AiChatMessagesList: $ref: "#/components/examples/AiChatMessagesList" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: Unauthorized: $ref: "#/components/examples/Unauthorized" "404": description: Chat not found or does not belong to the current user. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: AiChatNotFound: $ref: "#/components/examples/AiChatNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" post: tags: - AI Chat summary: Send a message (non-streaming). description: | Appends a user message to the chat and waits synchronously for the assistant response. Intended for integration scripts or clients that do not want to handle SSE. Interactive UIs should use the streaming variant (`/messages/stream`) instead. The request body must carry **only the new user message** — never the full history. The server reconstructs the conversation context from its own storage (including any compaction summary) and sends the resulting message list to the LLM on each turn. operationId: sendAiChatMessage requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AiChatSendMessageRequest" responses: "200": description: Assistant response produced content: application/json: schema: $ref: "#/components/schemas/AiChatSendMessageResponse" examples: AiChatSendMessageResponse: $ref: "#/components/examples/AiChatSendMessageResponse" "400": description: Bad request (empty content, invalid clientMessageId, etc.). content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: AiChatValidationFailed: $ref: "#/components/examples/AiChatValidationFailed" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: Unauthorized: $ref: "#/components/examples/Unauthorized" "404": description: Chat not found or does not belong to the current user. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: AiChatNotFound: $ref: "#/components/examples/AiChatNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/ai-chat/chats/{chatId}/messages/stream": parameters: - $ref: "#/components/parameters/chatId" post: tags: - AI Chat summary: Send a message with streaming response (SSE). description: | Appends a user message to the chat and streams the assistant response as Server-Sent Events. Request semantics: * the body carries **only the new user message** plus (optionally) a client-generated `clientMessageId` for idempotency — never the full conversation history; * the server reconstructs context from its own storage (including any compaction summary) and sends the resulting message list to the LLM on each turn — the client never transmits prior turns; * on the very first message in a chat the server may auto-fill the chat title in the background. Response semantics (SSE): * `Content-Type: text/event-stream; charset=utf-8`; * each event is framed as `event: \n` + `data: \n\n`; * the connection is closed by the server after emitting a terminal event (`done` or `error`); * to cancel a turn the client may abort the underlying HTTP request; the server will stop the upstream LLM call best-effort but the partial assistant message that was already persisted stays in the history. Possible event types (in order of occurrence): * `context.compacted` — emitted at most once per turn, before the assistant starts streaming, when the server auto-compacted earlier history into a summary; * `message.assistant.start` — assistant message created; contains its `id`; * `tool.started` — MCP tool call has started (UI hint: "Searching API operations…"); * `tool.completed` — MCP tool call finished (`ok: true/false`, duration); * `message.assistant.delta` — incremental markdown chunk to append; chunks are safe to concatenate as-is; * `message.assistant.completed` — full final markdown of the assistant message, including any inline markdown links to generated files; * `error` — unrecoverable error; stream ends; * `done` — terminal marker; stream ends. Every event payload is a JSON object; see `AiChatStreamEvent` schemas for details. operationId: sendAiChatMessageStream requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AiChatSendMessageRequest" responses: "200": description: | Streaming response. The body is a sequence of SSE events, not a single JSON object. The schema below is provided for documentation only: each `data:` payload conforms to `AiChatStreamEvent`. content: text/event-stream: schema: $ref: "#/components/schemas/AiChatStreamEvent" examples: AiChatStreamEvents: $ref: "#/components/examples/AiChatStreamEvents" "400": description: Bad request content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: AiChatValidationFailed: $ref: "#/components/examples/AiChatValidationFailed" "401": description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: Unauthorized: $ref: "#/components/examples/Unauthorized" "404": description: Chat not found or does not belong to the current user. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: AiChatNotFound: $ref: "#/components/examples/AiChatNotFound" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" "/api/v1/ephemeral-files/{fileId}": parameters: - name: fileId in: path required: true description: Opaque identifier of an ephemeral file. schema: type: string format: uuid get: tags: - Ephemeral Files summary: Download an ephemeral file. description: | Downloads a short-lived file stored by the backend. Producers (such as the AI chat assistant) embed a signed download URL into their response; other subsystems can reuse the same mechanism for exports, reports, and similar artefacts. The endpoint is served without session authentication; instead, access is authorized via a short-lived signed token passed in the `token` query parameter. The token lifetime is a server-side setting and is not published to the client. operationId: downloadEphemeralFile security: [] parameters: - name: token in: query required: true description: Short-lived signed access token scoped to this file. Opaque to the client — issued by the server as part of the download URL and simply echoed back. schema: type: string responses: "200": description: File contents content: application/octet-stream: schema: type: string format: binary headers: Content-Disposition: schema: type: string description: Suggested file name for saving the attachment. example: 'attachment; filename="report.csv"' Content-Type: schema: type: string description: Original MIME type of the file if known, otherwise `application/octet-stream`. "401": description: Token missing, malformed or signature invalid. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: EphemeralFileTokenMissing: $ref: "#/components/examples/EphemeralFileTokenMissing" EphemeralFileTokenInvalid: $ref: "#/components/examples/EphemeralFileTokenInvalid" "404": description: File not found or already cleaned up. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: EphemeralFileNotFound: $ref: "#/components/examples/EphemeralFileNotFound" "410": description: | Token expired. The browser will surface this as a failed download; the client does not need to handle it specially. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: EphemeralFileTokenExpired: $ref: "#/components/examples/EphemeralFileTokenExpired" "500": description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: InternalServerError: $ref: "#/components/examples/InternalServerError" components: parameters: apiAudience: name: apiAudience in: query description: | Filter operations by apiAudience. * internal - APIs are available for integration within product application. * external - APIs exposed outside the boundary of the product application: solution delivery integrations, 3rd party integrations, customer integrations. * unknown - If any value other than internal or external is used, the API is considered as unknown. schema: type: string enum: - all - internal - external - unknown default: all severity: name: severity in: query description: Filter API changes by severity. schema: type: array items: type: string enum: - breaking - non-breaking - deprecated - semi-breaking - annotation - unclassified apiType: name: apiType description: Type of the API. in: path required: true schema: type: string enum: - rest - graphql - protobuf - asyncapi apiTypeQueryParam: name: apiType in: query description: | Filter documents by type of the API. Mutually exclusive with `contractType`: specify at most one of `apiType` / `contractType` (if both are specified then 400 will be returned). schema: type: string enum: - rest - graphql - protobuf - asyncapi mcpEntity: name: entity in: path required: true description: MCP entity collection type. schema: type: string enum: - inits - tools - prompts - resources mcpEntityId: name: mcpEntityId in: path required: true description: MCP logical entity identifier (`mcpEntityId` from the list response). Clients must percent-encode unsafe characters. schema: type: string example: "mcp-tool-get_forecast" ddlEntityId: name: ddlEntityId in: path required: true description: DDL entity logical identifier. Clients must percent-encode unsafe characters. schema: type: string example: "public-table-users" previousVersion: name: previousVersion in: query description: | Package previous version. If both previousVersion and previousVersionPackageId are not specified, then the previous **release** version will be used. schema: type: string example: "2022.3" previousVersionPackageId: name: previousVersionPackageId in: query description: | Package unique identifier for previous version. If both previousVersion and previousVersionPackageId are not specified, then the previous **release** version will be used. schema: type: string example: "QS.RUNENV.K8S-SERVER.CJM-QSS-DEV-2.Q-TMF" asyncapiChannel: name: asyncapiChannel in: query description: | Filter operations by AsyncAPI channel identifier (comma-separated). Applicable only when apiType = asyncapi; ignored for other API types. schema: type: string example: "userSignup,orderCreated" asyncapiProtocol: name: asyncapiProtocol in: query description: | Filter operations by communication protocol. Applicable only when apiType = asyncapi; ignored for other API types. The value is the protocol string from the channel's server (e.g. kafka, amqp). Use "Unknown" for operations where the protocol could not be resolved. schema: type: string example: "kafka" groupName: name: groupName in: path description: Version Group required: true schema: type: string packageId: name: packageId in: path description: Package unique identifier (full alias) required: true schema: type: string example: QS.CloudQSS.CPQ.Q-TMF version: name: version in: path description: Package version required: true schema: type: string example: "2022.3" slug: name: slug in: path description: File unique string identifier required: true schema: type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" limit: name: limit in: query description: Requested number of resources to be provided in response. schema: type: number default: 100 maximum: 100 minimum: 1 page: name: page in: query description: Page number schema: type: number default: 0 showParents: name: showParents in: query description: Show/hide the list of parent packages. schema: type: boolean default: false operationId: name: operationId in: path description: Operation unique identifier (slug). Not the same as operationId tag from the OpenAPI file. required: true schema: type: string example: "get-quoteManagement-v5-quote-quoteId" modelName: name: modelName in: path description: Unique model identifier for operation required: true schema: type: string example: "CreateItemDto" chatId: name: chatId in: path required: true description: AI chat identifier. schema: type: string format: uuid example: "e1a9f6d2-4a17-4a3b-9b91-4d7e9e8a0f11" schemas: SystemInfo: description: Information about the APIHUB product type: object properties: backendVersion: description: Current backend version type: string example: main-20220727.092034-53 productionMode: description: Production environment flag type: boolean externalLinks: description: List of links to the external resource, for example URL to the documentation or URL pointing to the contact information of support group. type: array items: description: | Title for the link and corresponding URL. Value must written in the following format |. If array item does not contain vertical bar (|), then this item will be skipped. type: string example: [User guide|https://www.example.com/guide, Support team|https://www.example.com/support] migrationInProgress: description: Identifies if a full migration is currently in progress. Returns false when no migration or only a partial migration is running. type: boolean default: false aiChatEnabled: description: Mirrors the ai.chat.enabled kill-switch. When false, AI chat routes are not registered. type: boolean default: false featureFlags: description: Feature flags for the system type: object properties: useV3Search: description: When true, signals to use v3 search API instead of v4 search API. type: boolean default: false deprecated: true previousVersionStatusValidation: description: When true, previous version status validation is enforced on publish and patch endpoints. When false, the system runs with the legacy behaviour. type: boolean default: true ApiKey: title: ApiKey type: object required: - id - name properties: id: description: ApiKey unique identifier type: string name: description: ApiKey name type: string DeprecatedItems: description: List of deprecated items in the operation. type: array items: type: object properties: deprecatedInPreviousVersions: description: List of previous release versions where item was also deprecated type: array items: type: string example: ["2022.2", "2022,1", "2021.4"] declarationJsonPaths: description: Declarative path to deprecated item. type: array items: type: array items: anyOf: - type: string - type: integer example: [["paths", "/post/saml/", "test", 1], ["paths", "/post/saml/", "test", 22]] description: description: Human-readable description of deprecated item. type: string example: "[Deprecated] query parameter 'petId'" deprecatedInfo: description: | Additional information about single deprecated item: * for REST API it is value of 'x-deprecated-meta' extension (value of extension must be string), which is defined for deprecated item. * for GraphQL API it is value of 'reason' argument of @deprecated directive. * for AsyncAPI 3.0: "[Deprecated] message {name}" (name = message.title or messageId), or "[Deprecated] channel {name}" (name = channel.title or channelId). type: string tolerantHash: description: Tolerant hash for Schema object or Parameter object that has been deprecated. It is needed to identify that the same schema/parameter was deprecated in previous version. type: string hash: description: Hash (full) for Schema object or Parameter object that has been deprecated, it is needed to detect semi-breaking changes in UI. type: string ApiType: title: apiType type: string enum: - rest - graphql - protobuf - asyncapi DdlContractKind: title: DDL contract kind description: DDL contract entity kind. type: string enum: - table - view McpContractKind: title: MCP contract kind description: MCP discovery contract entity kind. type: string enum: - init - tool - prompt - resource DdlEntity: type: object description: | Identified DDL entity — its stable id and descriptor (kind/name/schemaName/description). The core shared by the build result and the API; each context adds its own fields via allOf. required: - ddlEntityId - kind - name - schemaName - description properties: ddlEntityId: description: Stable DDL entity identifier, `{schemaName}-{kind}-{name}` slugified. type: string example: public-table-users kind: description: DDL contract entity kind. Only `table` is produced in the current version. type: string enum: - table example: table name: description: Table name. type: string example: users schemaName: description: Schema name the entity belongs to (the entity scope). type: string example: public description: description: Value of `COMMENT ON TABLE`, or an empty string when none is present. type: string example: Registered users DdlEntityView: description: DDL entity as returned by the version GET list/details endpoints. type: object allOf: - $ref: "#/components/schemas/DdlEntity" - type: object required: - documentId - versionInternalDocumentId properties: documentId: description: Source document identifier. type: string example: "shop-sql" versionInternalDocumentId: description: > Unique string identifier of the preprocessed (validated, references resolved) internal document where the entity is present. Corresponds to `id` field for the document in `version-internal-documents.json`. type: string example: "shop" packageRef: description: Package and version reference key. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" DdlEntityChange: description: One side (current or previous) of a DDL entity in a changelog change entry. type: object allOf: - $ref: "#/components/schemas/DdlEntity" - type: object properties: packageRef: description: Package and version reference key. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" McpEntity: type: object description: | MCP discovery contract entity. Holds the fields common to the API response and the mcp.json build-result index; each context adds its own fields via allOf. required: - mcpEntityId - kind - title - description - mcpEndpoint - documentId properties: mcpEntityId: description: Stable MCP entity identifier, `{mcpEndpoint}-{kind}-{name}` slugified (the leading slash of the endpoint is dropped). type: string example: mcp-tool-get_forecast kind: description: MCP discovery contract entity kind. type: string enum: - init - tool - prompt - resource title: description: MCP entity title. For tools, prompts and resources this is the name from the MCP spec. For init entities the value is always "initialize". type: string example: get_forecast description: description: Entity description, or an empty string when none is present. type: string example: Get the weather forecast for a location mcpEndpoint: description: | MCP endpoint the entity belongs to (the entity scope), from file-level publish metadata. A relative path (e.g. `/mcp`), not an absolute URL. type: string example: /mcp documentId: description: Source document identifier. type: string example: tools-forecast-json McpEntityView: description: | MCP discovery contract entity as returned by the version GET list/details endpoints: the shared `McpEntity` plus (for dashboards) the package reference. type: object allOf: - $ref: "#/components/schemas/McpEntity" - type: object properties: packageRef: description: Package and version reference key. type: string example: "QS.CloudQSS.CPQ.Q-TMF@2023.2" VersionComparisonContractsSummary: description: | Contract comparison summary, keyed by contract type. MCP is omitted in v1 because MCP discovery entities are not diffed. type: object properties: ddl: type: object properties: changesSummary: allOf: - $ref: "#/components/schemas/ChangeSummary" - type: object description: Number of declarative DDL changes of each severity type. numberOfImpactedEntities: allOf: - $ref: "#/components/schemas/ChangeSummary" - type: object description: Number of DDL entities impacted by each severity type. VersionContractsSummary: description: | Summary of contract entities published in a package version, keyed by contract type. type: object properties: ddl: type: object properties: tablesCount: type: integer default: 0 description: Number of DDL table entities published in the version. changesSummary: allOf: - $ref: "#/components/schemas/ChangeSummary" - type: object description: Number of declarative DDL changes in the version (compared to the previous release version). Present only when the version has a previous version to compare against. numberOfImpactedEntities: allOf: - $ref: "#/components/schemas/ChangeSummary" - type: object description: Number of DDL entities impacted by each severity type. Present only when the version has a previous version to compare against. mcp: description: MCP summary keyed by MCP endpoint (one entry per published MCP endpoint in this version). type: object additionalProperties: type: object properties: toolsCount: type: integer default: 0 promptsCount: type: integer default: 0 resourcesCount: type: integer default: 0 example: /mcp: toolsCount: 3 promptsCount: 1 resourcesCount: 2 ExportVersion: type: object title: Export entire version description: | Export settings for exporting a version (i.e., all documents from the version). Only version of package with kind = package can be exported.\ * format = html: the export result includes a ZIP file containing interactive HTML for OpenAPI documents (i.e., those with types openapi-3-1, openapi-3-0, or openapi-2-0) and raw files for all other document types. * format = yaml/json: the export result includes a ZIP file containing OpenAPI documents in yaml/json format accordingly, and raw files for all other document types. required: - exportedEntity - packageId - version - format properties: exportedEntity: description: The entity to be exported. type: string enum: - version packageId: description: Package unique string identifier (full alias) of package with kind = package. type: string example: WS.GRP.PCKG version: description: Package version type: string example: "2024.2" removeOasExtensions: description: | Flag defines whether OAS extensions shall be removed (taking into account allowed list of OAS extensions defined on package) from exported OpenAPI specifications or not. type: boolean default: false format: description: | File format for export. type: string enum: - yaml - json - html allowedShareabilityStatuses: description: | Array of shareability statuses to filter documents during the export. type: array items: type: string enum: - shareable - non-shareable - unknown default: ["shareable", "non-shareable", "unknown"] example: ["shareable"] ExportRestDocument: type: object title: Export one OpenAPI document description: | Export settings for exporting one document. The option is applicable only for document types - openapi-3-1 / openapi-3-0 / openapi-2-0. The export result is determined by the "format" parameter. required: - exportedEntity - packageId - version - documentId - format properties: exportedEntity: description: The entity to be exported. type: string enum: - restDocument packageId: description: Package unique string identifier (full alias). type: string example: WS.GRP.PCKG version: description: Package version type: string example: "2024.2" documentId: description: Unique string identifier of document to export. Type of this document must be openapi-3-1 / openapi-3-0 / openapi-2-0. type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" format: description: | File format for export. type: string enum: - yaml - json - html removeOasExtensions: description: | Flag defines whether OAS extensions shall be removed (taking into account allowed list of OAS extensions defined on package) from exported specification or not. type: boolean default: false ExportRestOperationsGroup: type: object title: Export REST operations group description: | Export settings for exporting the operations group. The option is applicable only for groups with apiType = REST. The export result is determined by the "format" and "buildType" parameters. required: - exportedEntity - packageId - version - groupName - operationsSpecTransformation - format properties: exportedEntity: description: The entity to be exported. type: string enum: - restOperationsGroup packageId: description: Package unique string identifier (full alias). type: string example: WS.GRP.PCKG version: description: Package version. type: string example: "2024.2" groupName: description: Name of the operations group to export. Group must have apiType = REST type: string operationsSpecTransformation: description: | Type of OpeanAPI specification tranformation. Available options are: - **reducedSourceSpecifications** - proccess that finds source specifications for all operations from operation group and removes from these specifications operations other than those that are included into operation group. - **mergedSpecification** - process the merges all operations from an operation group into one specification. type: string enum: - reducedSourceSpecifications - mergedSpecification format: description: | Format of the exported file.\ If operationsSpecTransformation = reducedSourceSpecifications, then export result is a ZIP file containing files in selected format.\ If operationsSpecTransformation = mergedSpecification: * if format = html, then export result is a ZIP file containing interactive HTML for OpenAPI document. * if format = yaml/json, then export result is one OpenAPI file in the appropriate format. type: string enum: - yaml - json - html removeOasExtensions: description: | Flag defines whether OAS extensions shall be removed (taking into account allowed list of OAS extensions defined on package) from exported specification or not. type: boolean default: false ExportGraphqlOperationsGroup: type: object title: Export GraphQL operations group description: | Export settings for exporting the operations group. The option is applicable only for groups with apiType = GraphQL. The export result is a ZIP file containing GraphQL schema files for all operations from the group. required: - exportedEntity - packageId - version - groupName properties: exportedEntity: description: The entity to be exported. type: string enum: - graphqlOperationsGroup packageId: description: Package unique string identifier (full alias). type: string example: WS.GRP.PCKG version: description: Package version. type: string example: "2024.2" groupName: description: Name of the operations group to export. Group must have apiType = GraphQL type: string ExportAsyncapiOperationsGroup: type: object title: Export AsyncAPI operations group description: | Export settings for exporting the operations group. The option is applicable only for groups with apiType = AsyncAPI. The export result is a ZIP file containing AsyncAPI specifications for all operations from the group. required: - exportedEntity - packageId - version - groupName - format properties: exportedEntity: description: The entity to be exported. type: string enum: - asyncapiOperationsGroup packageId: description: Package unique string identifier (full alias). type: string example: WS.GRP.PCKG version: description: Package version. type: string example: "2024.2" groupName: description: Name of the operations group to export. Group must have apiType = AsyncAPI type: string format: description: Format of the exported file. type: string enum: - yaml - json PackageCreate: description: Parameters for the package creation required: - alias - name - kind type: object properties: parentId: description: Parent package ID type: string kind: description: | Package kind. * If kind = workspace, the parentId will be ignored. * If kind = group or package or dashboard, the parentId is required. type: string enum: - workspace - group - package - dashboard name: description: Name of the new package type: string alias: description: Package short alias (abbreviation) type: string maxLength: 10 pattern: "^[a-zA-Z0-9-_]" description: description: Common description of the package type: string serviceName: description: | Service name that package belongs to. Should be equal to service deployment name in kubernetes. Ignored for Workspace and Group kind. type: string defaultRole: description: Default role of the package. type: string releaseVersionPattern: description: Release version mask. Value shall be inherited from parent group with the ability to override it. type: string excludeFromSearch: description: | If true, the package (including child packages) will be ignored by global search. Changing the value of the parent package will change the value of all child packages. A child package cannot have a negative value if the parent package has a positive value. The default value for a newly created package is equal to the value from the parent package. type: boolean Package: description: Simple package object, without content and dependencies type: object title: Package required: - packageId - alias - kind - name - isFavorite - defaultRole properties: packageId: description: Package unique string identifier (full alias) type: string alias: type: string description: Package short alias (abbreviation) maxLength: 10 pattern: "^[a-zA-Z0-9-_]" parentId: description: Parent package ID type: string kind: description: Package kind type: string enum: - workspace - group - package - dashboard name: description: Name of the package type: string description: description: Common description of the package type: string isFavorite: description: Sign of the favorite package for the caller user type: boolean default: false serviceName: description: Service name that package belongs to. Should be equal to service deployment name in kubernetes. type: string permissions: type: array description: List of user permissions applicable to the package. items: $ref: "#/components/schemas/Permission" example: ["read", "create_and_update_package", "delete_package"] defaultRole: description: Default role of the package. type: string releaseVersionPattern: description: Release version mask. Value shall be inherited from parent group with the ability to override it. type: string excludeFromSearch: description: | If true, the package (including child packages) will be ignored by global search. Changing the value of the parent package will change the value of all child packages. A child package cannot have a negative value if the parent package has a positive value. The default value for a newly created package is equal to the value from the parent package. type: boolean restGroupingPrefix: description: | Regular expression used as criteria for grouping operations. Groups for the package version are calculated during publication of this version. type: string example: "/api/v1/{group}/" PackageExportConfig: description: Configuration for documents export settings. type: object properties: allowedOasExtensions: description: >- List of OAS extensions that shall be preserverd when user exports OpenAPI specification(s) with remove OAS extensions option. type: array items: type: object properties: oasExtension: description: | OAS extension that shall be preserverd when user exports OpenAPI specification(s) with remove OAS extensions option. type: string pattern: ^x- example: x-internal-info packageId: description: | Id of the package in which the extension was specified. This can be the id of the current package or the parent package if the extension is inherited. type: string example: WS.GRP.PCKG packageName: description: Name of the package in which the extension was specified. type: string example: Resource Inventory packageKind: description: Kind of the package in which the extension was specified. type: string enum: - workspace - group - package PackageExportConfigUpdate: description: Parameters for update of package export config. type: object properties: allowedOasExtensions: description: | List of OAS extensions that shall be preserverd when user exports OpenAPI specification(s) with remove OAS extensions option. List of OAS extensions is unique within current package.\ The full list of direct extensions must be included in the request, as the request replaces the items in the array rather than adding to them. type: array uniqueItems: true items: type: string pattern: ^x- example: - x-internal-info - x-design-details PackageList: description: Base package object for parents list. type: object title: PackageList properties: packageId: description: Package unique string identifier (full alias) type: string alias: type: string description: Package short alias (abbreviation) maxLength: 10 pattern: "^[a-zA-Z0-9-_]" parentId: description: Parent package ID type: string kind: description: Package kind type: string enum: - workspace - group - package - dashboard name: description: Name of the package type: string PackageUpdate: description: Parameters for the package update. Not changed parameters must not be transmitted. Parameters, required in creation, must not be empty if transmitted. type: object properties: name: description: Name of the package type: string description: description: Common description of the package type: string serviceName: description: | Service name that package belongs to. Should be equal to service deployment name in kubernetes. Parameter may be changed (filled in) only it was empty in creation. Otherwise, the 400 error will be returned. type: string defaultRole: description: Default role of the package. type: string defaultReleaseVersion: description: | Default release version for the package. Only `release` version may be placed as default. Return the error otherwise. type: string example: "2023.1" releaseVersionPattern: description: Release version mask. Value shall be inherited from parent group with the ability to override it. type: string excludeFromSearch: description: | If true, the package (including child packages) will be ignored by global search. Changing the value of the parent package will change the value of all child packages. A child package cannot have a negative value if the parent package has a positive value. The default value for a newly created package is equal to the value from the parent package. type: boolean restGroupingPrefix: description: Regular expression used as criteria for grouping operations. type: string VersionStatusEnum: description: Package version status type: string enum: - draft - release - archived User: description: Represents an APIHUB user with identity and profile information returned by API endpoints. type: object required: - id properties: id: description: Unique user login (username) used to authenticate the user. type: string example: user1221 name: description: Name of the user type: string example: "John Doe" email: description: Email address of the user type: string format: email example: "john.doe@example.com" avatarUrl: description: URL of the user avatar image. type: string format: URL ExtendedUser: allOf: - $ref: "#/components/schemas/User" - type: object required: - gitIntegrationStatus - systemRole properties: gitIntegrationStatus: type: boolean description: Indicates if the user has active git integration. systemRole: type: string description: System role of the user. accessTokenTTLSeconds: type: integer format: int32 nullable: true description: Optional access token time-to-live in seconds. ExtendedUserV2: allOf: - $ref: "#/components/schemas/User" - type: object required: - systemRole properties: systemRole: type: string description: System role of the user. accessTokenTTLSeconds: type: integer format: int32 nullable: true description: Optional access token time-to-live in seconds. Role: description: Represents a role with its identifier, display name, and assigned permissions. type: object title: Role required: - roleId - role - permissions properties: roleId: type: string description: Unique role identifier. The value is the slug of role name. example: editor role: type: string description: Role name. example: Editor Permission: description: Permission type: string enum: - read - create_and_update_package - delete_package - manage_draft_version - manage_release_version - manage_archived_version - user_access_management - access_token_management example: read Member: description: User and assigned role type: object title: Member required: - user - roles properties: user: $ref: "#/components/schemas/User" roles: type: array description: List of user roles in the package. items: allOf: - $ref: "#/components/schemas/Role" - type: object properties: inheritance: type: object description: Role was inherited from this package properties: packageId: description: Package unique string identifier (full alias) type: string kind: description: Package kind type: string enum: - workspace - group name: description: Name of the package type: string example: qubership MemberCreate: description: Assign users and role to the package type: object title: MemberCreate required: - emails - roleIds properties: emails: description: List of email addresses of the users to create. type: array items: type: string format: email example: ["john.doe@example.com"] roleIds: type: array description: List of role IDs, added to the user. items: type: string example: [owner, editor, viewer, none] PackageVersion: description: Base parameters of published version (without content) type: object title: PackageVersion required: - version - status - createdAt - createdBy properties: version: description: Package version name.The @ mask is used to return the revision number. type: string example: "2022.3@5" status: $ref: "#/components/schemas/VersionStatusEnum" createdBy: $ref: "#/components/schemas/Principal" createdAt: type: string description: Date of package creation. format: datetime versionLabels: description: List of version labels. type: array items: type: string example: ["part-of:CloudQSS-CPQBE"] previousVersion: description: previous package version name.The @ mask is used to return the revision number. type: string example: "2022.2@5" previousVersionPackageId: description: Package id of the previous version. Can be empty if the value is equal to the package id. type: string example: "QS.GRP.SOMEPKG" notLatestRevision: type: boolean default: false apiProcessorVerson: description: Version of api-processor with which current version was built. type: string PackageVersionContent: description: Published package version content type: object required: - packageId - version - createdAt - createdBy - summary - revision - revisionsCount - status - apiProcessorVerson properties: packageId: description: Package unique string identifier (full alias) type: string example: "QS.CloudQSS.CPQ.Q-TMF" version: description: Package version name.The @ mask is used to return the revision number. type: string example: "2022.2@5" createdAt: description: Date of the package version publication. type: string format: date-time createdBy: $ref: "#/components/schemas/Principal" previousVersion: description: Name of the previous published version.The @ mask is used to return the revision number. type: string example: "2022.2@5" previousVersionPackageId: description: Package id of the previous version to compare with. Required for agent snapshots. type: string example: "QS.GRP.SOMEPKG" versionLabels: description: List of version labels. type: array items: type: string example: ["part-of:CloudQSS-CPQBE"] notLatestRevision: type: boolean default: false revisionsCount: description: Total number of revisions in the version. type: integer format: int32 example: 3 status: $ref: "#/components/schemas/VersionStatusEnum" apiProcessorVerson: description: Version of api-processor with which current version was built. type: string PackageVersionFile: description: Parameters of published file in package version type: object title: Package version file required: - fileId - filename - slug - type - format - title properties: fileId: type: string description: File name. example: "qitmf-v5.11.json" filename: type: string description: File name (slug+extension). example: "qitmf-v5.11.json" slug: description: Published file slug type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" type: $ref: "#/components/schemas/SpecificationType" format: $ref: "#/components/schemas/DocumentFormat" title: description: Name/title of the document. type: string example: "Quote Integration TMForum Service" version: description: Document version type: string example: "1.0.1" labels: description: List of file labels. type: array items: type: string example: ["TMF"] shareabilityStatus: description: Document shareability status type: string enum: - shareable - non-shareable - unknown default: unknown example: "unknown" PackageTransformationFile: description: Parameters of published file in package version type: object title: Package version file required: - fileId - filename - slug - type - format - title properties: fileId: type: string description: File name. example: "qitmf-v5.11.json" filename: type: string description: File name (slug+extension). example: "qitmf-v5.11.json" slug: description: Published file slug type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" type: $ref: "#/components/schemas/SpecificationType" format: $ref: "#/components/schemas/DocumentFormat" title: description: Name/title of the document. type: string example: "Quote Integration TMForum Service" version: description: Document version type: string example: "1.0.1" labels: description: List of file labels. type: array items: type: string example: ["TMF"] description: description: Document description type: string includedOperationIds: description: List of operation IDs included to specified operation group type: array items: type: string example: ["get-quoteManagement-v5-quote", "post-quoteManagement-v5-quote"] data: description: Content of the operation as a JSON object type: object shareabilityStatus: description: Document shareability status type: string enum: - shareable - non-shareable - unknown default: unknown example: "unknown" Principal: description: User or API key allOf: - oneOf: - $ref: "#/components/schemas/User" - $ref: "#/components/schemas/ApiKey" - type: object required: - type properties: type: description: Identifies whether principal is user or API key type: string enum: - user - apiKey ActivityHistoryPrincipal: description: User, API key or automatic job allOf: - oneOf: - $ref: "#/components/schemas/User" - $ref: "#/components/schemas/ApiKey" - $ref: "#/components/schemas/Job" - type: object required: - type properties: type: description: Identifies whether principal is user, API key or automatic job type: string enum: - user - apiKey - job Job: description: Automatic job type: object required: - id - name properties: id: type: string description: Job identifier name: type: string description: Job name PackageVersionRef: description: Package version reference type: object title: Referenced package version required: - refId - kind - name - version - status properties: refId: description: Referenced package Id. type: string example: "QS.CloudQSS.CPQ.CORE" kind: description: Package kind type: string enum: - package - dashboard name: description: Name of the referenced package type: string example: "Quote Management TMF648" version: description: Referenced package version number. The @ mask is used to return the revision number. type: string example: "2022.2@5" status: $ref: "#/components/schemas/VersionStatusEnum" parentPackages: description: Array of parent package names type: array items: type: string deletedAt: description: date when package version was deleted package version type: string format: date-type example: "2023-05-30T17:17:11.755146Z" deletedBy: description: user who deleted package version type: string example: "user1221" notLatestRevision: type: boolean default: false PackagesMap: description: | A map of referenced package versions to the package version objects. The key is `packageId@version@revision` — three `@`-separated segments (note: the `version` field of each value is `version@revision`, only two segments). type: object additionalProperties: $ref: "#/components/schemas/PackageVersionRef" example: QS.CloudQSS.CPQ.Q-TMF@2023.2@3: refId: QS.CloudQSS.CPQ.Q-TMF kind: package name: Quote Management TMF648 version: "2023.2@3" status: release parentPackages: ["qubership", "Qubership JSS", "Sample Management"] deletedAt: "2023-05-30T17:17:11.755146Z" deletedBy: "user1221" notLatestRevision: true ErrorResponse: description: Standard error response returned for failed requests. Includes HTTP status, internal error code, human-readable message, optional message parameters, and optional debug details (non-production only). type: object properties: status: description: HTTP status code as an integer; expected to match the actual HTTP response status. type: number code: description: Internal string error code. Mandatory in response. type: string message: description: Human-readable error message describing what went wrong; intended for diagnostics and safe client display. type: string params: type: object description: Optional key/value parameters used to format or contextualize the error message (for example, identifiers or field names). example: id: 12345 type: string debug: description: Optional debug details (for example, stack traces). Returned only in development/test environments when verbose logging is enabled; do not rely on this field in production because it may contain sensitive data. type: string required: - status - code - message PackageApiKey: type: object description: ApiKey details for the package title: PackageApiKey required: - id - name - createdBy - createdAt - roles properties: id: description: ApiKey unique identifier type: string packageId: description: Internal unique package ID (full alias) type: string name: description: ApiKey name type: string createdBy: $ref: "#/components/schemas/User" createdFor: $ref: "#/components/schemas/User" createdAt: description: Date and time of ApiKey creation type: string format: datetime roles: description: List of role identifiers assigned to the entity. type: array items: type: string PersonalAccessToken: type: object description: Personal access token details title: Personal access token required: - id - name - expiresAt - status - createdAt properties: id: description: Personal access token identifier type: string name: description: Personal access token name type: string example: token1 expiresAt: description: Date and time of personal access token expiration. Null if token does not have an expiration date. type: string format: date-time nullable: true createdAt: description: Date and time of personal access token creation type: string format: date-time status: description: | The status of the personal access token, calculated based on the expiry date.\ Expired token cannot be used to authenticate to APIHUB. type: string enum: - active - expired SpecificationType: title: type description: Type of the specification notation. type: string enum: - openapi-3-1 - openapi-3-0 - openapi-2-0 - json-schema - markdown - graphql-schema - graphapi - introspection - protobuf-3 - asyncapi-3-0 - ddl - mcp - unknown DocumentFormat: title: format description: Format of the specification document. type: string enum: - json - yaml - md - graphql - gql - proto - sql - unknown Operation: description: Operation object title: Operation type: object required: - operationId - documentId - title - apiType - apiAudience - apiKind - versionInternalDocumentId properties: operationId: description: | Operation unique identifier (slug). Not the same as operationId tag from the OpenAPI file. For AsyncAPI 3.0: operationId = normalized_operation_id + "-" + normalized_message_id, where operation_id is the key in the root operations map and message_id is the key in the channel's messages map. type: string example: get-quoteManagement-v5-quote documentId: description: Unique string identifier of the document from which the operation is originated type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" title: description: | Operation summary/title. For AsyncAPI 3.0: message.title. If the message has no title, the messageId (key in the channel's messages map) is used. type: string apiType: # description: Type of the API. # type: string # enum: # - rest # - kafka # - grpc # - graphql # - protobuf $ref: "#/components/schemas/ApiType" externalMetadata: description: External operation metadata. type: object deprecated: description: | Operation deprecate flag. For AsyncAPI 3.0: derived from x-deprecated extension on Message Object (message-deprecated) or Channel Object (channel-deprecated). Native deprecated: true/false exists only for Schema Object in AsyncAPI 3.0. type: boolean default: false apiAudience: description: | Operation's target audience. * internal - APIs are available for integration within product application. * external - APIs exposed outside the boundary of product application: solution delivery integrations, 3rd party integrations, customer integrations. * unknown - If any value other than internal or external is used, the API is considered as unknown. For AsyncAPI 3.0: derived from x-api-audience extension. Channel-level is the default; operation-level overrides when present. If neither defines the extension, the audience is external. type: string enum: - internal - external - unknown apiKind: description: | Operation API kind. * bwc - API with backward compatibility support (a.k.a. public). * no-bwc - API without backward compatibility support (a.k.a. internal). * experimental - APIs for feature testing. Usage is not recommended. For AsyncAPI 3.0: derived from x-api-kind extension. Channel-level is the default; operation-level overrides when present. If neither defines the extension, API Kind is bwc. type: string enum: - bwc - no-bwc - experimental default: bwc tags: description: | List of operation tags. * in rest, tag is OpenAPI tag. * in graphql, tag is root schema type - query, mutation, subscription. * in protobuf, tag is service of method. type: array items: type: string example: ["RestControllerV5"] versionInternalDocumentId: description: > Unique string identifier of the preprocessed (validated, references resolved) internal document, where the operation is present. Corresponds to `id` field for the document in `version-internal-documents.json` type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-ref-resolved-json" RestOperation: description: REST operation object. title: RestOperation allOf: - $ref: "#/components/schemas/Operation" - $ref: "#/components/schemas/RestOperationMeta" ProtobufOperation: description: Protobuf operation object. title: ProtobufOperation allOf: - $ref: "#/components/schemas/Operation" - $ref: "#/components/schemas/ProtobufOperationMeta" GraphQLOperation: description: GraphQL operation object. title: GraphQLOperation allOf: - $ref: "#/components/schemas/Operation" - $ref: "#/components/schemas/GraphQLOperationMeta" AsyncAPIOperation: description: AsyncAPI operation object. title: AsyncAPIOperation allOf: - $ref: "#/components/schemas/Operation" - $ref: "#/components/schemas/AsyncAPIOperationMeta" SearchResultOperation: description: | Global search result for API operations; must be returned when searchLevel = operation title: SearchResultOperation allOf: - oneOf: - $ref: "#/components/schemas/RestOperation" - $ref: "#/components/schemas/GraphQLOperation" - $ref: "#/components/schemas/ProtobufOperation" - $ref: "#/components/schemas/AsyncAPIOperation" - type: object required: - packageId - name - parentPackages - version - status properties: packageId: description: Package unique string identifier (full alias) type: string example: "QS.CloudQSS.CPQ.Q-TMF" name: description: Package name type: string example: "Quote TMF Service" parentPackages: description: Array of parent package names type: array items: type: string version: description: Package version name type: string example: "2022.2@5" status: $ref: "#/components/schemas/VersionStatusEnum" SearchResultDDLContract: description: Global search result for a DDL table or view contract; returned when `searchLevel = ddl`. title: SearchResultDDLContract type: object required: - packageId - name - parentPackages - version - status - tableId - kind properties: packageId: description: Package unique string identifier (full alias) type: string example: "QS.CloudQSS.CPQ.Q-TMF" name: description: Package name type: string example: "Quote TMF Service" parentPackages: description: Array of parent package names type: array items: type: string version: description: Package version name type: string example: "2022.2@5" status: $ref: "#/components/schemas/VersionStatusEnum" tableId: description: DDL table/view logical identifier. type: string example: "public.users" kind: $ref: "#/components/schemas/DdlContractKind" schemaName: description: SQL schema name. type: string example: "public" tableName: description: Unqualified table or view name. type: string example: "users" SearchResultMCPContract: description: Global search result for an MCP contract entity; returned when `searchLevel = mcp`. title: SearchResultMCPContract type: object required: - packageId - name - parentPackages - version - status - entityId - kind - mcpEndpoint properties: packageId: description: Package unique string identifier (full alias) type: string example: "QS.CloudQSS.CPQ.Q-TMF" name: description: Package name type: string example: "Quote TMF Service" parentPackages: description: Array of parent package names type: array items: type: string version: description: Package version name type: string example: "2022.2@5" status: $ref: "#/components/schemas/VersionStatusEnum" entityId: description: MCP contract logical identifier. type: string example: "https___api_example_com_mcp.tool.get_forecast" kind: $ref: "#/components/schemas/McpContractKind" entityName: description: MCP entity name. type: string example: "get_forecast" mcpEndpoint: description: MCP endpoint URL. type: string example: "https://api.example.com/mcp" SearchResultPackage: title: SearchResultPackage description: | Global search result for packages with kind = package; must be returned when searchLevel = package * If search term matches the package id/name/description/service name, return the latest published version only. * If search term matches the version name/label, return that version. type: object required: - packageId - name - parentPackages - createdAt - version - revision - status properties: packageId: description: Package unique string identifier (full alias) type: string example: "QS.CloudQSS.CPQ.Q-TMF" name: description: Package name type: string example: "Quote TMF Service" description: description: Package description type: string serviceName: description: Service name that package belongs to. Should be equal to service deployment name in kubernetes. type: string parentPackages: description: Array of parent package names type: array items: type: string version: description: Package version name. type: string example: "2022.2@5" latestRevision: description: | true if revision is the latest one. type: boolean default: false status: $ref: "#/components/schemas/VersionStatusEnum" createdAt: description: Date of the package version publication type: string format: date-time labels: description: List of package version labels type: array items: type: string SearchResultDocument: description: Global search result for documents; must be returned when searchLevel = document title: SearchResultDocument type: object required: - packageId - name - parentPackages - version - status - files - slug - type - title properties: packageId: description: Package unique string identifier (full alias) type: string example: "QS.CloudQSS.CPQ.Q-TMF" name: description: Package name type: string example: "Quote TMF Service" parentPackages: description: Array of parent package names type: array items: type: string version: description: Package version name. type: string example: "2022.2@5" status: $ref: "#/components/schemas/VersionStatusEnum" slug: description: Published document slug type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" type: description: Type of the specification notation. type: string enum: - openapi-3-1 - openapi-3-0 - openapi-2-0 - json-schema - markdown - unknown title: description: Name/title of the document. type: string example: "Quote Integration TMForum Service" labels: description: List of documents labels. type: array items: type: string example: ["TMF"] createdAt: description: Date of the package version publication type: string format: date-time content: type: string description: | String with search term occurrences in the document. If document content does not contain search term, then return N first characters. If document is empty, then this property will be empty. RestOperationMeta: description: Specific parameters for REST operation. title: RestOperationMeta required: - path - method type: object properties: path: description: Operation endpoint path. type: string example: "/quoteManagement/v5/quote" method: description: Operation method. type: string enum: - post - get - put - patch - delete - head - options - connect - trace title: description: Operation summary/title. type: string customTags: description: Custom tags. type: object GraphQLOperationMeta: description: Specific parameters for GraphQL operation. title: GraphQLOperationMeta required: - type - method type: object properties: type: description: Operation type type: string enum: - query - mutation - subscription method: description: GraphQL operation method. type: string example: getPaymentMethodSpecificationCore title: description: Operation summary/title. type: string customTags: description: Custom tags. type: object ProtobufOperationMeta: description: Specific parameters for Protobuf operation. title: GraphQLOperationMeta required: - type - method type: object properties: type: description: Operation type type: string enum: # open questions what types shall be supported? - unary - serverStreaming - clientStreaming - bidirectionalStreaming method: description: Protobuf method name. type: string example: ListActionLogItems title: description: Operation title (same as method name but with adding spaces between capital letters) type: string example: List Action Log Items customTags: description: Custom tags. type: object AsyncAPIOperationMeta: description: | Specific parameters for AsyncAPI 3.0 operation. An APIHUB Operation for AsyncAPI is the triple (channel, operation, message). title: AsyncAPIOperationMeta required: - action - channel - protocol - asyncOperationId - messageId type: object properties: action: description: "AsyncAPI operation action: send or receive." type: string enum: - send - receive channel: description: | AsyncAPI channel identifier. Uses channel.title if available; otherwise uses channelId (key in the document's root channels map). type: string example: "User Signup Channel" protocol: description: | Communication protocol derived from the channel's first server. Expected values: kafka, amqp. Any other protocol value from the spec is displayed as-is. If the channel has no server references or the protocol cannot be resolved, the value is "Unknown". type: string example: "kafka" asyncOperationId: description: | AsyncAPI operationId as defined in the AsyncAPI specification. The key in the root operations map that identifies the operation. type: string example: "onUserSignUp" messageId: description: | AsyncAPI messageId as defined in the AsyncAPI specification. The key in the channel's messages map that identifies the message. type: string example: "userSignedUp" customTags: description: Custom tags. type: object OperationInfoFromDifferentVersionsV2: description: Operation info from previous/current version. type: object required: - operationId - title - apiKind - documentId - apiAudience properties: operationId: description: Operation unique identifier (for rest api this operationId is not the same as operationId field from the OpenAPI file). type: string example: get-quoteManagement-v5-quote documentId: description: Unique string identifier of the document from which the operation is originated type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" title: description: Operation summary/title. type: string apiKind: type: string enum: - bwc - no-bwc - experimental apiAudience: description: | Operation's target audience: * internal - APIs are available for integration within product application. * external - APIs exposed outside the boundary of product application: solution delivery integrations, 3rd party integrations, customer integrations. * unknown - If any value other than internal or external is used, the API is considered as unknown. type: string enum: - internal - external - unknown tags: description: Tags of operation. For rest - tag is taken from OAS, for graphql - tag is root schema type (query, mutation, subscription). type: array items: type: string example: ["Access Control API, Address Management API"] packageRef: description: > Parent package and version link. Created by the concatenation of the packageId and version name with At sign. type: string example: QS.CloudQSS.CPQ.Q-TMF@2023.2 RestOperationInfoFromDifferentVersions: description: Operation info from previous/current version. allOf: - $ref: "#/components/schemas/OperationInfoFromDifferentVersionsV2" - type: object required: - path - method properties: path: description: Operation endpoint path. type: string example: "/quoteManagement/v5/quote" method: description: Operation method. type: string enum: - post - get - put - patch - delete - head - options - connect - trace GqlOperationInfoFromDifferentVersions: description: Operation info from previous/current version. allOf: - $ref: "#/components/schemas/OperationInfoFromDifferentVersionsV2" - type: object required: - type - method properties: type: description: Operation type type: string enum: - query - mutation - subscription method: description: GraphQL operation method. type: string example: getPaymentMethodSpecificationCore AsyncAPIOperationInfoFromDifferentVersions: description: AsyncAPI 3.0 operation info from previous/current version. allOf: - $ref: "#/components/schemas/OperationInfoFromDifferentVersionsV2" - type: object required: - action - channel - protocol - asyncOperationId - messageId properties: action: description: "AsyncAPI operation action: send or receive." type: string enum: - send - receive channel: description: | AsyncAPI channel identifier. Uses channel.title if available; otherwise uses channelId (key in the document's root channels map). type: string example: "User Signup Channel" protocol: description: | Communication protocol derived from the channel's first server. Expected values: kafka, amqp. Any other protocol value from the spec is displayed as-is. If the channel has no server references or the protocol cannot be resolved, the value is "Unknown". type: string example: "kafka" asyncOperationId: description: | AsyncAPI operationId as defined in the AsyncAPI specification. The key in the root operations map that identifies the operation. type: string example: "onUserSignUp" messageId: description: | AsyncAPI messageId as defined in the AsyncAPI specification. The key in the channel's messages map that identifies the message. type: string example: "userSignedUp" SingleOperationChange: allOf: - type: object description: Discrepancy data in a single operation. properties: description: description: >- Human-readable description of point of change. type: string example: "[Added] Property: summary." severity: $ref: "#/components/schemas/ChangeSeverity" scope: type: string description: | Part of operation (like request/response) where change was made. Scope differs for apiTypes.\ Scope is needed to correctly identify severity of change, because the same change can have different severity in request/response. action: description: Action, what was done with the endpoint. type: string enum: - add - remove - replace - rename - oneOf: - $ref: "#/components/schemas/ChangeAdd" - $ref: "#/components/schemas/ChangeRemove" - $ref: "#/components/schemas/ChangeReplace" - $ref: "#/components/schemas/ChangeRename" ChangeAdd: type: object description: Data of single operation change when change action = add properties: currentDeclarationJsonPaths: description: | (below, a document is not considered to be an original document, but a document with one specific operation)\ When comparing two documents (origin and changed; difference from changed document apended to the original document), a declarative jsonPath is calculated for each change. type: array items: type: array items: anyOf: - type: string - type: integer example: [["components/schemas/Cat/minProperties", "components/schemas/Dog/minProperties"], ["/quoteManagement/v5/quote"]] currentValueHash: type: string description: | Hash of the added entity.\ Hash is needed to identify that the same enitity was changed in other operations, that allows calculating declarative number of changes in package version. ChangeRemove: type: object description: Data of single operation change when change action = remove. properties: previousDeclarationJsonPaths: description: | (below, a document is not considered to be an original document, but a document with one specific operation)\ When comparing two documents (origin and changed; difference from changed document apended to the original document), a declarative jsonPath is calculated for each change. type: array items: type: array items: anyOf: - type: string - type: integer example: [["components/schemas/Cat/minProperties", "components/schemas/Dog/minProperties"], ["/quoteManagement/v5/quote"]] previousValueHash: type: string description: | Hash of the removed entity.\ Hash is needed to identify that the same enitity was changed in other operations, that allows calculating declarative number of changes in package version. ChangeReplace: type: object description: Data of single operation change when change action = replace properties: currentDeclarationJsonPaths: description: | (below, a document is not considered to be an original document, but a document with one specific operation)\ When comparing two documents (origin and changed; difference from changed document apended to the original document), a declarative jsonPath is calculated for each change. type: array items: type: array items: anyOf: - type: string - type: integer example: [["components/schemas/Cat/minProperties", "components/schemas/Dog/minProperties"], ["/quoteManagement/v5/quote"]] previousDeclarationJsonPaths: description: | (below, a document is not considered to be an original document, but a document with one specific operation)\ When comparing two documents (origin and changed; difference from changed document apended to the original document), a declarative jsonPath is calculated for each change. type: array items: type: array items: anyOf: - type: string - type: integer example: [["components/schemas/Cat/minProperties", "components/schemas/Dog/minProperties"], ["/quoteManagement/v5/quote"]] previousValueHash: type: string description: | Previous hash of the changed entity.\ Hash is needed to identify that the same enitity was changed in other operations, that allows calculating declarative number of changes in package version. currentValueHash: type: string description: | Current hash of the changed entity.\ Hash is needed to identify that the same enitity was changed in other operations, that allows calculating declarative number of changes in package version. ChangeRename: type: object description: Data of single operation change when change action = rename. properties: currentDeclarationJsonPaths: description: | (below, a document is not considered to be an original document, but a document with one specific operation)\ When comparing two documents (origin and changed; difference from changed document apended to the original document), a declarative jsonPath is calculated for each change. type: array items: type: array items: anyOf: - type: string - type: integer example: [["components/schemas/Cat/minProperties", "components/schemas/Dog/minProperties"], ["/quoteManagement/v5/quote"]] previousDeclarationJsonPaths: description: | (below, a document is not considered to be an original document, but a document with one specific operation)\ When comparing two documents (origin and changed; difference from changed document apended to the original document), a declarative jsonPath is calculated for each change. type: array items: type: array items: anyOf: - type: string - type: integer example: [["components/schemas/Cat/minProperties", "components/schemas/Dog/minProperties"], ["/quoteManagement/v5/quote"]] previousKey: type: string description: Previous key (name) of the renamed entity. currentKey: type: string description: Current key (name) of the renamed entity. BuildConfig: type: object description: | Configuration of the source files. Content can not be empty, files or refs are **required**. required: - version - status properties: version: description: Version name for publication. type: string example: "2022.3" previousVersion: description: | Name of the previous published version. The mask @ is required for 'changelog' buildType. type: string example: "2022.2" default: "" previousVersionPackageId: description: | Required in case of snapshot when publishing version should be compared to different package. Do not set anything if the package sould be compared to itself. Value equals to packageId is forbidden. type: string example: "QS.CloudOSS.PL.MC" status: $ref: "#/components/schemas/VersionStatusEnum" validationRulesSeverity: type: object description: Configuration for validation rules severity levels readOnly: true properties: brokenRefs: type: string enum: - "error" - "warning" default: "warning" description: Severity level for broken references validation groupName: description: | Operation group name. groupName is required if buildType = documentGroup. type: string example: v1 apiType: $ref: "#/components/schemas/ApiType" buildType: description: | Type of the build process. Available options are: **build** - Standard build process to publish new version. Consist of contract and operations build and validation, calculation of the changelog, creation of the final version of the published contracts. **changelog** - Only the changelog calculation, no API contracts version will be created. The ```files``` and ```refs``` objects are not required in this case. **prefix-groups-changelog** - Changelog calculation for prefixed operation groups. **documentGroup** - Deprecated. Process to transform documents so that they will contain operations only from specific operations group. **exportGraphqlOperationsGroup** - Export GraphQL operations group. **exportAsyncapiOperationsGroup** - Export AsyncAPI operations group. type: string enum: - build - changelog - prefix-groups-changelog - documentGroup - exportGraphqlOperationsGroup - exportAsyncapiOperationsGroup default: build metadata: description: Common publish metadata. type: object properties: commitId: description: Last Git commit ID of the version. type: string example: a5d45af7 repositoryUrl: description: Url of the Git repository. type: string format: URI example: "https:///apihub-registry" versionLabels: description: List of version labels. Label is a string. type: array items: type: string example: ["part-of:CloudQSS-CPQBE"] cloudName: description: Name of the cloud for publication from Agent. type: string example: "k8s-apps2" cloudUrl: description: Full address of the cloud from Agent. type: string format: URI example: "https://k8s-apps2.k8s.sdntest.qubership.org" namespace: description: Namespace of Agent's publication. type: string example: "cloudQSS-release2" externalMetadata: description: External build metadata type: object properties: operations: type: array items: type: object properties: apiType: type: string enum: - rest method: type: string description: HTTP method path: type: string description: HTTP path externalMetadata: description: External operation metadata type: object files: description: | Detailed data about files in sources archive. Required if no Refs are provided. type: array items: type: object required: - fileId properties: fileId: type: string description: File name. example: "qitmf-v5.11.json" publish: description: | Flag, publish the source file or not. Required for case with external refs when specification is separated into multiple files. After dereference in scope of build process the source files(parts) are no longer required. So it's possible to skip publish of such files. type: boolean default: true labels: description: List of file labels. Label is a string. type: array items: type: string example: ["TMF"] blobId: description: Git blob ID of the file. type: string example: a5d45af7 xApiKind: description: Custom x-api-kind parameter for the file. Specify if this API is backward compatible. type: string example: "no-BWC" metadata: description: | Open-ended file-level metadata. For MCP discovery files, set `mcpEndpoint` to the MCP server URL; DDL files typically omit this object. type: object additionalProperties: true example: mcpEndpoint: "https://api.example.com/mcp" refs: description: | Detailed data about referenced versions for current package version. Required if no Files provided. type: array items: type: object required: - refId - version - type properties: refId: description: Referenced package Id. I.e. link to another package. type: string example: "QS.CloudQSS.CPQ.CORE" version: description: Referenced package version. I.e. link to another package's version. The mask @ may be used to link with a specific revision. If the @revision is not provided, the latest version's revision will be used. type: string example: "2022.3@5" parentRefId: description: Required to build reference(dependencies) graph. Allows to specify the parent node package id in the graph. type: string example: "QS.CloudQSS.CPQ.CORE" parentVersion: description: | Required to build reference(dependencies) graph. Allows to specify the parent node version in the graph. The mask @ may be used to link with a specific revision. If the @revision is not provided, the latest version's revision will be used. type: string example: "2022.2@4" excluded: description: | Required for conflict resolution case when different versions of the same package appear in the publication config. All excluded refs will be ignored (but will still be visible for package version). type: boolean ChangeSummary: description: | Numbers of changes between the current and previous published version. type: object properties: breaking: description: Number of changes, breaking the backward compatibility. type: integer default: 0 semi-breaking: description: Number of changes, breaking the backward compatibility in a legal way. For example, deleting correctly deprecated endpoint. type: integer default: 0 deprecated: description: Number of deprecated endpoints. type: integer default: 0 non-breaking: description: Number of non-breaking changes. type: integer default: 0 annotation: description: Number of annotation changes. type: integer default: 0 unclassified: description: Number of unclassified changes. type: integer default: 0 CreateOperationGroup: description: Version group. type: object required: - groupName - apiType - isPrefixGroup properties: groupName: type: string description: Unique group name. example: New_operation_group apiType: $ref: "#/components/schemas/ApiType" description: type: string description: Description of group. isPrefixGroup: type: boolean description: true - if the group created automatically via restGroupingPrefix. example: false exportTemplateFileName: type: string description: The name of the export template file, if there is one. example: template123.json ChangeSeverity: description: Severity of the particular change. type: string enum: - breaking - semi-breaking - deprecated - non-breaking - annotation - unclassified PackageVersionRevision: description: Version revision parameters. type: object title: PackageVersionRevision required: - version - revision - status - createdAt - createdBy properties: version: description: Package version name. The @ mask is used to return the revision number. type: string example: "2023.1@5" revision: description: Number of the revision. type: integer format: int32 example: 3 status: $ref: "#/components/schemas/VersionStatusEnum" createdBy: $ref: "#/components/schemas/Principal" createdAt: type: string description: Date of revision creation. format: datetime notLatestRevision: type: boolean default: false revisionLabels: description: List of revision labels. type: array items: type: string example: ["part-of:CloudQSS-CPQBE"] publishMeta: additionalProperties: true description: Publish metadata. type: object properties: commitId: description: Last Git commit ID of the version. type: string example: a5d45af7 repositoryUrl: description: Url of the Git repository. type: string format: URI example: https:///apihub-registry cloudName: description: Name of the cloud for publication from Agent. type: string example: k8s-apps2 cloudUrl: description: Full address of the cloud from Agent. type: string format: URI example: https://k8s-apps2.k8s.sdntest.qubership.org namespace: description: Namespace of Agent's publication. type: string example: cloudQSS-release2 InternalDocumentMetadata: type: object required: - id - fileName properties: id: description: Published file id. type: string pattern: "^[a-z0-9-]" example: "qitmf-v5-11-json" fileName: type: string description: File name (slug+extension). example: "qitmf-v5.11.json" AiChat: description: AI chat metadata (messages are not included). type: object required: - chatId - title - createdAt - lastMessageAt - messagesCount properties: chatId: description: Unique chat identifier. type: string format: uuid example: "e1a9f6d2-4a17-4a3b-9b91-4d7e9e8a0f11" title: description: Display title of the chat. Auto-filled from the first user message if not provided explicitly. type: string maxLength: 120 example: "How do I paginate REST operations?" pinned: description: | If true, the chat is pinned. Pinned chats are exempt from TTL-based cleanup and are shown above non-pinned chats in the list. Omitted by the server when the chat is not pinned; clients should treat a missing value as `false`. type: boolean default: false createdAt: description: Chat creation timestamp (RFC 3339). type: string format: date-time example: "2026-04-12T08:01:07Z" lastMessageAt: description: | Timestamp of the last user or assistant message in the chat. Always populated by the server; for a freshly created chat that has no messages yet, equals `createdAt`. Used to rank chats in the sidebar and to evaluate the "last M chats kept forever" rule. type: string format: date-time example: "2026-04-19T15:44:12Z" messagesCount: description: Total number of user+assistant messages currently persisted in the chat. type: integer minimum: 0 example: 42 AiChatCreateRequest: description: Optional payload for creating a new chat. type: object properties: title: description: Explicit chat title. If omitted, the title will be derived from the first user message. type: string maxLength: 120 example: "Playground checklist" AiChatUpdateRequest: description: | Partial update of a chat. Only fields present in the request are modified. At least one field must be supplied. type: object minProperties: 1 properties: title: description: New title for the chat. type: string minLength: 1 maxLength: 120 example: "Tenant-aware search questions" pinned: description: | If true, pins the chat. Pinning is rejected with `400` when the user already has the maximum allowed number of pinned chats (hard-coded to 3 on both client and server). If false, unpins the chat. type: boolean example: true AiChatToolInvocation: description: | Minimal, UI-facing descriptor of an MCP tool call that happened while producing an assistant message. The server intentionally does not expose tool arguments or raw results in order to keep the contract stable and avoid leaking internal data. type: object required: - name - status properties: name: description: MCP tool name (e.g. `search_rest_api_operations`). type: string example: "search_rest_api_operations" status: description: Final status of the tool invocation. type: string enum: - ok - error durationMs: description: Wall-clock execution time in milliseconds. type: integer minimum: 0 example: 312 AiChatMessage: description: | A single chat message visible to the client. Assistant messages always carry markdown-formatted content; user messages carry raw text. type: object required: - messageId - role - content - createdAt properties: messageId: description: Stable server-assigned identifier. type: string format: uuid example: "2f5a8c6b-8c11-4b1a-9c6a-1c2e4d5f6a7b" clientMessageId: description: | Optional client-supplied idempotency key. Echoed back for user messages so that the FE can reconcile optimistic UI state. Never populated for assistant messages. type: string format: uuid nullable: true role: description: Role of the message author. type: string enum: - user - assistant content: description: | Message text. For `assistant` messages this is markdown; the FE should render it through its markdown renderer. For `user` messages this is the original plain text as typed. type: string createdAt: description: Server-assigned creation timestamp (RFC 3339). type: string format: date-time example: "2026-04-19T15:44:12Z" toolInvocations: description: | Optional UI-facing summaries of MCP tool calls that happened while producing this assistant message. The FE may render them as inline pills or ignore them entirely; they are surfaced mainly for transparency and for debugging chat behaviour. Always empty (or omitted) for user messages. type: array items: $ref: "#/components/schemas/AiChatToolInvocation" AiChatSendMessageRequest: description: | Request body for sending a new user message. The body carries **only the new message** — never the full history. type: object required: - content properties: content: description: | User message text (plain text, not markdown). Length limit is hard-coded identically on the client (validation) and on the server (enforcement) to the value of `maxLength` below. type: string minLength: 1 maxLength: 32000 example: "List all REST operations in package QS.QSS.PRG.APIHUB and export them as CSV." clientMessageId: description: | Optional idempotency key supplied by the client. If the server sees a duplicate `clientMessageId` for the same chat it returns the previous assistant response instead of re-sending to the LLM. type: string format: uuid example: "9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc" AiChatSendMessageResponse: description: Non-streaming response after a user message has been processed. type: object required: - userMessage - assistantMessage properties: userMessage: $ref: "#/components/schemas/AiChatMessage" assistantMessage: $ref: "#/components/schemas/AiChatMessage" AiChatStreamEvent: description: | Documentation-only schema describing the shape of a single SSE event payload. The wire format is not JSON — each event is framed as: ``` event: data: ``` where the `` line conforms to one of the variants below, selected by the `type` field. type: object required: - type discriminator: propertyName: type mapping: message.assistant.start: "#/components/schemas/AiChatStreamAssistantStartEvent" message.assistant.delta: "#/components/schemas/AiChatStreamAssistantDeltaEvent" message.assistant.completed: "#/components/schemas/AiChatStreamAssistantCompletedEvent" tool.started: "#/components/schemas/AiChatStreamToolStartedEvent" tool.completed: "#/components/schemas/AiChatStreamToolCompletedEvent" context.compacted: "#/components/schemas/AiChatStreamContextCompactedEvent" error: "#/components/schemas/AiChatStreamErrorEvent" done: "#/components/schemas/AiChatStreamDoneEvent" oneOf: - $ref: "#/components/schemas/AiChatStreamAssistantStartEvent" - $ref: "#/components/schemas/AiChatStreamAssistantDeltaEvent" - $ref: "#/components/schemas/AiChatStreamAssistantCompletedEvent" - $ref: "#/components/schemas/AiChatStreamToolStartedEvent" - $ref: "#/components/schemas/AiChatStreamToolCompletedEvent" - $ref: "#/components/schemas/AiChatStreamContextCompactedEvent" - $ref: "#/components/schemas/AiChatStreamErrorEvent" - $ref: "#/components/schemas/AiChatStreamDoneEvent" AiChatStreamAssistantStartEvent: description: Emitted once, right before the first `message.assistant.delta` event. type: object required: [type, messageId] properties: type: type: string enum: ["message.assistant.start"] messageId: type: string format: uuid AiChatStreamAssistantDeltaEvent: description: | Incremental markdown chunk for the assistant message. The client is expected to simply concatenate `delta` values in the order received. type: object required: [type, delta] properties: type: type: string enum: ["message.assistant.delta"] delta: type: string example: "Here are the operations I found:\n" AiChatStreamAssistantCompletedEvent: description: Terminal event for the assistant message. Carries the full final markdown (including any inline links to generated files). type: object required: [type, message] properties: type: type: string enum: ["message.assistant.completed"] message: $ref: "#/components/schemas/AiChatMessage" AiChatStreamToolStartedEvent: description: | Emitted when the assistant decides to call an MCP tool. Multiple tool events may appear between `message.assistant.start` and `message.assistant.completed`. type: object required: [type, toolCallId, name] properties: type: type: string enum: ["tool.started"] toolCallId: description: Opaque identifier correlating `tool.started` with `tool.completed`. type: string example: "call_1a2b3c" name: type: string example: "search_rest_api_operations" AiChatStreamToolCompletedEvent: description: Paired with the corresponding `tool.started` event. type: object required: [type, toolCallId, name, status] properties: type: type: string enum: ["tool.completed"] toolCallId: type: string example: "call_1a2b3c" name: type: string example: "search_rest_api_operations" status: type: string enum: [ok, error] durationMs: type: integer minimum: 0 example: 214 AiChatStreamContextCompactedEvent: description: | Emitted at most once per turn, before the assistant starts streaming, if the server had to auto-compact earlier history. The client may use this signal to visually indicate that the older portion of the conversation is now represented by a summary stored server-side (`ai_chat.compaction_summary`). The number of messages actually folded into that summary is `messagesBefore - messagesKeptRaw`. type: object required: [type, compactedUpTo, summaryPreview, messagesBefore, messagesKeptRaw] properties: type: type: string enum: ["context.compacted"] compactedUpTo: description: | Timestamp (UTC, RFC3339) of the last message included in the compaction boundary. Messages with `createdAt` after this value remain verbatim in the model context; older messages are represented only by the stored summary. type: string format: date-time example: "2026-04-19T15:40:00Z" summaryPreview: description: | Short preview of the compaction summary (truncated to a fixed rune limit on the server). Intended for optional UI hints or debugging — not the authoritative summary text. type: string example: "The user asked about REST operations in package QS.QSS.PRG.APIHUB for version 2025.4. Search returned three matching operations. The assistant recommended…" messagesBefore: description: Total number of user/assistant messages in the server context immediately before compaction ran. type: integer minimum: 1 example: 48 messagesKeptRaw: description: How many trailing messages the server kept verbatim after compaction (the recent tail of the conversation). type: integer minimum: 0 example: 8 AiChatStreamErrorEvent: description: | Emitted when the turn cannot be completed. After this event the server closes the stream without sending `done`. type: object required: [type, code, message] properties: type: type: string enum: ["error"] code: description: | Stable error code for mid-turn failures (HTTP validation/auth errors use the same codes in a JSON body before any SSE frame). Known values: * `APIHUB-AI-5001` — upstream LLM provider error; * `APIHUB-AI-4001` — message validation failed mid-flight (rare); * `APIHUB-AI-5000` — internal error. MCP tool failures are surfaced as `tool.completed` with `status: error` and do not terminate the stream with a dedicated error code. type: string example: "APIHUB-AI-5001" message: type: string example: "Upstream LLM provider request failed" AiChatStreamDoneEvent: description: Terminal marker. Always the last event on a successful stream. type: object required: [type] properties: type: type: string enum: ["done"] examples: SystemInfo: description: Example of the system description value: backendVersion: master-20250522.080756-379-RELEASE productionMode: true migrationInProgress: false aiChatEnabled: false externalLinks: - User guide|https://www.example.com/guide - Support team|https://www.example.com/support] featureFlags: useV3Search: false previousVersionStatusValidation: true Package: description: Example of the package params value: packageId: "QS.QSS.PRG.APIHUB" parentId: "QS.QSS.PRG" kind: "package" name: "Test package" alias: "APIHUB" description: "Package for the test purpose" isFavorite: false serviceName: "apihub-be" defaultRole: Viewer PackageNotFound: description: Package not found by ID. Response for the 404 error value: status: 404 code: "APIHUB-3020" message: "package with packageId = $packageId not found" VersionNotFound: description: Version not found by number. Response for the 404 error value: status: 404 code: "APIHUB-3050" message: "Published version $version not found" FileNotFound: description: File not found by slug. Response for the 404 error value: status: 404 code: "APIHUB-3043" message: "File for path $fileId not found" VersionReferencedByDashboard: description: Version cannot be deleted because one or more dashboard versions reference it. value: status: 409 code: "8500" message: "Cannot delete version $version of package $packageId: it is referenced by these dashboard versions: $dashboards. Remove the references or delete the dashboards, then retry." params: packageId: "sample.package" version: "2024.1" dashboards: "sample.dashboard|2024.2@3, other.dashboard|2024.1@1" PackageReferencedByDashboard: description: Package cannot be deleted because one or more dashboard versions reference it. value: status: 409 code: "8500" message: "Cannot delete package $packageId: it is referenced by these dashboard versions: $dashboards. Remove the references or delete the dashboards, then retry." params: packageId: "sample.package" dashboards: "sample.dashboard|2024.2@3, other.dashboard|2024.1@1" GroupOrWorkspaceReferencedByDashboard: description: >- Group or workspace cannot be deleted because dashboard versions reference packages inside it. value: status: 409 code: "8500" message: "Cannot delete $kind $packageId: it contains packages that are referenced by dashboards: $packages. Remove the references or delete the dashboards, then retry." params: kind: "group" packageId: "sample.group" packages: "sample.group.package1 (sample.dashboard|2024.2@3, other.dashboard|2024.1@1), sample.group.package2 (other.dashboard|1.0@1)" IncorrectInputParameters: description: Incorrect input parameters value: status: 400 code: "APIHUB-COMMON-4001" message: "Incorrect input parameters" PreviousVersionNotRelease: description: A release version cannot reference a draft previous version value: status: 400 code: "8600" message: "Version 2024.2 for package QS.group.my-package cannot be published with the 'release' status because previous version 2024.1 for package QS.group.previous-package is in the 'draft' status. Change the previous version to 'release', or publish this version as a draft." params: version: "2024.2" packageId: "QS.group.my-package" previousVersion: "2024.1" previousVersionPackageId: "QS.group.previous-package" VersionStatusChangePreviousVersionNotRelease: description: Version status cannot be changed to 'release' when the previous version is a draft value: status: 400 code: "8600" message: "Version 2024.2 for package QS.group.my-package cannot be changed to the 'release' status because previous version 2024.1 for package QS.group.previous-package is in the 'draft' status. Change the previous version to 'release', then retry." params: version: "2024.2" packageId: "QS.group.my-package" previousVersion: "2024.1" previousVersionPackageId: "QS.group.previous-package" VersionReferencedAsPreviousByRelease: description: Version cannot be changed to 'draft' because a released version uses it as its previous version value: status: 400 code: "8600" message: "Version 2024.1 for package QS.group.my-package cannot be changed to the 'draft' status because it is the previous version of released versions: QS.group.other-package|2024.2@1" params: version: "2024.1" packageId: "QS.group.my-package" releaseVersions: "QS.group.other-package|2024.2@1" Unauthorized: description: Unauthorized access value: status: 401 code: "APIHUB-4101" message: "Authentication required" InternalServerError: description: "Example: default internal server error response" value: status: 500 code: "APIHUB-8000" reason: "InternalServerError" message: "InternalServerError" AiChat: description: Single chat metadata value: chatId: "e1a9f6d2-4a17-4a3b-9b91-4d7e9e8a0f11" title: "How do I paginate REST operations?" createdAt: "2026-04-12T08:01:07Z" lastMessageAt: "2026-04-19T15:44:12Z" messagesCount: 42 AiChatsList: description: A page of the user's chats value: chats: - chatId: "a1111111-1111-1111-1111-111111111111" title: "Pinned: release checklist" pinned: true createdAt: "2026-04-01T07:00:00Z" lastMessageAt: "2026-04-19T10:22:01Z" messagesCount: 18 - chatId: "e1a9f6d2-4a17-4a3b-9b91-4d7e9e8a0f11" title: "How do I paginate REST operations?" createdAt: "2026-04-12T08:01:07Z" lastMessageAt: "2026-04-19T15:44:12Z" messagesCount: 42 hasMore: true AiChatMessagesList: description: Last page of messages in a chat (newest first). value: messages: - messageId: "2f5a8c6b-8c11-4b1a-9c6a-1c2e4d5f6a7b" role: "assistant" content: | Here are the operations I found: | Operation | Method | Path | | --- | --- | --- | | [get-packages-list](/portal/packages/QS.QSS.PRG.APIHUB/2026.1/operations/rest/get-packages-list) | GET | /api/v2/packages | And a CSV export: [operations-report.csv](/api/v1/ephemeral-files/7b6f4f87-4c8f-4d69-a66e-4a3c8a1b2c55?token=eyJhbGciOi...) createdAt: "2026-04-19T15:44:12Z" toolInvocations: - name: "search_rest_api_operations" status: "ok" durationMs: 312 - messageId: "1a0bcd12-0000-4000-8000-000000000001" clientMessageId: "9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc" role: "user" content: "List all REST operations in package QS.QSS.PRG.APIHUB." createdAt: "2026-04-19T15:44:03Z" hasMore: true AiChatSendMessageResponse: description: Non-streaming response after a user message has been answered. value: userMessage: messageId: "1a0bcd12-0000-4000-8000-000000000001" clientMessageId: "9c8e9045-dd9c-4946-b9e4-e05e3f41c4cc" role: "user" content: "List all REST operations in package QS.QSS.PRG.APIHUB." createdAt: "2026-04-19T15:44:03Z" assistantMessage: messageId: "2f5a8c6b-8c11-4b1a-9c6a-1c2e4d5f6a7b" role: "assistant" content: "Here are the operations I found..." createdAt: "2026-04-19T15:44:12Z" toolInvocations: - name: "search_rest_api_operations" status: "ok" durationMs: 312 AiChatStreamEvents: summary: Full SSE turn — context compaction + tool call + delta chunks + done description: | Example of a full SSE response body. Each event is framed as `event: \ndata: \n\n`. ``` event: context.compacted data: {"type":"context.compacted","compactedUpTo":"2026-04-19T15:40:00Z","summaryPreview":"The user asked about REST operations in package QS.QSS.PRG.APIHUB…","messagesBefore":48,"messagesKeptRaw":8} event: message.assistant.start data: {"type":"message.assistant.start","messageId":"2f5a8c6b-8c11-4b1a-9c6a-1c2e4d5f6a7b"} event: tool.started data: {"type":"tool.started","toolCallId":"call_1","name":"search_rest_api_operations"} event: tool.completed data: {"type":"tool.completed","toolCallId":"call_1","name":"search_rest_api_operations","status":"ok","durationMs":312} event: message.assistant.delta data: {"type":"message.assistant.delta","delta":"Here are the operations I found:\n\n"} event: message.assistant.completed data: {"type":"message.assistant.completed","message":{"messageId":"2f5a8c6b-8c11-4b1a-9c6a-1c2e4d5f6a7b","role":"assistant","content":"Here are the operations I found:\n\n","createdAt":"2026-04-19T15:44:12Z","toolInvocations":[{"name":"search_rest_api_operations","status":"ok","durationMs":312}]}} event: done data: {"type":"done"} ``` value: type: done AiChatNotFound: description: Chat not found by id. Response for the 404 error. value: status: 404 code: "APIHUB-AI-3001" message: "chat with chatId = $chatId not found" AiChatPinLimitExceeded: description: User attempts to pin more chats than allowed. value: status: 400 code: "APIHUB-AI-4003" message: "Cannot pin chat: user already has 3 pinned chats (the limit is 3)" AiChatValidationFailed: description: AI chat request validation failed (empty content, message too long, invalid cursor, malformed JSON body, etc.). value: status: 400 code: "APIHUB-AI-4001" message: "Message exceeds maximum length of 32000 characters" params: max: 32000 EphemeralFileNotFound: description: Ephemeral file not found or already cleaned up. value: status: 404 code: "APIHUB-EF-3001" message: "ephemeral file with fileId = $fileId not found" EphemeralFileTokenExpired: description: Signed download token expired. value: status: 410 code: "APIHUB-EF-4101" message: "download token expired, please request the file again" EphemeralFileTokenMissing: description: Download token query parameter missing. value: status: 401 code: "APIHUB-EF-3003" message: "Missing token query parameter" EphemeralFileTokenInvalid: description: Download token invalid or not valid for the requested file. value: status: 401 code: "APIHUB-EF-3002" message: "Invalid download token" securitySchemes: BearerAuth: type: http description: "Bearer token authentication (JWT). Default security scheme for API usage. Provide Authorization: Bearer ." scheme: bearer bearerFormat: JWT CookieAuth: type: apiKey in: cookie name: apihub-access-token description: Authentication via the `apihub-access-token` cookie. api-key: type: apiKey description: API key authentication. Send the key in the api-key header. name: api-key in: header BasicAuth: type: http description: Login/password authentication. scheme: basic PersonalAccessToken: type: apiKey description: Personal access token authentication. Send the token in the X-Personal-Access-Token header; use for user-issued/script access. name: X-Personal-Access-Token in: header RefreshTokenAuth: type: apiKey in: cookie name: apihub-refresh-token description: Authentication via refresh token cookie