{"_id":"@dsanchez.co/reisift-sdk","_rev":"4-342bc35c5fdebd8363cde3bb9e1eff7d","name":"@dsanchez.co/reisift-sdk","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@dsanchez.co/reisift-sdk","version":"0.1.0","keywords":["reisift","api","sdk","typescript"],"author":"","license":"ISC","_id":"@dsanchez.co/reisift-sdk@0.1.0","maintainers":[{"name":"danicanod","email":"danicanod@gmail.com"}],"dist":{"shasum":"131163fc95df1532c768dfbfe2fcfa5e31ab5d2c","tarball":"https://registry.npmjs.org/@dsanchez.co/reisift-sdk/-/reisift-sdk-0.1.0.tgz","fileCount":47,"integrity":"sha512-aqQXCoP6i2ZbYYYTNXCrsIbhZcCu14NHOI6kb7bUiEPNst+9fIz/rl48jTcq5Z0nLYJ6X2RREblEn4acgeNm2g==","signatures":[{"sig":"MEQCIFX8TM0vBzeC4OyeQU9tAD3YNNzspUJvOnW9lW/88YZNAiAOG69wJusP/46C7U0uSokoPsxvZy1r45Jma7JDnW1I6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46946},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d53d557abc9d5c76c5d1823887bedebd5c21674a","scripts":{"build":"tsc -p tsconfig.build.json","parse-har":"tsx scripts/parse-har.ts","smoke-test":"tsx scripts/smoke-test.ts","build:check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"danicanod","email":"danicanod@gmail.com"},"_npmVersion":"11.7.0","description":"TypeScript SDK for the Reisift API","directories":{},"_nodeVersion":"25.3.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/reisift-sdk_0.1.0_1768831214580_0.6894171995676768","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dsanchez.co/reisift-sdk","version":"0.1.1","keywords":["reisift","api","sdk","typescript"],"author":"","license":"ISC","_id":"@dsanchez.co/reisift-sdk@0.1.1","maintainers":[{"name":"danicanod","email":"danicanod@gmail.com"}],"dist":{"shasum":"5d222af962db32ec4661da9dc423a41259f93e70","tarball":"https://registry.npmjs.org/@dsanchez.co/reisift-sdk/-/reisift-sdk-0.1.1.tgz","fileCount":47,"integrity":"sha512-tKghvNvR/GMynC3jGOelmMGfFx3unNPr5sKd3t36LOBkIztK5Gy3rL3bucLtGzmtW+afcEolY5PIhDMJoe3saw==","signatures":[{"sig":"MEUCIBJ3QpRhm27p13JSJAxa4awukFxFizpm+aNSLljo7IKVAiEA8JO+Y64Ge20RRbb8VAiASy0CGxeF1QzQfgyDTyjq/3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47147},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7bd459ec94986956907efb8c4453c692490485c2","scripts":{"build":"tsc -p tsconfig.build.json","parse-har":"tsx scripts/parse-har.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.scripts.json --noEmit","smoke-test":"tsx scripts/smoke-test.ts","build:check":"tsc --noEmit","typecheck:src":"tsc --noEmit","prepublishOnly":"npm run build","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit"},"_npmUser":{"name":"danicanod","email":"danicanod@gmail.com"},"_npmVersion":"11.7.0","description":"TypeScript SDK for the Reisift API","directories":{},"_nodeVersion":"25.3.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/reisift-sdk_0.1.1_1768831760817_0.5702908857130253","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dsanchez.co/reisift-sdk","version":"0.2.0","keywords":["reisift","api","sdk","typescript"],"author":"","license":"ISC","_id":"@dsanchez.co/reisift-sdk@0.2.0","maintainers":[{"name":"danicanod","email":"danicanod@gmail.com"}],"dist":{"shasum":"e6c6aed97eef0ef1be18b6dead433115800df2e9","tarball":"https://registry.npmjs.org/@dsanchez.co/reisift-sdk/-/reisift-sdk-0.2.0.tgz","fileCount":47,"integrity":"sha512-Ct/y/k2HxwNp9Sttg0L+DSRmn2G2+QX6R51IPIuM5/u+R1R2BeREXYRfVeachgs+4HDzzzd4MTRVtC1daDcoVA==","signatures":[{"sig":"MEQCIFLnB5ruR9jJAXQyFqPBUL5PciyZES6tmZd1hMz+tlJyAiAiJCyxpA5vRJGsFg5kKtem1xTPDMcrXtvQU4f2TF68+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57555},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"23f655a9b060df6a0529d23a736cc872ca358831","scripts":{"build":"tsc -p tsconfig.build.json","parse-har":"tsx scripts/parse-har.ts","typecheck":"tsc --noEmit && tsc -p tsconfig.scripts.json --noEmit","smoke-test":"tsx scripts/smoke-test.ts","build:check":"tsc --noEmit","typecheck:src":"tsc --noEmit","prepublishOnly":"npm run build","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit"},"_npmUser":{"name":"danicanod","email":"danicanod@gmail.com"},"_npmVersion":"11.7.0","description":"TypeScript SDK for the Reisift API","directories":{},"_nodeVersion":"25.3.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","dotenv":"^17.2.3","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/reisift-sdk_0.2.0_1768833303421_0.32347117193164543","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dsanchez.co/reisift-sdk","version":"0.3.0","description":"TypeScript SDK for the REISift API","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"engines":{"node":">=18"},"scripts":{"build":"tsc -p tsconfig.build.json","build:check":"tsc --noEmit","typecheck":"tsc --noEmit && tsc -p tsconfig.scripts.json --noEmit","typecheck:src":"tsc --noEmit","typecheck:scripts":"tsc -p tsconfig.scripts.json --noEmit","prepublishOnly":"npm run build","parse-har":"tsx scripts/parse-har.ts","smoke-test":"tsx scripts/smoke-test.ts"},"keywords":["reisift","api","sdk","typescript"],"author":{"name":"Daniel Sanchez"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/danicanod/reisift-sdk.git"},"bugs":{"url":"https://github.com/danicanod/reisift-sdk/issues"},"homepage":"https://github.com/danicanod/reisift-sdk#readme","devDependencies":{"@types/node":"^22.0.0","dotenv":"^17.2.3","tsx":"^4.7.0","typescript":"^5.5.0"},"gitHead":"17ee791fa7bf518aa2b8bd47068e31d5d1fc0dab","_id":"@dsanchez.co/reisift-sdk@0.3.0","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-B5dzx4oP+vnjSIaUJbBRuMCF3jw3qQ/WwbX2tk1wqsy3MZ6VK2Wlfgy+RxtXQvq6BSdk44kM5tw22yBaNHWbRg==","shasum":"d4e425cd758cdb57106662ac064f60a81254701b","tarball":"https://registry.npmjs.org/@dsanchez.co/reisift-sdk/-/reisift-sdk-0.3.0.tgz","fileCount":47,"unpackedSize":61555,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDNpp9UmN4INtLuhSoXnDOlC7AM70hNxtpJ8LAGxOOyegIgL3Hcr/B6IM/zG/qQFQ4LVkERydFqLPX8rER/0pdU+44="}]},"_npmUser":{"name":"danicanod","email":"danicanod@gmail.com"},"directories":{},"maintainers":[{"name":"danicanod","email":"danicanod@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/reisift-sdk_0.3.0_1772753048963_0.1338421084753465"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-19T14:00:14.460Z","modified":"2026-03-05T23:24:09.257Z","0.1.0":"2026-01-19T14:00:14.720Z","0.1.1":"2026-01-19T14:09:20.951Z","0.2.0":"2026-01-19T14:35:03.576Z","0.3.0":"2026-03-05T23:24:09.129Z"},"license":"ISC","keywords":["reisift","api","sdk","typescript"],"description":"TypeScript SDK for the REISift API","maintainers":[{"name":"danicanod","email":"danicanod@gmail.com"}],"readme":"# @dsanchez.co/reisift-sdk\n\nA TypeScript SDK for the [REISift](https://www.reisift.io) API.\n\n## Installation\n\n```bash\nnpm install @dsanchez.co/reisift-sdk\n```\n\n## Quick Start\n\n```typescript\nimport { ReisiftClient } from '@dsanchez.co/reisift-sdk';\n\n// Create the client\nconst client = new ReisiftClient();\n\n// Authenticate (requires environment variables or config)\nawait client.authenticate();\n\n// Use the client to interact with the API\nconst user = await client.getCurrentUser();\nconsole.log('Authenticated as:', user.email);\n\nconst properties = await client.searchProperties({ limit: 10 });\nconsole.log('Found', properties.count, 'properties');\n```\n\n## Authentication\n\nThe SDK supports two authentication methods:\n\n### 1. API Key (recommended for scripts/automation)\n\nUse a long-lived API key as a Bearer token. The SDK validates it by calling the user endpoint.\n\n```typescript\nconst client = new ReisiftClient({\n  apiKey: 'your_api_key',\n});\nawait client.authenticate();\n```\n\nOr via environment variable:\n\n```bash\nREISIFT_API_KEY=your_api_key\n```\n\n### 2. Email/Password (JWT login)\n\nUses the standard login flow with automatic token refresh.\n\n```typescript\nconst client = new ReisiftClient({\n  email: 'you@example.com',\n  password: 'your_password',\n});\nawait client.authenticate();\n```\n\nOr via environment variables:\n\n```bash\nREISIFT_EMAIL=you@example.com\nREISIFT_PASSWORD=your_password\n```\n\n### Auth Precedence\n\nWhen calling `authenticate()`, the SDK checks credentials in this order:\n\n1. **API key**: `config.apiKey` or `REISIFT_API_KEY` env var\n2. **Email/password**: `config.email`/`config.password` or `REISIFT_EMAIL`/`REISIFT_PASSWORD` env vars\n\nIf an API key is provided, email/password is ignored.\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `REISIFT_API_KEY` | Long-lived API key (takes priority) |\n| `REISIFT_EMAIL` | Email for login authentication |\n| `REISIFT_PASSWORD` | Password for login authentication |\n| `REISIFT_BASE_URL` | API base URL (default: `https://apiv2.reisift.io`) |\n| `LOG_LEVEL` | Logging level: `debug`, `info`, `warn`, `error` (default: `info`) |\n\n## Configuration\n\nFull configuration options:\n\n```typescript\nconst client = new ReisiftClient({\n  // API key auth (takes priority if set)\n  apiKey: 'your_api_key',\n\n  // Email/password auth (used if no API key)\n  email: 'you@example.com',\n  password: 'your_password',\n\n  // Optional: override base URL\n  baseUrl: 'https://apiv2.reisift.io',\n});\n```\n\n## API Reference\n\n### ReisiftClient\n\nThe main client for interacting with the REISift API.\n\n#### Methods\n\n| Method | Description |\n|--------|-------------|\n| `authenticate()` | Authenticate with the API (API key or email/password) |\n| `getCurrentUser()` | Get the current authenticated user |\n| `getDashboard()` | Get dashboard data |\n| `getDashboardGeneral()` | Get general dashboard statistics |\n| `searchProperties(request?)` | Search for properties |\n| `getPropertyByUuid(propertyUuid)` | Get a property by UUID |\n| `getPropertyImages(propertyUuid)` | Get images for a property |\n| `getPropertyOffers(propertyUuid)` | Get offers for a property |\n| `searchAutocomplete(search)` | Search for addresses (uses map.reisift.io) |\n| `getAddressInfoByMapId(mapId)` | Get address info by map ID |\n\n#### Properties\n\n| Property | Type | Description |\n|----------|------|-------------|\n| `isAuthenticated` | `boolean` | Whether the client is authenticated |\n\n## Types\n\nThe SDK exports TypeScript types for all API operations:\n\n```typescript\nimport type {\n  ReisiftClientInterface,\n  ReisiftClientConfig,\n  UserResponse,\n  Property,\n  PropertyAddress,\n  PropertyOwner,\n  PropertySearchRequest,\n  PropertySearchResponse,\n  PropertyImage,\n  PropertyImagesResponse,\n  PropertyOffer,\n  PropertyOffersResponse,\n  DashboardResponse,\n  DashboardGeneralResponse,\n  SearchAutocompleteResult,\n  SearchAutocompleteResponse,\n  AddressInfoByMapIdResponse,\n  ApiError,\n  Pagination,\n  PaginatedResponse,\n} from '@dsanchez.co/reisift-sdk';\n```\n\n## Breaking changes in v0.3.0\n\nSeveral public methods and types have been renamed for naming consistency:\n\n| Before (v0.2.0) | After (v0.3.0) |\n|------------------|----------------|\n| `getPropertyById(uuid)` | `getPropertyByUuid(propertyUuid)` |\n| `getPropertyImages(uuid)` | `getPropertyImages(propertyUuid)` |\n| `getPropertyOffers(uuid)` | `getPropertyOffers(propertyUuid)` |\n| `getAddressInfoFromMapId(mapId)` | `getAddressInfoByMapId(mapId)` |\n| `AddressInfoFromMapIdRequest` | `AddressInfoByMapIdRequest` |\n| `AddressInfoFromMapIdResponse` | `AddressInfoByMapIdResponse` |\n| `EnsurePropertyOptions` | `EnsurePropertyByMapIdOptions` |\n\n## Documentation\n\nFor a comprehensive map of the SDK's architecture, all exported types, endpoint inventory, internal flows, and sensitive notes, see **[docs/sdk-map.md](docs/sdk-map.md)**. This document includes detailed appendices (A-G) with a line-by-line inventory of every constant, field, method, type, script, and configuration file.\n\n## Development\n\n### Building\n\n```bash\nnpm install\nnpm run build\n```\n\n### Type Checking\n\n```bash\nnpm run build:check\n```\n\n### Smoke Test\n\nRun the smoke test to verify the SDK works with your credentials:\n\n```bash\n# With API key\nREISIFT_API_KEY=your_api_key npm run smoke-test\n\n# Or with email/password\nREISIFT_EMAIL=you@example.com REISIFT_PASSWORD=xxx npm run smoke-test\n```\n\n## License\n\nISC\n","readmeFilename":"README.md","homepage":"https://github.com/danicanod/reisift-sdk#readme","repository":{"type":"git","url":"git+https://github.com/danicanod/reisift-sdk.git"},"author":{"name":"Daniel Sanchez"},"bugs":{"url":"https://github.com/danicanod/reisift-sdk/issues"}}