{"id":"@lssm-tech/integration.app-store-connect","slug":"integration.app-store-connect","name":"@lssm-tech/integration.app-store-connect","version":"2.0.4","path":"packages/integrations/app-store-connect","manifestPath":"packages/integrations/app-store-connect/package.json","manifestBlobSha":"72850e47e54becf73c563768be056c7d1c8dbc13","layer":"integrations","physicalArea":null,"primaryArea":"integrations-and-providers","classification":{"privateDeclared":null,"catalogFamily":"integrations","catalogKind":"integration","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Read-first App Store Connect API integration for ReviewReady app submission readiness, with deterministic mocks and secret-ref-only credentials.","descriptionOrigin":"package.json","catalog":{"family":"integrations","kind":"integration","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["node"],"entrypoints":[".","./auth","./impls","./impls/client-types","./impls/jwt","./impls/live","./impls/mapping","./impls/mock","./logging","./port"],"documentation":[{"title":"Integration App Store Connect documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.app-store-connect","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.integration.app.store.connect","title":"Integration App Store Connect","description":"Read-first App Store Connect API integration for ReviewReady app submission readiness, with deterministic mocks and secret-ref-only credentials.","status":"active","useCases":["Adopt read-first app store connect api integration for reviewready app submission readiness, with deterministic mocks and secret-ref-only credentials"],"aliases":["integration","app","store","connect"],"pythonEquivalents":[],"canonicalImports":[{"from":"@lssm-tech/integration.app-store-connect","symbols":[]},{"from":"@lssm-tech/integration.app-store-connect/auth","symbols":[]},{"from":"@lssm-tech/integration.app-store-connect/impls","symbols":[]},{"from":"@lssm-tech/integration.app-store-connect/impls/client-types","symbols":[]},{"from":"@lssm-tech/integration.app-store-connect/impls/jwt","symbols":[]},{"from":"@lssm-tech/integration.app-store-connect/impls/live","symbols":[]},{"from":"@lssm-tech/integration.app-store-connect/impls/mapping","symbols":[]},{"from":"@lssm-tech/integration.app-store-connect/impls/mock","symbols":[]},{"from":"@lssm-tech/integration.app-store-connect/logging","symbols":[]},{"from":"@lssm-tech/integration.app-store-connect/port","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/integration.app-store-connect package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect","symbols":[]},{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect/auth","symbols":[]},{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect/impls","symbols":[]},{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect/impls/client-types","symbols":[]},{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect/impls/jwt","symbols":[]},{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect/impls/live","symbols":[]},{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect/impls/mapping","symbols":[]},{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect/impls/mock","symbols":[]},{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect/logging","symbols":[]},{"capabilityId":"package.lssm.tech.integration.app.store.connect","from":"@lssm-tech/integration.app-store-connect/port","symbols":[]}],"scripts":{"build":"contractspec-bun-build build","build:bundle":"contractspec-bun-build transpile","build:types":"contractspec-bun-build types","dev":"contractspec-bun-build dev","clean":"rimraf dist .turbo","lint:check":"node ../../../scripts/biome.cjs check .","lint:fix":"node ../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../scripts/biome.cjs check --write .","test":"bun test","prebuild":"contractspec-bun-build prebuild","typecheck":"tsgo --noEmit"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/lib.app-submission-readiness-runtime":"workspace:^"},"devDependencies":{"@lssm-tech/tool.bun":"workspace:*","@lssm-tech/tool.typescript":"workspace:*","@types/bun":"catalog:types","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts","./auth":"./src/auth.ts","./impls":"./src/impls/index.ts","./impls/client-types":"./src/impls/client-types.ts","./impls/jwt":"./src/impls/jwt.ts","./impls/live":"./src/impls/live.ts","./impls/mapping":"./src/impls/mapping.ts","./impls/mock":"./src/impls/mock.ts","./logging":"./src/logging.ts","./port":"./src/port.ts"},"publishExports":{".":{"types":"./dist/index.d.ts","bun":"./dist/index.js","node":"./dist/node/index.js","default":"./dist/index.js"},"./auth":{"types":"./dist/auth.d.ts","bun":"./dist/auth.js","node":"./dist/node/auth.js","default":"./dist/auth.js"},"./impls":{"types":"./dist/impls/index.d.ts","bun":"./dist/impls/index.js","node":"./dist/node/impls/index.js","default":"./dist/impls/index.js"},"./impls/client-types":{"types":"./dist/impls/client-types.d.ts","bun":"./dist/impls/client-types.js","node":"./dist/node/impls/client-types.js","default":"./dist/impls/client-types.js"},"./impls/jwt":{"types":"./dist/impls/jwt.d.ts","bun":"./dist/impls/jwt.js","node":"./dist/node/impls/jwt.js","default":"./dist/impls/jwt.js"},"./impls/live":{"types":"./dist/impls/live.d.ts","bun":"./dist/impls/live.js","node":"./dist/node/impls/live.js","default":"./dist/impls/live.js"},"./impls/mapping":{"types":"./dist/impls/mapping.d.ts","bun":"./dist/impls/mapping.js","node":"./dist/node/impls/mapping.js","default":"./dist/impls/mapping.js"},"./impls/mock":{"types":"./dist/impls/mock.d.ts","bun":"./dist/impls/mock.js","node":"./dist/node/impls/mock.js","default":"./dist/impls/mock.js"},"./logging":{"types":"./dist/logging.d.ts","bun":"./dist/logging.js","node":"./dist/node/logging.js","default":"./dist/logging.js"},"./port":{"types":"./dist/port.d.ts","bun":"./dist/port.js","node":"./dist/node/port.js","default":"./dist/port.js"}},"types":"./dist/index.d.ts","files":["dist","README.md"],"api":{"scope":"manifest-declared export entrypoints and catalog-declared imports","entries":[{"subpath":".","importPath":"@lssm-tech/integration.app-store-connect","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/integrations/app-store-connect/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./auth","importPath":"@lssm-tech/integration.app-store-connect/auth","target":"./src/auth.ts","targets":[{"conditions":[],"target":"./src/auth.ts","sourcePath":"packages/integrations/app-store-connect/src/auth.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/auth.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls","importPath":"@lssm-tech/integration.app-store-connect/impls","target":"./src/impls/index.ts","targets":[{"conditions":[],"target":"./src/impls/index.ts","sourcePath":"packages/integrations/app-store-connect/src/impls/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/impls/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/client-types","importPath":"@lssm-tech/integration.app-store-connect/impls/client-types","target":"./src/impls/client-types.ts","targets":[{"conditions":[],"target":"./src/impls/client-types.ts","sourcePath":"packages/integrations/app-store-connect/src/impls/client-types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/impls/client-types.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/jwt","importPath":"@lssm-tech/integration.app-store-connect/impls/jwt","target":"./src/impls/jwt.ts","targets":[{"conditions":[],"target":"./src/impls/jwt.ts","sourcePath":"packages/integrations/app-store-connect/src/impls/jwt.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/impls/jwt.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/live","importPath":"@lssm-tech/integration.app-store-connect/impls/live","target":"./src/impls/live.ts","targets":[{"conditions":[],"target":"./src/impls/live.ts","sourcePath":"packages/integrations/app-store-connect/src/impls/live.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/impls/live.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/mapping","importPath":"@lssm-tech/integration.app-store-connect/impls/mapping","target":"./src/impls/mapping.ts","targets":[{"conditions":[],"target":"./src/impls/mapping.ts","sourcePath":"packages/integrations/app-store-connect/src/impls/mapping.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/impls/mapping.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/mock","importPath":"@lssm-tech/integration.app-store-connect/impls/mock","target":"./src/impls/mock.ts","targets":[{"conditions":[],"target":"./src/impls/mock.ts","sourcePath":"packages/integrations/app-store-connect/src/impls/mock.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/impls/mock.ts","sourceStatus":"verified source file"}]},{"subpath":"./logging","importPath":"@lssm-tech/integration.app-store-connect/logging","target":"./src/logging.ts","targets":[{"conditions":[],"target":"./src/logging.ts","sourcePath":"packages/integrations/app-store-connect/src/logging.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/logging.ts","sourceStatus":"verified source file"}]},{"subpath":"./port","importPath":"@lssm-tech/integration.app-store-connect/port","target":"./src/port.ts","targets":[{"conditions":[],"target":"./src/port.ts","sourcePath":"packages/integrations/app-store-connect/src/port.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/src/port.ts","sourceStatus":"verified source file"}]}],"entryCount":10,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Integration App Store Connect documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.app-store-connect","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.app-store-connect.txt"},"readme":{"status":"available","body":"# @lssm-tech/integration.app-store-connect\n\nRead-first App Store Connect integration for ReviewReady app submission\nreadiness. It maps supported metadata reads to the ContractSpec provider\ncapability registry and returns typed capability results for everything the\nofficial API does not safely expose.\n\n## Safety policy\n\n- **Read-first / write-disabled.** The port exposes no write/update operations.\n  Provider writes are out of scope for this package.\n- **Mock-by-default.** Tests and CI use `createMockAppStoreConnectClient`, which\n  performs no network access and is fully deterministic (injected clock + ids).\n- **Live calls are opt-in.** `createAppStoreConnectClient` only attempts live\n  access when `enableLiveCalls` is true, secret-ref auth is present, and a secret\n  resolver is supplied. Otherwise reads return typed `degraded` results.\n- **No faked data.** Fields the API cannot supply (e.g. App Privacy answers)\n  return a typed `manual-required` / `unsupported` / `degraded` capability\n  result, never a silent success.\n\n## Secret handling\n\nAuth config carries **secret references only** (`privateKeySecretRefId`). Raw\n`.p8` private keys, JWTs, and headers are never accepted as config fields, and\nnever appear in snapshots, logs, or fixtures. Log entries record only\n`provider`, `operation`, `status`, `correlationId`, and `capabilityId`.\n\n## Usage\n\n```ts\nimport { createMockAppStoreConnectClient } from \"@lssm-tech/integration.app-store-connect\";\n\nconst client = createMockAppStoreConnectClient({\n\tnow: \"2026-06-07T12:00:00.000Z\",\n\tcorrelationId: \"corr-001\",\n});\n\nconst metadata = await client.getAppMetadata({ appId: \"1234567890\" });\nconst privacy = await client.getAppPrivacyAnswers({ appId: \"1234567890\" });\n// privacy.status === \"manual-required\"\n```\n\nSource: https://developer.apple.com/documentation/appstoreconnectapi/\n","sourcePath":"packages/integrations/app-store-connect/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/app-store-connect/README.md","blobSha":"a8d46a34a9278c84d5a50166a9761ed5e8b784e1","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","origin":"README recovered byte-for-byte from pinned aggregate guide","integrity":"exact Git blob match","executionStatus":"not executed"},"provenance":{"repository":"lssm-tech/contractspec","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","manifestOrigin":"pinned GitHub manifest fetch","manifestComplete":true,"publicationPolicyApplied":false},"areaSlug":"integrations-and-providers","areaTitle":"Integrations and provider selection","displayName":"integration.app-store-connect","runtimes":["node"],"platforms":["server"],"kind":"integration","scope":"Package manifest","canonicalRoute":"/docs/packages/integration.app-store-connect/","contextUrl":"/docs/packages/integration.app-store-connect.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}