{"_id":"@cra-risk-management/sdk","_rev":"6-09514cf206c1a73e6a4ea83245ae5e9e","name":"@cra-risk-management/sdk","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@cra-risk-management/sdk","version":"1.0.0","keywords":["sdk","api","client","cra","risk-management"],"author":{"name":"CRA Risk Management"},"license":"MIT","_id":"@cra-risk-management/sdk@1.0.0","maintainers":[{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"}],"homepage":"https://github.com/CRA-Risk-Management/sdk-js#readme","bugs":{"url":"https://github.com/CRA-Risk-Management/sdk-js/issues"},"dist":{"shasum":"bb9670154c238d0d94315d884d26c39fef713e58","tarball":"https://registry.npmjs.org/@cra-risk-management/sdk/-/sdk-1.0.0.tgz","fileCount":14,"integrity":"sha512-NsOfD4CilmclUWEKRKh9s7p3meQ7maAdx14umAj73UYdJEgTF0SE2gqw6LFIdzWkC5qi0qJv9mLtATqjp3WTTw==","signatures":[{"sig":"MEUCIGAlnAvNTJl5F5lBdviBO2/wqcxk7SsmA6IttF4IB0umAiEAl7teWaPJNUII6p4p2CvI6w+hDvd+s0AyAUmZ1EdOSM8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34521},"main":"src/client.js","engines":{"node":">=14.0.0"},"gitHead":"77323c9b57f822196f82158ed72f38446859a575","_npmUser":{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"},"repository":{"url":"git+https://github.com/CRA-Risk-Management/sdk-js.git","type":"git"},"_npmVersion":"11.7.0","description":"Software Development Kit for JS apps - CRA Risk Management API Client","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node-fetch":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.0_1767132379416_0.6798329849586473","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@cra-risk-management/sdk","version":"1.0.1","keywords":["sdk","api","client","cra","risk-management"],"author":{"name":"CRA Risk Management"},"license":"MIT","_id":"@cra-risk-management/sdk@1.0.1","maintainers":[{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"}],"homepage":"https://github.com/CRA-Risk-Management/sdk-js#readme","bugs":{"url":"https://github.com/CRA-Risk-Management/sdk-js/issues"},"dist":{"shasum":"df0d1ef8ecbe2ff76a56e70a2b5c1ab3cf40cb02","tarball":"https://registry.npmjs.org/@cra-risk-management/sdk/-/sdk-1.0.1.tgz","fileCount":24,"integrity":"sha512-W0A7ZI75EJdT+TKqXnqbTCrhQnSk/5QF9GXB+3bYzXxWRerc74yIUAvpgRLUa7t0ykyi1bu41JakiJwbm7TdaA==","signatures":[{"sig":"MEQCIDHT42GbshtCjavDIUbRNTjCfVDYDGWE2whA48TwR9oTAiAiAyaha+jRHop8bqnAtJlYTLu3bRREWQRc2m+WJ4OJjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49870},"main":"src/client.js","engines":{"node":">=14.0.0"},"gitHead":"1ff3cd7bc99fc773bbb3f7528ba31462a6d228f1","scripts":{"build:types":"tsc"},"_npmUser":{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"},"repository":{"url":"git+https://github.com/CRA-Risk-Management/sdk-js.git","type":"git"},"_npmVersion":"11.7.0","description":"Software Development Kit for JS apps - CRA Risk Management API Client","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node-fetch":"^2.7.0","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.1_1767193570744_0.8178525789502047","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@cra-risk-management/sdk","version":"1.0.2","keywords":["sdk","api","client","cra","risk-management"],"author":{"name":"CRA Risk Management"},"license":"MIT","_id":"@cra-risk-management/sdk@1.0.2","maintainers":[{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"}],"homepage":"https://github.com/CRA-Risk-Management/sdk-js#readme","bugs":{"url":"https://github.com/CRA-Risk-Management/sdk-js/issues"},"dist":{"shasum":"d70f2dd1b9ae7073f60b86a264887ffed645a10f","tarball":"https://registry.npmjs.org/@cra-risk-management/sdk/-/sdk-1.0.2.tgz","fileCount":24,"integrity":"sha512-aFKEvW2z7k/z7m4q4fZMD9mxKE5qOR60hlC9faiczRY/kP0FeFuUPcS+dK5zCqiSpC5DS1hDb4xnqX80aT2aDg==","signatures":[{"sig":"MEYCIQDK225wqs28n2Yz5qdHc4InKBd1M8DgmkUlISgkDpFSewIhAPS4RBo6g6jBL8nzPD7PzBY5zSfZaarFX3pL6bW/F0+s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49902},"main":"src/client.js","types":"dist/client.d.ts","engines":{"node":">=14.0.0"},"gitHead":"1ff3cd7bc99fc773bbb3f7528ba31462a6d228f1","scripts":{"build:types":"tsc"},"_npmUser":{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"},"repository":{"url":"git+https://github.com/CRA-Risk-Management/sdk-js.git","type":"git"},"_npmVersion":"11.7.0","description":"Software Development Kit for JS apps - CRA Risk Management API Client","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node-fetch":"^2.7.0","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.2_1767194486810_0.8669991769631882","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@cra-risk-management/sdk","version":"1.0.3","keywords":["sdk","api","client","cra","risk-management"],"author":{"name":"CRA Risk Management"},"license":"MIT","_id":"@cra-risk-management/sdk@1.0.3","maintainers":[{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"}],"homepage":"https://github.com/CRA-Risk-Management/sdk-js#readme","bugs":{"url":"https://github.com/CRA-Risk-Management/sdk-js/issues"},"dist":{"shasum":"fde579ce855061c14b8165cb34fa7a9495dd619d","tarball":"https://registry.npmjs.org/@cra-risk-management/sdk/-/sdk-1.0.3.tgz","fileCount":34,"integrity":"sha512-dgGYCPDctcxB/rCvOkddRTERNavGt28xM74UuxQANE6sGNR3c5NDwE4Fn4NVna/284kLc2Iu6CZAljdZgp4xzA==","signatures":[{"sig":"MEYCIQDKQ2dl4DyzmynDlgmJF7cEoy+35+zlecSyfZUAA34BlgIhALireDZBy5vCm7hCTlLV+TC13IIHBCQ22AIFSotlR5cr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57763},"main":"src/client.js","types":"dist/client.d.ts","engines":{"node":">=14.0.0"},"gitHead":"7fa662f646113f3cdf8c3c656beb331a39eec395","scripts":{"build:types":"tsc"},"_npmUser":{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"},"repository":{"url":"git+https://github.com/CRA-Risk-Management/sdk-js.git","type":"git"},"_npmVersion":"11.7.0","description":"Software Development Kit for JS apps - CRA Risk Management API Client","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node-fetch":"^2.7.0","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.3_1767541356218_0.6307577824772932","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@cra-risk-management/sdk","version":"1.0.4","keywords":["sdk","api","client","cra","risk-management"],"author":{"name":"CRA Risk Management"},"license":"MIT","_id":"@cra-risk-management/sdk@1.0.4","maintainers":[{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"}],"homepage":"https://github.com/CRA-Risk-Management/sdk-js#readme","bugs":{"url":"https://github.com/CRA-Risk-Management/sdk-js/issues"},"dist":{"shasum":"6abed45e31db0f30c21fc673e7a57283fc0a97a8","tarball":"https://registry.npmjs.org/@cra-risk-management/sdk/-/sdk-1.0.4.tgz","fileCount":34,"integrity":"sha512-uvIjuV677Vzxg60lO3nMZJmur50mRuWXZAiebBOZdmDBc1YS3H/joV6lP9bj9BPprDZZQIbv2Ej8AHUKiLkGXg==","signatures":[{"sig":"MEQCIAniyhW/WM5EbKaL8EU2KZtWT48TK1dP/EesE2xmhyvJAiBS84ZtJDFDq3yH7EZ9E2Z96D/OKVWHQZW+lkg+GSpoLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58034},"main":"src/client.js","types":"dist/client.d.ts","engines":{"node":">=14.0.0"},"gitHead":"441c8e867a9473dd76b52963d94b8d1ff7e44e46","scripts":{"build:types":"tsc"},"_npmUser":{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"},"repository":{"url":"git+https://github.com/CRA-Risk-Management/sdk-js.git","type":"git"},"_npmVersion":"11.7.0","description":"Software Development Kit for JS apps - CRA Risk Management API Client","directories":{},"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"node-fetch":"^2.7.0","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.4_1767619813528_0.624160693514711","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@cra-risk-management/sdk","version":"1.0.5","description":"Software Development Kit for JS apps - CRA Risk Management API Client","main":"src/client.js","types":"dist/client.d.ts","keywords":["sdk","api","client","cra","risk-management"],"author":{"name":"CRA Risk Management"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/CRA-Risk-Management/sdk-js.git"},"bugs":{"url":"https://github.com/CRA-Risk-Management/sdk-js/issues"},"homepage":"https://github.com/CRA-Risk-Management/sdk-js#readme","scripts":{"build:types":"tsc"},"engines":{"node":">=14.0.0"},"publishConfig":{"access":"public"},"devDependencies":{"node-fetch":"^2.7.0","typescript":"^5.9.3"},"gitHead":"db6a06cae2a6e8b8d9571f24189754e67e4feaf1","_id":"@cra-risk-management/sdk@1.0.5","_nodeVersion":"24.11.1","_npmVersion":"11.7.0","dist":{"integrity":"sha512-Cp8xaTJUW1QRcPJNID8XgdyBo+KiYFSII9cvyjYhDCgwPzfEqXtV204shV2czqn3hE9EJZlmH0rc4INiiBQTUw==","shasum":"fcd3bae823bf08c0a88914751646d8722615c7c5","tarball":"https://registry.npmjs.org/@cra-risk-management/sdk/-/sdk-1.0.5.tgz","fileCount":37,"unpackedSize":72877,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD9gxOMUCC8ZQHT92tIV3cLKVU/T1sMuiw4QIWLpq0/YgIgNPb+jY4HPEgR/RcaUTlSRR69YXI7tiAUETYf4iAX/v8="}]},"_npmUser":{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"},"directories":{},"maintainers":[{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.0.5_1768311264641_0.7157486796675292"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-30T22:06:19.251Z","modified":"2026-01-13T13:34:24.994Z","1.0.0":"2025-12-30T22:06:19.556Z","1.0.1":"2025-12-31T15:06:10.892Z","1.0.2":"2025-12-31T15:21:26.975Z","1.0.3":"2026-01-04T15:42:36.384Z","1.0.4":"2026-01-05T13:30:13.672Z","1.0.5":"2026-01-13T13:34:24.781Z"},"bugs":{"url":"https://github.com/CRA-Risk-Management/sdk-js/issues"},"author":{"name":"CRA Risk Management"},"license":"MIT","homepage":"https://github.com/CRA-Risk-Management/sdk-js#readme","keywords":["sdk","api","client","cra","risk-management"],"repository":{"type":"git","url":"git+https://github.com/CRA-Risk-Management/sdk-js.git"},"description":"Software Development Kit for JS apps - CRA Risk Management API Client","maintainers":[{"name":"sebnarvaez19","email":"sebnarvaez19@gmail.com"}],"readme":"# CRA Risk Management SDK for JavaScript\r\n\r\nA comprehensive JavaScript SDK for interacting with the CRA Risk Management API. This SDK provides a simple and intuitive interface for managing municipalities, critical points, users, and related resources.\r\n\r\n## Installation\r\n\r\nInstall the package via npm:\r\n\r\n```bash\r\nnpm install @cra-risk-management/sdk-js\r\n```\r\n\r\n## Quick Start\r\n\r\n### CommonJS\r\n\r\n```javascript\r\nconst Client = require('@cra-risk-management/sdk-js');\r\n\r\n// Initialize the client\r\nconst client = new Client({\r\n  baseURL: 'https://your-api-url.com',\r\n  username: 'your-username',\r\n  password: 'your-password'\r\n});\r\n\r\n// Authenticate (happens automatically when needed)\r\nawait client.login('username', 'password');\r\n\r\n// Use resource clients\r\nconst municipalities = await client.municipalities.list();\r\nconsole.log(municipalities);\r\n```\r\n\r\n### ES Modules\r\n\r\n```javascript\r\nimport Client from '@cra-risk-management/sdk-js';\r\n\r\n// Initialize the client\r\nconst client = new Client({\r\n  baseURL: 'https://your-api-url.com',\r\n  username: 'your-username',\r\n  password: 'your-password'\r\n});\r\n\r\n// Authenticate (happens automatically when needed)\r\nawait client.login('username', 'password');\r\n\r\n// Use resource clients\r\nconst municipalities = await client.municipalities.list();\r\nconsole.log(municipalities);\r\n```\r\n\r\n## Authentication\r\n\r\nThe SDK supports two authentication methods:\r\n\r\n### 1. Username and Password\r\n\r\n```javascript\r\nconst client = new Client({\r\n  baseURL: 'https://your-api-url.com',\r\n  username: 'your-username',\r\n  password: 'your-password'\r\n});\r\n\r\n// Login explicitly\r\nawait client.login('username', 'password');\r\n\r\n// Or set credentials and let the SDK authenticate automatically\r\nclient.setCredentials('username', 'password');\r\n```\r\n\r\n### 2. Token-based Authentication\r\n\r\n```javascript\r\nconst client = new Client({\r\n  baseURL: 'https://your-api-url.com'\r\n});\r\n\r\n// Set token directly (if you already have one)\r\nclient.setToken('your-access-token', 3600); // token and expiry in seconds\r\n```\r\n\r\nThe SDK automatically handles token expiration and re-authentication when using username/password credentials.\r\n\r\n## Configuration Options\r\n\r\nWhen creating a new client instance, you can provide the following options:\r\n\r\n```javascript\r\nconst client = new Client({\r\n  baseURL: 'https://your-api-url.com',    // Required: Base URL of the API\r\n  username: 'user',                        // Optional: Username for authentication\r\n  password: 'pass',                        // Optional: Password for authentication\r\n  authEndpoint: '/users/token',           // Optional: Custom auth endpoint (default: /users/token)\r\n  timeout: 30000,                          // Optional: Request timeout in ms (default: 30000)\r\n  maxRetries: 1                            // Optional: Max retry attempts (default: 1)\r\n});\r\n```\r\n\r\n## API Reference\r\n\r\n### Client Methods\r\n\r\n#### Authentication Methods\r\n\r\n- **`login(username, password)`** - Authenticate with username and password\r\n  ```javascript\r\n  const token = await client.login('username', 'password');\r\n  ```\r\n\r\n- **`logout()`** - Clear credentials and token\r\n  ```javascript\r\n  client.logout();\r\n  ```\r\n\r\n- **`setCredentials(username, password)`** - Set credentials without authenticating\r\n  ```javascript\r\n  client.setCredentials('username', 'password');\r\n  ```\r\n\r\n- **`setToken(token, expiresIn)`** - Set token directly\r\n  ```javascript\r\n  client.setToken('your-token', 3600);\r\n  ```\r\n\r\n- **`isAuthenticated()`** - Check if client has a valid token\r\n  ```javascript\r\n  if (client.isAuthenticated()) {\r\n    // Client is authenticated\r\n  }\r\n  ```\r\n\r\n#### HTTP Methods\r\n\r\n- **`get(endpoint, params)`** - Make a GET request\r\n  ```javascript\r\n  const data = await client.get('/municipalities/items', { limit: 10 });\r\n  ```\r\n\r\n- **`post(endpoint, data)`** - Make a POST request\r\n  ```javascript\r\n  const result = await client.post('/municipalities', { name: 'New Municipality' });\r\n  ```\r\n\r\n- **`patch(endpoint, data)`** - Make a PATCH request\r\n  ```javascript\r\n  const updated = await client.patch('/municipalities/items/1', { name: 'Updated Name' });\r\n  ```\r\n\r\n- **`delete(endpoint)`** - Make a DELETE request\r\n  ```javascript\r\n  await client.delete('/municipalities/items/1');\r\n  ```\r\n\r\n- **`confirm(endpoint, id)`** - Confirm a resource\r\n  ```javascript\r\n  await client.confirm('/critical_points', 123);\r\n  ```\r\n\r\n### Resource Clients\r\n\r\n#### Municipalities\r\n\r\nAccess via `client.municipalities`:\r\n\r\n- **`list(params)`** - List all municipalities\r\n  ```javascript\r\n  const municipalities = await client.municipalities.list({ limit: 10 });\r\n  ```\r\n\r\n- **`get(id, params)`** - Get a municipality by ID\r\n  ```javascript\r\n  const municipality = await client.municipalities.get(1);\r\n  ```\r\n\r\n- **`create(data)`** - Create a new municipality\r\n  ```javascript\r\n  const newMunicipality = await client.municipalities.create({\r\n    name: 'New Municipality',\r\n    code: 'NM001'\r\n  });\r\n  ```\r\n\r\n- **`update(id, data)`** - Update a municipality\r\n  ```javascript\r\n  const updated = await client.municipalities.update(1, { name: 'Updated Name' });\r\n  ```\r\n\r\n- **`delete(id)`** - Delete a municipality\r\n  ```javascript\r\n  await client.municipalities.delete(1);\r\n  ```\r\n\r\n#### Critical Points\r\n\r\nAccess via `client.criticalPoints`:\r\n\r\n- **`list(params)`** - List all critical points\r\n  ```javascript\r\n  const points = await client.criticalPoints.list({\r\n    event_type_id: 1,\r\n    municipality_id: 5,\r\n    confirmed: true\r\n  });\r\n  ```\r\n\r\n- **`get(id, params)`** - Get a critical point by ID\r\n  ```javascript\r\n  const point = await client.criticalPoints.get(123);\r\n  ```\r\n\r\n- **`create(data)`** - Create a new critical point\r\n  ```javascript\r\n  const newPoint = await client.criticalPoints.create({\r\n    name: 'Critical Point 1',\r\n    latitude: 40.7128,\r\n    longitude: -74.0060\r\n  });\r\n  ```\r\n\r\n- **`update(id, data)`** - Update a critical point\r\n  ```javascript\r\n  const updated = await client.criticalPoints.update(123, { confirmed: true });\r\n  ```\r\n\r\n- **`delete(id)`** - Delete a critical point\r\n  ```javascript\r\n  await client.criticalPoints.delete(123);\r\n  ```\r\n\r\n##### Critical Point Attributes\r\n\r\nAccess nested attribute resources via `client.criticalPoints.attributes`:\r\n\r\n**Event Zones** - `client.criticalPoints.attributes.eventZones`\r\n- `list(params)` - List event zones\r\n- `get(id, params)` - Get event zone by ID\r\n- `create(data)` - Create event zone\r\n- `update(id, data)` - Update event zone\r\n- `delete(id)` - Delete event zone\r\n\r\n**Event Types** - `client.criticalPoints.attributes.eventTypes`\r\n- `list(params)` - List event types\r\n- `get(id, params)` - Get event type by ID\r\n- `create(data)` - Create event type\r\n- `update(id, data)` - Update event type\r\n- `delete(id)` - Delete event type\r\n\r\n**Observations** - `client.criticalPoints.attributes.observations`\r\n- `list(params)` - List observations\r\n- `get(id, params)` - Get observation by ID\r\n- `create(data)` - Create observation\r\n- `update(id, data)` - Update observation\r\n- `delete(id)` - Delete observation\r\n\r\n#### Users\r\n\r\nAccess via `client.users`:\r\n\r\n- **`list(params)`** - List all users\r\n  ```javascript\r\n  const users = await client.users.list();\r\n  ```\r\n\r\n- **`get(id, params)`** - Get a user by ID\r\n  ```javascript\r\n  const user = await client.users.get(1);\r\n  ```\r\n\r\n- **`create(data)`** - Create a new user\r\n  ```javascript\r\n  const newUser = await client.users.create({\r\n    username: 'newuser',\r\n    email: 'newuser@example.com'\r\n  });\r\n  ```\r\n\r\n- **`update(id, data)`** - Update a user\r\n  ```javascript\r\n  const updated = await client.users.update(1, { email: 'newemail@example.com' });\r\n  ```\r\n\r\n- **`delete(id)`** - Delete a user\r\n  ```javascript\r\n  await client.users.delete(1);\r\n  ```\r\n\r\n## Examples\r\n\r\n### Complete Usage Example\r\n\r\n```javascript\r\nconst Client = require('@cra-risk-management/sdk-js');\r\n\r\nasync function main() {\r\n  // Initialize client\r\n  const client = new Client({\r\n    baseURL: 'https://api.example.com',\r\n    username: 'your-username',\r\n    password: 'your-password',\r\n    timeout: 30000\r\n  });\r\n\r\n  try {\r\n    // Authenticate\r\n    await client.login('username', 'password');\r\n    console.log('Authenticated successfully');\r\n\r\n    // List municipalities\r\n    const municipalities = await client.municipalities.list({ limit: 5 });\r\n    console.log('Municipalities:', municipalities);\r\n\r\n    // Create a critical point\r\n    const newPoint = await client.criticalPoints.create({\r\n      name: 'Flood Risk Area',\r\n      latitude: 40.7128,\r\n      longitude: -74.0060,\r\n      event_type_id: 1,\r\n      municipality_id: 5\r\n    });\r\n    console.log('Created critical point:', newPoint);\r\n\r\n    // Update the critical point\r\n    const updated = await client.criticalPoints.update(newPoint.id, {\r\n      confirmed: true\r\n    });\r\n    console.log('Updated critical point:', updated);\r\n\r\n    // List event zones\r\n    const eventZones = await client.criticalPoints.attributes.eventZones.list();\r\n    console.log('Event zones:', eventZones);\r\n\r\n  } catch (error) {\r\n    console.error('Error:', error.message);\r\n  } finally {\r\n    // Logout when done\r\n    client.logout();\r\n  }\r\n}\r\n\r\nmain();\r\n```\r\n\r\n### Error Handling\r\n\r\n```javascript\r\ntry {\r\n  const municipalities = await client.municipalities.list();\r\n} catch (error) {\r\n  if (error.status === 404) {\r\n    console.error('Resource not found');\r\n  } else if (error.status === 401) {\r\n    console.error('Authentication failed');\r\n  } else if (error.status >= 500) {\r\n    console.error('Server error');\r\n  } else {\r\n    console.error('Error:', error.message);\r\n  }\r\n}\r\n```\r\n\r\n### Using Query Parameters\r\n\r\n```javascript\r\n// List with filtering\r\nconst filteredPoints = await client.criticalPoints.list({\r\n  event_type_id: 1,\r\n  municipality_id: 5,\r\n  confirmed: true,\r\n  from_datetime: '2025-01-01',\r\n  to_datetime: '2025-12-31'\r\n});\r\n\r\n// List with pagination\r\nconst paginatedMunicipalities = await client.municipalities.list({\r\n  limit: 20,\r\n  offset: 40\r\n});\r\n```\r\n\r\n## Requirements\r\n\r\n- Node.js >= 14.0.0\r\n- npm or yarn package manager\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n### Development Setup\r\n\r\n1. Clone the repository\r\n2. Install dependencies: `npm install`\r\n3. Run tests: `npm test`\r\n4. Run tests in watch mode: `npm run test:watch`\r\n5. Generate coverage report: `npm run test:coverage`\r\n\r\n## Support\r\n\r\nFor issues, questions, or contributions, please visit:\r\n- GitHub Issues: https://github.com/CRA-Risk-Management/sdk-js/issues\r\n- GitHub Repository: https://github.com/CRA-Risk-Management/sdk-js\r\n\r\n---\r\n\r\nMade with ❤️ by CRA Risk Management\r\n","readmeFilename":"README.md"}