{"_id":"@belkajo/privatrail-sdk","_rev":"2-4441a49b53c8e4304a27068b57a9ea9e","name":"@belkajo/privatrail-sdk","dist-tags":{"latest":"1.0.10"},"versions":{"1.0.9":{"name":"@belkajo/privatrail-sdk","version":"1.0.9","keywords":["privatrail","privacy","consent","sdk"],"author":{"name":"Karoly Bella"},"license":"MIT","_id":"@belkajo/privatrail-sdk@1.0.9","maintainers":[{"name":"belkajo","email":"belkajo@gmail.com"}],"homepage":"https://github.com/belkajo/privatrail_sdk/blob/main/README.md","bugs":{"url":"https://github.com/belkajo/privatrail_sdk/issues"},"dist":{"shasum":"0f9576d654a7e294c62c97449e7e31e98d642add","tarball":"https://registry.npmjs.org/@belkajo/privatrail-sdk/-/privatrail-sdk-1.0.9.tgz","fileCount":6,"integrity":"sha512-lQMTUqj9IcF2+MvA4odN4d+u73xzTF0P7r63LGdjtWoiPvlxrb0Cssfdi5iOFZkVSjFw2qFlFhGLtzjwk68p2Q==","signatures":[{"sig":"MEUCID03nFmiASwPClE7RQgmlCrxhXOn8m6gboF5JBonTjvdAiEAusAgpSJogAmBETEljsr4kKGT8tDG+UIWQTVTLHO1iRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14722},"main":"./dist/index.cjs","type":"module","types":"./dist/index.server.d.ts","module":"./dist/index.js","engines":{"node":">=18.17"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"bc1b0f93c7ca7c914f75c0badd906473298b534e","scripts":{"build":"tsup src/index.ts --dts --format cjs,esm --clean","clean":"rimraf dist","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"belkajo","email":"belkajo@gmail.com"},"repository":{"url":"git+https://github.com/belkajo/privatrail_sdk.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy-first consent logging SDK for Privatrail","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"cookie":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.4.1","devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.0","typescript":"^5.6.0","@types/node":"^20.19.9","@types/cookie":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/privatrail-sdk_1.0.9_1763066365832_0.15095783626921522","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@belkajo/privatrail-sdk","version":"1.0.10","type":"module","description":"Privacy-first consent logging SDK for Privatrail","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.server.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"sideEffects":false,"scripts":{"build":"tsup src/index.ts --dts --format cjs,esm --clean","clean":"rimraf dist","prepublishOnly":"pnpm run build"},"devDependencies":{"@types/cookie":"^1.0.0","@types/node":"^20.19.9","tsup":"^8.0.0","typescript":"^5.6.0","rimraf":"^6.0.0"},"keywords":["privatrail","privacy","consent","sdk"],"author":{"name":"Karoly Bella"},"license":"MIT","packageManager":"pnpm@10.4.1","engines":{"node":">=18.17"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/belkajo/privatrail_sdk.git"},"bugs":{"url":"https://github.com/belkajo/privatrail_sdk/issues"},"homepage":"https://github.com/belkajo/privatrail_sdk/blob/main/README.md","dependencies":{"cookie":"^1.0.2"},"gitHead":"94cf69f0e18c29266d7a524fee49eaa400370825","_id":"@belkajo/privatrail-sdk@1.0.10","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-a4MLBrvZxGVBb1IdS7ElePxRjyL3VuzDjDuFU8zPFMs7QazWj30fGUs2ksWYz5VytdFMvK8fW34ijYQlxv1CiA==","shasum":"6f6b352ff6e1193346569e94d68c5117d0e1ca48","tarball":"https://registry.npmjs.org/@belkajo/privatrail-sdk/-/privatrail-sdk-1.0.10.tgz","fileCount":6,"unpackedSize":15083,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBlGW3XdewyhotoPjeBZwMRC4DFOlM+6CfwIVWGGnFqsAiEAkfJEsqji5QeMOWnJEcG5LfVFMxBki6zKkv/HPBv6i08="}]},"_npmUser":{"name":"belkajo","email":"belkajo@gmail.com"},"directories":{},"maintainers":[{"name":"belkajo","email":"belkajo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/privatrail-sdk_1.0.10_1763673792039_0.9420877176849849"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-13T20:39:25.773Z","modified":"2025-11-20T21:23:12.431Z","1.0.9":"2025-11-13T20:39:26.023Z","1.0.10":"2025-11-20T21:23:12.256Z"},"bugs":{"url":"https://github.com/belkajo/privatrail_sdk/issues"},"author":{"name":"Karoly Bella"},"license":"MIT","homepage":"https://github.com/belkajo/privatrail_sdk/blob/main/README.md","keywords":["privatrail","privacy","consent","sdk"],"repository":{"type":"git","url":"git+https://github.com/belkajo/privatrail_sdk.git"},"description":"Privacy-first consent logging SDK for Privatrail","maintainers":[{"name":"belkajo","email":"belkajo@gmail.com"}],"readme":"\n\n# Privatrail SDK\n\n**Privatrail SDK** – a lightweight TypeScript client for communicating with the Privatrail API.  \nThis package is currently in **development / internal testing phase**.\n\n---\n\n## 🧩 Overview\n\nThe SDK provides a simple way to send consent logs and perform health checks against the Privatrail API.  \nIt is designed to work in **server-only** environments (Next.js Server Actions, API routes, or Node.js services).\n\n---\n\n## 📦 Structure\n\n```\nsrc/\n ├── client.ts         # Core HTTP client\n ├── logActions.ts     # Convenience functions for consent logging\n ├── types.ts          # Shared types for requests and responses\n └── index.ts          # Export entry\n```\n\n---\n\n## ⚙️ Setup\n\nYou can include this SDK locally (until it’s published):\n\n```bash\npnpm add ../packages/privatrail-sdk\n```\n\nThen import and initialize it in your Next.js or Node project.\n\n---\n\n## 🚀 Usage\n\n### 1. Initialize SDK Settings\n\nBefore making any API calls, set the base URL and token.\n\n```ts\nimport { setClientSettings } from \"@privatrail/privatrail-sdk\";\n\nsetClientSettings(\n  process.env.PRIVATRAIL_ENDPOINT!, // e.g. https://api.privatrail.local\n  process.env.PRIVATRAIL_TOKEN!     // JWT or API token\n);\n```\n\n### 2. Perform a Health Check\n\n```ts\nimport { getHealthz } from \"@privatrail/privatrail-sdk\";\n\nconst health = await getHealthz();\nconsole.log(\"API status:\", health);\n```\n\nExpected response:\n\n```json\n{\n  \"status\": \"ok\",\n  \"db\": \"ok\",\n  \"detail\": \"\"\n}\n```\n\n### 3. Log a Consent Change\n\n```ts\nimport { recordLog } from \"@privatrail/privatrail-sdk\";\n\nawait recordLog({\n  visitor_id: \"abc123\",\n  policy_version: \"1.0\",\n  client_name: \"demo-site\",\n  channel: \"web\",\n  client_version: \"0.1.0\",\n  client_config: \"default\",\n  changes: [\n    {\n      purpose: \"analytics\",\n      lawful_basis: \"consent\",\n      granted: true,\n      position: 0\n    }\n  ]\n});\n```\n\nThis will POST to `/api/v1/consent/log` using your configured endpoint.\n\n---\n\n## 🧠 Internals\n\n### `ApiClient`\nA minimal HTTP wrapper with JSON parsing, header handling, and date revival.  \nSupports `GET` / `POST` / `PUT` etc., and automatically attaches the `Authorization` header.\n\n### `logActions`\nA convenience layer on top of `ApiClient`, exposing:\n- `getHealthz()` → quick API status check  \n- `recordLog(request)` → send consent log  \n- `setClientSettings(baseUrl, token)` → configure before calling\n\n---\n\n## 🧰 Requirements\n\n- Node.js ≥ 18\n- `fetch` API available globally (default in Next.js 14+)\n\n---\n\n## 🧪 Development Notes\n\nBuild the package locally:\n\n```bash\npnpm build\n```\n\nClean old builds:\n\n```bash\npnpm run clean\n```\n\nThis will generate compiled output in `dist/` ready for internal linking or publishing later.\n\n---\n\n## 📄 License\n\nCurrently **unlicensed (internal use only)** —  \na proper open-source license (e.g. MIT) will be added before public release.\n\n---\n\n## 📅 Status\n\n🧱 *MVP-level SDK for internal integration testing.*  \nNext steps:\n- Add input validation\n- Add error handling and retry logic\n- Prepare documentation for public release","readmeFilename":"README.md"}