openapi: 3.2.0 info: title: APIHUB Registry – External Contracts 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: Contracts description: DDL and MCP contract APIs. paths: /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 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 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 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 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 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 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' components: schemas: VersionStatusEnum: description: Package version status type: string enum: - draft - release - archived 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 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. ' 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 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 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 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' 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 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 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 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. ' 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. ' 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 parameters: packageId: name: packageId in: path description: Package unique identifier (full alias) required: true schema: type: string example: QS.CloudQSS.CPQ.Q-TMF 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 mcpEntity: name: entity in: path required: true description: MCP entity collection type. schema: type: string enum: - inits - tools - prompts - resources 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 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' 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 version: name: version in: path description: Package version required: true 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 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 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 VersionNotFound: description: Version not found by number. Response for the 404 error value: status: 404 code: APIHUB-3050 message: Published version $version 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