{"id":26256715,"url":"https://github.com/netcracker/qubership-apihub-api-unifier","last_synced_at":"2025-11-19T16:03:32.887Z","repository":{"id":270127415,"uuid":"907631503","full_name":"Netcracker/qubership-apihub-api-unifier","owner":"Netcracker","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-06T12:26:52.000Z","size":922,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-06T13:34:11.947Z","etag":null,"topics":["apihub"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Netcracker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-24T03:16:28.000Z","updated_at":"2025-02-06T12:25:37.000Z","dependencies_parsed_at":"2025-02-06T13:38:55.086Z","dependency_job_id":null,"html_url":"https://github.com/Netcracker/qubership-apihub-api-unifier","commit_stats":null,"previous_names":["netcracker/qubership-apihub-api-unifier"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netcracker%2Fqubership-apihub-api-unifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netcracker%2Fqubership-apihub-api-unifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netcracker%2Fqubership-apihub-api-unifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Netcracker%2Fqubership-apihub-api-unifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Netcracker","download_url":"https://codeload.github.com/Netcracker/qubership-apihub-api-unifier/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243475361,"owners_count":20296714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apihub"],"created_at":"2025-03-13T20:18:56.029Z","updated_at":"2025-11-19T16:03:32.816Z","avatar_url":"https://github.com/Netcracker.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qubership-apihub-api-unifier\n\nUnify API into a normalized presentation with all reference resolved, allOf combiners merged and other aspects unified.\n\nSupports OpenAPI and GraphQL specifications processing.\n\n## Modifications\nModified version of [udamir/allof-merge](https://github.com/udamir/allof-merge)\n\n- Added cycles support during combiners resolve\n- Added origins support- it is now possible for any value in the unified JSO to track its origins in the source specification\n- Store original ref for the object if the object was resolved from ref\n- Gathered various API unification adapters from different libraries in the stack to a single place \n- Support data structure hash calculation\n- Process different phases sequentially (reference resolving, allOf merge, unification)\n- Support synthetic `any` and `nothing` type for OAS\n- Added deprecated items calculation\n- Support new graphapi format\n- Feature flags added to control behavior during processing\n- Added a large number of tests\n- Debug tooling for cycled JSO\n\n## Features\n- Safe merging of schemas combined with allOf in whole document\n- Fastest implementation - up to x3 times faster then other popular libraries\n- Merged schema does not validate more or less than the original schema\n- Removes almost all logical impossibilities\n- Correctly merge additionalProperties, patternProperties and properties taking into account common validations\n- Correctly merge items and additionalItems taking into account common validations\n- Supports custom rules to merge other document types and JsonSchema versions\n- Supports input with circular references (javaScript references)\n- Supports $refs and circular $refs either (internal references only)\n- Correctly merge of $refs with sibling content (optionally)\n- Correctly merge of combiners (anyOf, oneOf) with sibling content (optionally)\n- Typescript syntax support out of the box\n- No dependencies (except json-crawl), can be used in NodeJS or browser\n\n## Works perfectly with specifications:\n\n- [JsonSchema](https://json-schema.org/draft/2020-12/json-schema-core.html)\n- [OpenApi 3.x](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md)\n- GraphApi\n- ~~Swagger 2.x~~ (roadmap)\n- ~~AsyncApi 2.x~~ (roadmap)\n- ~~AsyncApi 3.x~~ (roadmap)\n\n## Other libraries\nThere are some libraries that can merge schemas combined with allOf. One of the most popular is [mokkabonna/json-schema-merge-allof](https://www.npmjs.com/package/json-schema-merge-allof), but it has some limitatons: Does not support circular $refs and no Typescript syntax out of the box.\n\n## External $ref\nIf schema contains an external $ref, you should bundle it via [api-ref-bundler](https://github.com/udamir/api-ref-bundler) first.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetcracker%2Fqubership-apihub-api-unifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetcracker%2Fqubership-apihub-api-unifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetcracker%2Fqubership-apihub-api-unifier/lists"}