openapi: 3.2.0 info: title: APIHUB Registry – External Operations 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 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: Operations description: Operations APIs. paths: /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/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: - 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: - 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' components: schemas: VersionStatusEnum: description: Package version status type: string enum: - draft - release - archived 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: $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 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. ' ApiType: title: apiType type: string enum: - rest - graphql - protobuf - asyncapi 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 ProtobufOperation: description: Protobuf operation object. title: ProtobufOperation allOf: - $ref: '#/components/schemas/Operation' - $ref: '#/components/schemas/ProtobufOperationMeta' 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 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' 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 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 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:\n* for REST API it is value of 'x-deprecated-meta' extension (value of extension must be string), which is defined for deprecated item.\n* for GraphQL API it is value of 'reason' argument of @deprecated directive.\n* for AsyncAPI 3.0: \"[Deprecated] message {name}\" (name = message.title or messageId),\n or \"[Deprecated] channel {name}\" (name = channel.title or channelId).\n" 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 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. 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 GraphQLOperation: description: GraphQL operation object. title: GraphQLOperation allOf: - $ref: '#/components/schemas/Operation' - $ref: '#/components/schemas/GraphQLOperationMeta' 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 ProtobufOperationMeta: description: Specific parameters for Protobuf operation. title: GraphQLOperationMeta required: - type - method type: object properties: type: description: Operation type type: string enum: - 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 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. ' 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 RestOperation: description: REST operation object. title: RestOperation allOf: - $ref: '#/components/schemas/Operation' - $ref: '#/components/schemas/RestOperationMeta' ChangeSeverity: description: Severity of the particular change. type: string enum: - breaking - semi-breaking - deprecated - non-breaking - annotation - unclassified 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. ' AsyncAPIOperation: description: AsyncAPI operation object. title: AsyncAPIOperation allOf: - $ref: '#/components/schemas/Operation' - $ref: '#/components/schemas/AsyncAPIOperationMeta' parameters: packageId: name: packageId in: path description: Package unique identifier (full alias) required: true schema: type: string example: QS.CloudQSS.CPQ.Q-TMF apiType: name: apiType description: Type of the API. in: path required: true schema: type: string enum: - rest - graphql - protobuf - asyncapi 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 modelName: name: modelName in: path description: Unique model identifier for operation required: true schema: type: string example: CreateItemDto 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' version: name: version in: path description: Package version required: true schema: type: string example: '2022.3' 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 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 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 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 page: name: page in: query description: Page number schema: type: number default: 0 limit: name: limit in: query description: Requested number of resources to be provided in response. schema: type: number default: 100 maximum: 100 minimum: 1 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 examples: InternalServerError: description: 'Example: default internal server error response' value: status: 500 code: APIHUB-8000 reason: InternalServerError message: InternalServerError 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 IncorrectInputParameters: description: Incorrect input parameters value: status: 400 code: APIHUB-COMMON-4001 message: Incorrect input parameters 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 externalDocs: description: Find out more about this project and repository documentation url: https://github.com/Netcracker/qubership-apihub