{"_id":"@aidihq/sdk","_rev":"2-ca0f130dc12330de9e63fdf01cb6c7a3","name":"@aidihq/sdk","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@aidihq/sdk","version":"0.1.0","keywords":["aidi","sdk","node","typescript","identity","verification"],"license":"MIT","_id":"@aidihq/sdk@0.1.0","maintainers":[{"name":"ginos","email":"somiglianagino@gmail.com"}],"homepage":"https://github.com/aidihq/sdk#readme","bugs":{"url":"https://github.com/aidihq/sdk/issues"},"dist":{"shasum":"f970f2c289c160cd7584a681969008b432faad86","tarball":"https://registry.npmjs.org/@aidihq/sdk/-/sdk-0.1.0.tgz","fileCount":9,"integrity":"sha512-b939T/z55zFcs5GCSdnL1eC6OLGcQWGqUmTs+lWyCyruN2dajwTSsVRqxkdZtShRszrl+noXvmrVVr/ZIZyFyQ==","signatures":[{"sig":"MEQCIGT+hNBN3EazbBt7HTkXlaZ8MKlz+nRpjAb28v3fJYGiAiA/1uZgE+6N+DEuXrjVf7LdjOzIouPuSAzpxBsNKimM+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61127},"main":"./dist/index.cjs","type":"module","_from":"file:aidihq-sdk-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"private":false,"scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true}); require('node:fs').rmSync('coverage',{recursive:true,force:true})\"","prepack":"npm run build","pack:check":"npm pack --dry-run","release:check":"npm run build && npm run pack:check"},"_npmUser":{"name":"ginos","email":"somiglianagino@gmail.com"},"_resolved":"C:\\Users\\ginos\\Desktop\\2025\\AIDI\\@aidi-sdk\\packages\\node\\aidihq-sdk-0.1.0.tgz","_integrity":"sha512-b939T/z55zFcs5GCSdnL1eC6OLGcQWGqUmTs+lWyCyruN2dajwTSsVRqxkdZtShRszrl+noXvmrVVr/ZIZyFyQ==","repository":{"url":"git+https://github.com/aidihq/sdk.git","type":"git","directory":"packages/node"},"_npmVersion":"10.9.3","description":"Official AIDI SDK for Node.js.","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.0.9","typescript":"^5.8.2","@types/node":"^22.13.14"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1788994104902_0.03714738469295642","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"@aidihq/sdk@0.2.0","bugs":{"url":"https://gitlab.com/smart-aidi/sdk/-/issues"},"dist":{"shasum":"b06a446316a0dcf4bbcf6f8cfc0400e6f157c949","tarball":"https://registry.npmjs.org/@aidihq/sdk/-/sdk-0.2.0.tgz","fileCount":9,"integrity":"sha512-jWmjStjMTgayaZ0UleU+fQcUEeiOL5Tta6B/igeNjy+uR35nfc/vLgeGJkWlzdDS5yuoeFEUgO3AMw5wQoojrw==","signatures":[{"sig":"MEUCIHCYvbKVB1jHUN9SFYuJaqD0YMHArQoVT0qBsdx6elrCAiEAiIlBtrxb0nEpTAxXLpUYzcZ2Mt11Lr3+P3wUzToO4FA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCFrItgr+GQ0brgkXlS88Bx8TRGIekn/IU2YpMrEPDzZgIgWXSZVDHCSXhd+wr5uHeKO8gTz7IaCRxV2ud7KLHAwDg="}],"unpackedSize":70875},"main":"./dist/index.cjs","name":"@aidihq/sdk","type":"module","_from":"file:aidihq-sdk-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"license":"MIT","private":false,"scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true}); require('node:fs').rmSync('coverage',{recursive:true,force:true})\"","pack:check":"npm pack --dry-run","release:check":"npm run build && npm run pack:check"},"version":"0.2.0","_npmUser":{"name":"ginos","email":"somiglianagino@gmail.com"},"homepage":"https://gitlab.com/smart-aidi/sdk","keywords":["aidi","sdk","node","typescript","identity","verification"],"_resolved":"C:\\Users\\ginos\\AppData\\Local\\Temp\\14a4e029b6e49751dd4afcb47c5d1f26\\aidihq-sdk-0.2.0.tgz","_integrity":"sha512-jWmjStjMTgayaZ0UleU+fQcUEeiOL5Tta6B/igeNjy+uR35nfc/vLgeGJkWlzdDS5yuoeFEUgO3AMw5wQoojrw==","repository":{"url":"git+https://gitlab.com/smart-aidi/sdk.git","type":"git"},"_npmVersion":"10.9.3","description":"Official AIDI SDK for Node.js.","directories":{},"maintainers":[{"name":"ginos","email":"somiglianagino@gmail.com"}],"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.0.9","typescript":"^5.8.2","@types/node":"^22.13.14"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.2.0_1790013577905_0.38937717761720636"}}},"time":{"created":"2026-09-09T22:48:24.696Z","modified":"2026-09-21T17:59:38.151Z","0.1.0":"2026-09-09T22:48:25.020Z","0.2.0":"2026-09-21T17:59:37.981Z"},"bugs":{"url":"https://gitlab.com/smart-aidi/sdk/-/issues"},"license":"MIT","homepage":"https://gitlab.com/smart-aidi/sdk","keywords":["aidi","sdk","node","typescript","identity","verification"],"repository":{"url":"git+https://gitlab.com/smart-aidi/sdk.git","type":"git"},"description":"Official AIDI SDK for Node.js.","maintainers":[{"name":"ginos","email":"somiglianagino@gmail.com"}],"readme":"# @aidihq/sdk\r\n\r\n![Version](https://img.shields.io/badge/version-0.2.0-black)\r\n![Node](https://img.shields.io/badge/node-%3E%3D18-339933)\r\n![Runtime](https://img.shields.io/badge/runtime-server--side-1f6feb)\r\n\r\nOfficial AIDI SDK for Node.js.\r\n\r\n`@aidihq/sdk` provides a typed, server-side API for creating AIDI verification and authentication flows, checking their status, retrieving verification results, and exchanging authentication approvals using native `fetch`.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @aidihq/sdk\r\n```\r\n\r\n## Quick Start\r\n\r\n```ts\r\nimport { createAidiClient } from \"@aidihq/sdk\";\r\n\r\nconst aidi = createAidiClient({\r\n  apiKey: process.env.AIDI_COMPANY_API_KEY!\r\n});\r\n\r\nconst verification = await aidi.verifications.createUserInitiated({\r\n  requestedFields: [\"cuil\"]\r\n});\r\n\r\nconsole.log(verification.id);\r\nconsole.log(verification.qrUrl);\r\n```\r\n\r\n## Model\r\n\r\nAIDI separates what you want to do from how the user enters the flow.\r\n\r\n**Intent**\r\n\r\n- `VERIFY`: confirm identity or requested data.\r\n- `AUTHENTICATE`: authenticate the user in AIDI and return an assertion your backend can exchange before creating its own session.\r\n\r\n**Initiation**\r\n\r\n- `TARGETED`: your backend already knows which AIDI user should approve.\r\n- `USER_INITIATED`: the user starts from a QR, button, link, or deeplink.\r\n\r\n## USER_INITIATED Authentication\r\n\r\nUse this when a user wants to enter your product with AIDI. For desktop, render `qrUrl` as a QR and keep the desktop page waiting for completion. For mobile, open the same `qrUrl` from a button or link.\r\n\r\n```ts\r\nconst authentication = await aidi.verifications.createUserInitiated({\r\n  intent: \"AUTHENTICATE\",\r\n  message: \"Confirmá tu identidad para continuar\",\r\n  requestedFields: [\"cuil\"],\r\n  redirectUrl: \"https://empresa.com/auth/callback\",\r\n  state: \"auth-attempt-id\"\r\n});\r\n\r\nconst status = await aidi.verifications.getStatus(authentication.id);\r\n\r\nif (status.exchangeReady && status.exchangeToken) {\r\n  const result = await aidi.verifications.exchangeAuthentication(\r\n    authentication.id,\r\n    status.exchangeToken\r\n  );\r\n\r\n  console.log(result.subjectId);\r\n  console.log(result.claims);\r\n  console.log(result.state);\r\n}\r\n```\r\n\r\nIf `redirectUrl` is present, AIDI can return the user to that URL after consent with `verificationId`, `status`, and `state` in the query string. The actual authentication still completes server-side with `exchangeAuthentication()`.\r\n\r\n## TARGETED Verification\r\n\r\nUse this when you already know which AIDI user should approve.\r\n\r\n```ts\r\nconst verification = await aidi.verifications.createTargeted({\r\n  targetIdentifier: \"20-12345678-9\",\r\n  requestedFields: [\"dni\", \"cuil\", \"firstName\"]\r\n});\r\n\r\nconst status = await aidi.verifications.getStatus(verification.id);\r\n\r\nif (status.resultAvailable) {\r\n  const result = await aidi.verifications.getResult(verification.id);\r\n  console.log(result);\r\n}\r\n```\r\n\r\n## Requested Fields\r\n\r\nThe SDK currently accepts these values in `requestedFields`:\r\n\r\n```ts\r\n[\"dni\", \"cuil\", \"firstName\"]\r\n```\r\n\r\nInternally, the SDK translates `requestedFields` into the current AIDI HTTP payload shape.\r\n\r\n## Public Methods\r\n\r\n- `createAidiClient({ apiKey })`\r\n- `aidi.verifications.create({ initiation, intent, requestedFields, ... })`\r\n- `aidi.verifications.createUserInitiated({ intent, requestedFields, redirectUrl, state })`\r\n- `aidi.verifications.createTargeted({ targetIdentifier, requestedFields })`\r\n- `aidi.verifications.getStatus(verificationId)`\r\n- `aidi.verifications.getResult(verificationId)`\r\n- `aidi.verifications.exchangeAuthentication(verificationId, exchangeToken)`\r\n\r\n## Version\r\n\r\nVersion `0.2.0` aligns the SDK with the backend `intent`/`initiation` contract and removes the old QR/DIRECT/LOGIN-facing helpers. See the repository changelog for full version history.\r\n\r\n## Errors\r\n\r\nThe package exports typed errors:\r\n\r\n- `AidiError`\r\n- `AidiHttpError`\r\n- `AidiTimeoutError`\r\n\r\nExample:\r\n\r\n```ts\r\nimport { AidiHttpError, createAidiClient } from \"@aidihq/sdk\";\r\n\r\nconst aidi = createAidiClient({\r\n  apiKey: process.env.AIDI_COMPANY_API_KEY!\r\n});\r\n\r\ntry {\r\n  await aidi.verifications.createUserInitiated({\r\n    requestedFields: [\"dni\"]\r\n  });\r\n} catch (error) {\r\n  if (error instanceof AidiHttpError) {\r\n    console.error(error.status, error.body);\r\n  }\r\n}\r\n```\r\n\r\n## Security Notes\r\n\r\n- Use this package only on the server side\r\n- Never expose `AIDI_COMPANY_API_KEY` to browsers or mobile clients\r\n- Rotate credentials if you suspect they were leaked\r\n","readmeFilename":"README.md"}