{"_id":"@cobre-npm/library-response-catalog-node","_rev":"6-3523aeca2adacee720809b4f985712a0","name":"@cobre-npm/library-response-catalog-node","dist-tags":{"latest":"0.8.0"},"versions":{"0.2.0":{"name":"@cobre-npm/library-response-catalog-node","version":"0.2.0","license":"ISC","_id":"@cobre-npm/library-response-catalog-node@0.2.0","maintainers":[{"name":"cobreorg","email":"npmoperation@cobre.co"},{"name":"alejandropg339","email":"alejandrop@cobre.co"}],"dist":{"shasum":"fa3408b5026e663a367e3e8b1cbaa4088f47fb1f","tarball":"https://registry.npmjs.org/@cobre-npm/library-response-catalog-node/-/library-response-catalog-node-0.2.0.tgz","fileCount":15,"integrity":"sha512-eNtixxsRpe7SOco8JnNvxZF/k4xR8BPmYZttC9a0haeOPr1quF2oH5HE2/fNWwAEbso99hQWIiL03H/1HBbGbQ==","signatures":[{"sig":"MEUCIQD4RvNvOQ5cUimZZnfkyHaIY3KwXhPYMPRCf8AD0fdQXQIgMk58X9Y0fplUFlAgkRqsj38N+JqqU7CqX9xAM5aKGN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18110},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b99d690e9bd922d2c2da4271671004933700fbca","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"jest","build":"rollup -c rollup.config.mjs","build:qa":"npm run build","build:dev":"npm run build","build:prod":"npm run build","build:qa-arm":"npm run build","build:dev-arm":"npm run build","test:coverage":"jest --coverage","build:prod-arm":"npm run build"},"_npmUser":{"name":"cobreorg","email":"npmoperation@cobre.co"},"_npmVersion":"10.9.2","description":"Node.js Cobre library for resolving supplier errors against the Response Catalog Read API","directories":{},"_nodeVersion":"22.13.1","dependencies":{"axios":"^1.6.8","cockatiel":"^3.2.0","@opentelemetry/api":"^1.9.0","@cobre-npm/library-nodejs-telemetry":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.27.0","devDependencies":{"jest":"^29.7.0","nock":"^13.5.4","tslib":"^2.8.1","eslint":"^8.57.0","rimraf":"^5.0.7","rollup":"^4.18.0","ts-jest":"^29.2.3","typedoc":"^0.28.20","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","@rollup/plugin-json":"^6.1.0","@rollup/plugin-typescript":"^12.3.0","@typescript-eslint/parser":"^7.15.0","rollup-plugin-typescript2":"^0.36.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"@cobre-npm/library-nodejs-common":"^3.0.0"},"peerDependenciesMeta":{"@cobre-npm/library-nodejs-common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/library-response-catalog-node_0.2.0_1788544966034_0.1135102772607095","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cobre-npm/library-response-catalog-node","version":"0.3.0","license":"ISC","_id":"@cobre-npm/library-response-catalog-node@0.3.0","maintainers":[{"name":"cobreorg","email":"npmoperation@cobre.co"},{"name":"alejandropg339","email":"alejandrop@cobre.co"}],"dist":{"shasum":"6cbc04f44dab85cbfebc2bfabe3daf07d8ee9691","tarball":"https://registry.npmjs.org/@cobre-npm/library-response-catalog-node/-/library-response-catalog-node-0.3.0.tgz","fileCount":51,"integrity":"sha512-3FZjr4xhWSz+x0gWfxeNY0m384TXtdYKwHxoYOMmLUHgrHUEsmDaxkHcx6GK5/MyDgpoXkXow7xdWdRItJpiZQ==","signatures":[{"sig":"MEUCIAyvIRKIB1j5CVdF+ejFLA5bDy/8BJ6JLRaDS+z4or2JAiEA3h+IHsBUPrP2vbMBllNK6NLrasNyuZ++gsR18Btlg+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCaTTfYwTRx2uU9CFzZjvmnt9s1FM63HEmPLWUVOK98XAIgNDqv1N3ZIv6ZQaDSlP2tCDJh419c9n1hNeEx2QT5vE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39579},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ed49a209eafadd9cc33ff20c97a699e938976bc3","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"jest --coverage","build":"rollup -c rollup.config.mjs","build:qa":"npm run build","build:dev":"npm run build","build:prod":"npm run build","test:watch":"jest --watch","build:qa-arm":"npm run build","build:dev-arm":"npm run build","test:coverage":"jest --coverage","build:prod-arm":"npm run build"},"_npmUser":{"name":"cobreorg","email":"npmoperation@cobre.co"},"_npmVersion":"10.9.2","description":"Node.js Cobre library for resolving supplier errors against the Response Catalog Read API","directories":{},"_nodeVersion":"22.13.1","dependencies":{"axios":"^1.6.8","cockatiel":"^3.2.0","@opentelemetry/api":"^1.9.0","@cobre-npm/library-nodejs-telemetry":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.27.0","devDependencies":{"jest":"^29.7.0","nock":"^13.5.4","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.18.0","ts-jest":"^29.2.3","typedoc":"^0.28.20","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","@rollup/plugin-json":"^6.1.0","@rollup/plugin-typescript":"^12.3.0","@typescript-eslint/parser":"^7.15.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"@cobre-npm/library-nodejs-common":"^3.0.0"},"peerDependenciesMeta":{"@cobre-npm/library-nodejs-common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/library-response-catalog-node_0.3.0_1788980597832_0.6115392991830266","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@cobre-npm/library-response-catalog-node","version":"0.5.0","license":"ISC","_id":"@cobre-npm/library-response-catalog-node@0.5.0","maintainers":[{"name":"cobreorg","email":"npmoperation@cobre.co"},{"name":"alejandropg339","email":"alejandrop@cobre.co"}],"dist":{"shasum":"ecbc56a53bd0641a4a8a12b9d3ff2b03c457c398","tarball":"https://registry.npmjs.org/@cobre-npm/library-response-catalog-node/-/library-response-catalog-node-0.5.0.tgz","fileCount":57,"integrity":"sha512-1OihmEqqZfE5xgxIbAiSOKQdmkEC5r0axdWgOgOR2KWLVUdJiE4GPUIIgEJErSYRoFt0UZBwNA3MRMdgXyAZtQ==","signatures":[{"sig":"MEUCICD4SifkZdvyLqPl83k0NuH8C+kOMPOmUAE38a3BigrjAiEAm+x37Ju5/ZakF8YZnLSQvMFNbQvQn5DZvIO2JWPPwhk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGt/N3sePA/LarFwnAOiHFm+Ve9KzPDWmYcB9c7j5i+TAiAssAgpm5WAoA+069ZRQKJhjU8J59Ct2PxZ2IFe2bAjrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42380},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f467a6aef8a94ed4663f1ef245a6c19257272e8b","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"jest --coverage","build":"rollup -c rollup.config.mjs","build:qa":"npm run build","build:dev":"npm run build","build:prod":"npm run build","test:watch":"jest --watch","build:qa-arm":"npm run build","build:dev-arm":"npm run build","test:coverage":"jest --coverage","build:prod-arm":"npm run build"},"_npmUser":{"name":"cobreorg","email":"npmoperation@cobre.co"},"_npmVersion":"10.9.2","description":"Node.js Cobre library for resolving supplier errors against the Response Catalog Read API","directories":{},"_nodeVersion":"22.13.1","dependencies":{"axios":"^1.6.8","cockatiel":"^3.2.0","@opentelemetry/api":"^1.9.0","@cobre-npm/library-nodejs-telemetry":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.27.0","devDependencies":{"jest":"^29.7.0","nock":"^13.5.4","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.18.0","ts-jest":"^29.2.3","typedoc":"^0.28.20","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","@rollup/plugin-json":"^6.1.0","@rollup/plugin-typescript":"^12.3.0","@typescript-eslint/parser":"^7.15.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"@cobre-npm/library-nodejs-common":"^3.0.0"},"peerDependenciesMeta":{"@cobre-npm/library-nodejs-common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/library-response-catalog-node_0.5.0_1789048985397_0.6284293421677261","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@cobre-npm/library-response-catalog-node","version":"0.6.0","license":"ISC","_id":"@cobre-npm/library-response-catalog-node@0.6.0","maintainers":[{"name":"cobreorg","email":"npmoperation@cobre.co"},{"name":"alejandropg339","email":"alejandrop@cobre.co"}],"dist":{"shasum":"035db008d935d3e0dfe647b88b27f0ffe0434dd2","tarball":"https://registry.npmjs.org/@cobre-npm/library-response-catalog-node/-/library-response-catalog-node-0.6.0.tgz","fileCount":59,"integrity":"sha512-8RGXVnYoek0OrDMVlUEU3CQs/yHq3hbq1UBpk3e2BeKzMIsZi8sLoXKwo3ZB10MZqB6akEDjHMSxueBzX3bJUQ==","signatures":[{"sig":"MEUCIQDlZPEltR6J1B/WLeTt7BL2j5SBs7vJhK2XsIsYtWWRpwIgHNUfkGH57/NuCF/wyR4k2uw7c0ZX7K6o5kbERQrmYDk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCEzV8ZglSHoFGG0SxPzTl4upRDV/9L/ZS9sVyoxCVvZQIhAIqI7PGtsEtrjdYz7XwtmNWRYyHu6NQuOMuv4dWAIdhj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45677},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"aa5ee8dec2637d279cfd3a114d787a8d2968ec51","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"jest --coverage","build":"rollup -c rollup.config.mjs","build:qa":"npm run build","build:dev":"npm run build","build:prod":"npm run build","test:watch":"jest --watch","build:qa-arm":"npm run build","build:dev-arm":"npm run build","test:coverage":"jest --coverage","build:prod-arm":"npm run build"},"_npmUser":{"name":"cobreorg","email":"npmoperation@cobre.co"},"_npmVersion":"10.9.2","description":"Node.js Cobre library for resolving supplier errors against the Response Catalog Read API","directories":{},"_nodeVersion":"22.13.1","dependencies":{"axios":"^1.6.8","cockatiel":"^3.2.0","@opentelemetry/api":"^1.9.0","@cobre-npm/library-nodejs-telemetry":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.27.0","devDependencies":{"jest":"^29.7.0","nock":"^13.5.4","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.18.0","ts-jest":"^29.2.3","typedoc":"^0.28.20","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","@rollup/plugin-json":"^6.1.0","@rollup/plugin-typescript":"^12.3.0","@typescript-eslint/parser":"^7.15.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"@cobre-npm/library-nodejs-common":"^3.0.0"},"peerDependenciesMeta":{"@cobre-npm/library-nodejs-common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/library-response-catalog-node_0.6.0_1789061987348_0.6310931578218113","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@cobre-npm/library-response-catalog-node","version":"0.7.0","license":"ISC","_id":"@cobre-npm/library-response-catalog-node@0.7.0","maintainers":[{"name":"cobreorg","email":"npmoperation@cobre.co"},{"name":"alejandropg339","email":"alejandrop@cobre.co"}],"dist":{"shasum":"765eb71e2b5ec06672106a32241c6af8511e5c47","tarball":"https://registry.npmjs.org/@cobre-npm/library-response-catalog-node/-/library-response-catalog-node-0.7.0.tgz","fileCount":63,"integrity":"sha512-jpHQ6eZ4F995V/hV4N7PUxbduhh56VLe0x9ZunpgFZFu6gjFO4BahYnNnfZdbrpVyd3mZBuicdDQzai7LtD83w==","signatures":[{"sig":"MEQCIFJgScCJ6aPfKtiUUO7KzLmaMA4x+7ya6AbBo9FkSEoMAiB+qNKRH0MKoDpRg8SBIiEdKBjM45uLkVT+0sEU/LYRfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB+TVyXdfEb7zMxO5Dy1TIIZluqEn/xek6a800wFRQq/AiEAr7uon5VJp/W1bwavynGxmBrkTruRpbesz2Zd5A7B9/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114621},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"487ca8661cda3800d4cfff12959487e2a5152d34","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"jest --coverage","build":"rollup -c rollup.config.mjs","build:qa":"npm run build","build:dev":"npm run build","build:prod":"npm run build","test:watch":"jest --watch","build:qa-arm":"npm run build","build:dev-arm":"npm run build","test:coverage":"jest --coverage","build:prod-arm":"npm run build","verify:package":"node scripts/verify-package.js"},"_npmUser":{"name":"cobreorg","email":"npmoperation@cobre.co"},"_npmVersion":"10.9.2","description":"Node.js Cobre library for resolving supplier errors against the Response Catalog Read API","directories":{},"_nodeVersion":"22.13.1","dependencies":{"axios":"^1.6.8","cockatiel":"^3.2.0","@opentelemetry/api":"^1.9.0","@cobre-npm/library-nodejs-telemetry":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.27.0","devDependencies":{"jest":"^29.7.0","nock":"^13.5.4","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.18.0","ts-jest":"^29.2.3","typedoc":"^0.28.20","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","@rollup/plugin-json":"^6.1.0","@rollup/plugin-typescript":"^12.3.0","@typescript-eslint/parser":"^7.15.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"@cobre-npm/library-nodejs-common":"^3.0.0"},"peerDependenciesMeta":{"@cobre-npm/library-nodejs-common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/library-response-catalog-node_0.7.0_1789068476903_0.31919207258921567","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"_id":"@cobre-npm/library-response-catalog-node@0.8.0","dist":{"shasum":"d28e24ba4d387a6c2da8ea4877e38f5199e0cda0","tarball":"https://registry.npmjs.org/@cobre-npm/library-response-catalog-node/-/library-response-catalog-node-0.8.0.tgz","fileCount":63,"integrity":"sha512-V+QN2xx+8gCFMQNmuGd9GAgLic+vs/g9GiGkPHeSvEMn+mhD3ekuF2LCltshak7gDx9vlUKVrehK4DsHrVky4Q==","signatures":[{"sig":"MEYCIQDLJPGeK4BVszoFmqDXXc8MyT5T1c+VToc7NQgiFE7sKAIhALvtFZMjYAylrXkJ7bqYNLSeSrgaiVy2gs0RQVnuWdh6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDggGoLPWNb9qUDctuf7ofdgrupdgCWBto6mIsjOXaWDAiEAprsMgh4346kOZdFCjUgCsWYml1fhtvtIEGLB7NV+MmU="}],"unpackedSize":118321},"main":"dist/index.js","name":"@cobre-npm/library-response-catalog-node","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"4ff0a7ecae0113734b990c139ac43aad6a385ad5","license":"ISC","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"jest --coverage","build":"rollup -c rollup.config.mjs","build:qa":"npm run build","build:dev":"npm run build","build:prod":"npm run build","test:watch":"jest --watch","build:qa-arm":"npm run build","build:dev-arm":"npm run build","test:coverage":"jest --coverage","build:prod-arm":"npm run build","verify:package":"node scripts/verify-package.js"},"version":"0.8.0","_npmUser":{"name":"cobreorg","email":"npmoperation@cobre.co"},"_npmVersion":"10.9.2","description":"Node.js Cobre library for resolving supplier errors against the Response Catalog Read API","directories":{},"maintainers":[{"name":"cobreorg","email":"npmoperation@cobre.co"},{"name":"alejandropg339","email":"alejandrop@cobre.co"}],"_nodeVersion":"22.13.1","dependencies":{"axios":"^1.6.8","cockatiel":"^3.2.0","@opentelemetry/api":"^1.9.0","@cobre-npm/library-nodejs-telemetry":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.27.0","devDependencies":{"jest":"^29.7.0","nock":"^13.5.4","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.18.0","ts-jest":"^29.2.3","typedoc":"^0.28.20","typescript":"^5.5.3","@types/jest":"^29.5.12","@types/node":"^20.14.9","@rollup/plugin-json":"^6.1.0","@rollup/plugin-typescript":"^12.3.0","@typescript-eslint/parser":"^7.15.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^7.15.0"},"peerDependencies":{"@cobre-npm/library-nodejs-common":"^3.0.0"},"peerDependenciesMeta":{"@cobre-npm/library-nodejs-common":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/library-response-catalog-node_0.8.0_1789505735885_0.10426225526243549"}}},"time":{"created":"2026-09-04T18:02:45.803Z","modified":"2026-09-15T20:55:36.162Z","0.2.0":"2026-09-04T18:02:46.155Z","0.3.0":"2026-09-09T19:03:17.939Z","0.5.0":"2026-09-10T14:03:05.482Z","0.6.0":"2026-09-10T17:39:47.441Z","0.7.0":"2026-09-10T19:27:57.011Z","0.8.0":"2026-09-15T20:55:35.964Z"},"license":"ISC","description":"Node.js Cobre library for resolving supplier errors against the Response Catalog Read API","maintainers":[{"name":"cobreorg","email":"npmoperation@cobre.co"},{"name":"alejandropg339","email":"alejandrop@cobre.co"}],"readme":"# library-response-catalog-node\n\nNode.js SDK that resolves a supplier-reported error against Cobre's response catalog. Call\n`createCatalogClient`, then `fetchResponse`, and let this library own HTTP, retries, the circuit\nbreaker, and (unlike the Java sibling) a **local technical fallback**.\n\n## Outcomes\n\n| What happened | What you get |\n|---|---|\n| Catalog returned a usable body | `Response` with `api` and `internal` populated |\n| Catalog down / 5xx / empty or unusable body / open circuit | **Degraded `Response`** — frontend token in `resolvedMessage`, `fallbackApplied=true`, `api`/`internal` = `null` |\n| Catalog returned HTTP 4xx, or credentials stayed rejected | `CatalogClientError` — do not retry |\n| Options missing or malformed | `Error` while creating the client |\n\n### Intentional divergence from Java\n\n[`library-response-catalog-java`](https://github.com/Cobre-Colombia/library-response-catalog-java)\nthrows `CatalogClientError` on technical unavailability. **This Node library returns a local\nfallback token instead**, so Node services can keep rendering a stable frontend message when the\ncatalog is down.\n\n| Flag / shape | Meaning |\n|---|---|\n| Remote `fallbackApplied=true` with `api`/`internal` populated | Catalog substituted a locale/entry **server-side** |\n| Local degraded: `fallbackApplied=true` **and** `api === null` | SDK technical fallback — render `resolvedMessage` as a frontend token |\n\n```typescript\nconst response = await catalog.fetchResponse(context)\nif (response.fallbackApplied && response.api === null) {\n  return renderToken(response.resolvedMessage) // e.g. #UNKNOWN_ERROR#\n}\nreturn handleCatalogResponse(response)\n```\n\n## Quickstart\n\n### 1. Dependency\n\n```bash\npnpm add @cobre-npm/library-response-catalog-node\n```\n\nRequires pnpm `10.27.0` (`packageManager` in `package.json`). Same-cluster (`CLUSTER_DNS`, the\ndefault) needs nothing else. Cross-cluster (`INTERNAL_GATEWAY`) also needs\n`@cobre-npm/library-nodejs-common`.\n\n### 2. Create the client\n\n```typescript\nimport {\n  buildSupplierErrorContext,\n  createCatalogClientSync,\n  CONNECTION_MODES,\n} from '@cobre-npm/library-response-catalog-node'\n\nconst catalog = createCatalogClientSync({\n  baseUrl: 'http://response-catalog-util.util-prod.svc.cluster.local',\n  mode: CONNECTION_MODES.CLUSTER_DNS,\n})\n\nconst response = await catalog.fetchResponse(\n  buildSupplierErrorContext({\n    supplier: 'nequi',\n    domain: 'wallets',\n    code: '58',\n    locale: 'es-CO',\n  }),\n)\n```\n\nFor `INTERNAL_GATEWAY`, use the async factory (loads API Gateway credentials):\n\n```typescript\nimport { createCatalogClient, CONNECTION_MODES } from '@cobre-npm/library-response-catalog-node'\n\nconst catalog = await createCatalogClient({\n  baseUrl: 'https://api-int.dev.cobre.co/responses-catalog/v1',\n  mode: CONNECTION_MODES.INTERNAL_GATEWAY,\n  secretName: 'dev/apigw/core-components/keys',\n  authManagerDomainURL: 'https://authmanager-dev.cobre.co',\n})\n```\n\n`baseUrl` is the catalog's base path exactly as the service publishes it — the version belongs to\nit, not to the endpoint, and this library appends only `/resolve`. See\n[Base URL](docs/guides/direct-http.md#base-url).\n\n## Which connection mode?\n\n| Situation | Mode | Extra dependency |\n|---|---|---|\n| Catalog is in the same Kubernetes cluster | `CLUSTER_DNS` (default) | none |\n| Catalog is reached via `api-int.<env>.cobre.co` | `INTERNAL_GATEWAY` | `@cobre-npm/library-nodejs-common` + `secretName` + `authManagerDomainURL` |\n\n## Public API\n\n| Type | Role |\n|---|---|\n| `CatalogPort` | Only method you call: `fetchResponse` |\n| `buildSupplierErrorContext` | Request: `supplier`, `domain`, `code` required; `locale` optional |\n| `Response`, `SupplierInfo`, `InternalInfo`, `ApiInfo` | Response payload |\n| `CatalogClientError` | HTTP 4xx or persistent credential rejection |\n| `createCatalogClient` / `createCatalogClientSync` | Wiring |\n| `CONNECTION_MODES` | `CLUSTER_DNS` or `INTERNAL_GATEWAY` |\n| `LIBRARY_VERSION` | Package version string |\n\nDo not construct `CatalogHttpAdapter` from consumer code.\n\nA scaffold snippet for `LIBRARY_VERSION` lives in [`examples/library-version.ts`](examples/library-version.ts).\nA domain-only snippet (no HTTP adapter) lives in [`examples/domain-context.ts`](examples/domain-context.ts).\n\n## Guides\n\n| Guide | Contents |\n|---|---|\n| [Direct HTTP](docs/guides/direct-http.md) | Modes, base URL, options, `/resolve` |\n| [Error handling](docs/guides/error-handling.md) | What to catch vs local fallback |\n| [Testing](docs/guides/testing.md) | Mock `CatalogPort` |\n| [Observability](docs/guides/observability.md) | Span, logs, metrics |\n| [HTTP client](docs/client.md) | Factory options, resilience, Java divergences |\n| [Fallback behavior](docs/fallback.md) | When fallback applies and the token map |\n| [Architecture](docs/architecture.md) | Package layout and Java divergence |\n| [Stack layering](ARCHITECTURE.md) | Stacked-PR layers and the same-cluster vs `INTERNAL_GATEWAY` split |\n| [Docs index](docs/README.md) | Per-layer release notes |\n| [Examples](examples/README.md) | Runnable snippets |\n| [Changelog](CHANGELOG.md) | Version history |\n| [Contributing](CONTRIBUTING.md) | Stack and tooling |\n\n## Build\n\n```bash\npnpm lint\npnpm test\npnpm run build\npnpm run docs # generates TypeDoc HTML into docs/api/ (gitignored)\n```\n","readmeFilename":"README.md"}