@wilnertech/halopsa-mcp-server 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.env.example CHANGED
@@ -1,19 +1,18 @@
1
- # HaloPSA MCP Server Environment Configuration
2
- # Copy this file to .env and fill in your actual values
3
- # NEVER commit the .env file to git
4
-
5
- # HaloPSA OAuth2 Client ID (required)
6
- # Get from: HaloPSA > Configuration > Integrations > API Applications
7
- HALOPSA_CLIENT_ID=your-client-id-here
8
-
9
- # HaloPSA OAuth2 Client Secret (required)
10
- HALOPSA_CLIENT_SECRET=your-client-secret-here
11
-
12
- # HaloPSA Base URL (optional)
13
- # Default: https://support.wilnertech.com
14
- # Change if using a different HaloPSA instance
15
- HALOPSA_BASE_URL=https://support.wilnertech.com
16
-
17
- # Test Client ID (required for smoke tests only)
18
- # A client ID to scope test resource creation/cleanup
19
- # HALOPSA_TEST_CLIENT_ID=123
1
+ # HaloPSA MCP Server Environment Configuration
2
+ # Copy this file to .env and fill in your actual values
3
+ # NEVER commit the .env file to git
4
+
5
+ # HaloPSA OAuth2 Client ID (required)
6
+ # Get from: HaloPSA > Configuration > Integrations > API Applications
7
+ HALOPSA_CLIENT_ID=your-client-id-here
8
+
9
+ # HaloPSA OAuth2 Client Secret (required)
10
+ HALOPSA_CLIENT_SECRET=your-client-secret-here
11
+
12
+ # HaloPSA Base URL (required)
13
+ # Your HaloPSA instance URL (e.g., https://your-instance.halopsa.com)
14
+ HALOPSA_BASE_URL=https://your-instance.halopsa.com
15
+
16
+ # Test Client ID (required for smoke tests only)
17
+ # A client ID to scope test resource creation/cleanup
18
+ # HALOPSA_TEST_CLIENT_ID=123
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 WilnerTech
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 halopsa-mcp-server contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,270 +1,205 @@
1
- # HaloPSA MCP Server
2
-
3
- Model Context Protocol server for HaloPSA API integration - WilnerTech billing backbone.
4
-
5
- ## Critical Business Context
6
-
7
- **HaloPSA is WilnerTech's billing backbone.** Asset and user counts are automatically pulled from HaloPSA for billing calculations.
8
-
9
- - **Accurate data = Accurate billing = Revenue protection**
10
- - **Duplicates = Billing errors = Revenue loss**
11
- - **Only ACTIVE assets (status_id=1) count toward billing**
12
- - **Only ACTIVE users (inactive=false) count toward billing**
13
-
14
- ## Features
15
-
16
- - 31 tools for managing HaloPSA data
17
- - OAuth2 Client Credentials authentication with automatic token refresh
18
- - Rate limiting with exponential backoff (60 requests/minute)
19
- - In-memory caching with configurable TTLs
20
- - Token optimization via format_options (compact/standard/detailed modes)
21
- - Deduplication tools with confidence scoring
22
- - Custom field inspection for assets
23
-
24
- ## Installation
25
-
26
- ```bash
27
- cd .claude/mcp-servers/halopsa
28
- npm install
29
- npm run build
30
- ```
31
-
32
- ## Configuration
33
-
34
- ### HaloPSA API Agent Setup (Security Best Practice)
35
-
36
- **WilnerTech uses a dedicated API-only agent for Claude MCP integration** following HaloPSA security best practices:
37
-
38
- 1. **Create Dedicated Agent in HaloPSA:**
39
- - Navigate to: Configuration > Agents & Teams > Agents
40
- - Create new agent: `claude_mcp` (API-only account)
41
- - Agent Type: API Only
42
- - Status: Active
43
- - Generate OAuth2 Client Credentials
44
-
45
- 2. **Security Benefits:**
46
- - **Audit Trail:** All API actions appear under `claude_mcp` agent in HaloPSA audit logs
47
- - **Principle of Least Privilege:** Grant only necessary permissions (read-only for Phase 1)
48
- - **Easy Revocation:** Disable `claude_mcp` agent to immediately terminate MCP access
49
- - **No Personal Credential Exposure:** Keeps personal HaloPSA accounts separate from automation
50
-
51
- 3. **Configure Permissions (Minimal Approach):**
52
-
53
- **Phase 1 - Read-Only Inspection (✅ Current):**
54
- - `read:assets` - Asset inspection, custom field analysis, deduplication
55
- - `read:customers` - User/site/client inspection and deduplication (includes sites and clients)
56
-
57
- **What Works with Phase 1 Permissions:**
58
- - ✅ All asset inspection tools (list, search, get, batch)
59
- - Asset deduplication tools (find matches, scan duplicates)
60
- - ✅ Custom field analysis tools
61
- - ✅ All user/site/client inspection tools
62
- - ✅ User/site deduplication tools
63
- - ✅ Reference data tools (asset types, statuses)
64
-
65
- **Phase 2 - Write Operations (When Ready):**
66
- - `edit:assets` - Enables create/update/delete asset operations (3 tools)
67
- - `edit:customers` - Enables create/update user/site operations (4 tools)
68
-
69
- **Note:** Start minimal and expand permissions as needed. All 31 tools are implemented; write operations will return permission errors until Phase 2 permissions are granted.
70
-
71
- ### Environment Variables
72
-
73
- | Variable | Required | Description |
74
- |----------|----------|-------------|
75
- | `HALOPSA_CLIENT_ID` | Yes | OAuth2 Client ID from `claude_mcp` agent |
76
- | `HALOPSA_CLIENT_SECRET` | Yes | OAuth2 Client Secret from `claude_mcp` agent |
77
- | `HALOPSA_BASE_URL` | No | API base URL (default: `https://support.wilnertech.com`) |
78
-
79
- **Credential Storage:** Store credentials in ITGlue under:
80
- - Location: `Wilner Tech Org > 06 - Authentication - Encryption Keys`
81
- - Name: `API - HaloPSA - claude_mcp Agent`
82
- - Fields:
83
- - Username: OAuth2 Client ID
84
- - Password: OAuth2 Client Secret
85
- - URL: `https://support.wilnertech.com`
86
-
87
- ### Claude Desktop Configuration
88
-
89
- Add to `%APPDATA%\Claude\claude_desktop_config.json` (Windows) or `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
90
-
91
- ```json
92
- {
93
- "mcpServers": {
94
- "halopsa": {
95
- "command": "node",
96
- "args": ["C:/Users/ywilner/OneDrive - Wilner Tech Inc/Documents/WTECH - Script Repository/.claude/mcp-servers/halopsa/dist/index.js"],
97
- "env": {
98
- "HALOPSA_CLIENT_ID": "claude_mcp_client_id_here",
99
- "HALOPSA_CLIENT_SECRET": "claude_mcp_client_secret_here",
100
- "HALOPSA_BASE_URL": "https://support.wilnertech.com"
101
- }
102
- }
103
- }
104
- }
105
- ```
106
-
107
- **Security Note:** These credentials are for the dedicated `claude_mcp` agent, not personal credentials. All actions are audited under the `claude_mcp` agent in HaloPSA.
108
-
109
- ## Tools Reference
110
-
111
- ### Asset Tools (11)
112
-
113
- | Tool | Description |
114
- |------|-------------|
115
- | `list_halopsa_assets` | List assets with filtering, caching (1min TTL) |
116
- | `get_halopsa_asset` | Get single asset with custom fields |
117
- | `search_halopsa_assets_by_serial` | Search by serial number (key_field) |
118
- | `search_halopsa_assets_by_hostname` | Search by hostname (key_field2) |
119
- | `create_halopsa_asset` | Create new asset |
120
- | `update_halopsa_asset` | Update existing asset |
121
- | `delete_halopsa_asset` | Delete asset |
122
- | `list_halopsa_asset_custom_fields` | Inspect custom fields for an asset |
123
- | `get_halopsa_asset_field_schema` | Analyze custom field definitions |
124
- | `find_halopsa_asset_match` | Deduplication with confidence scoring |
125
- | `scan_halopsa_asset_duplicates` | Scan for duplicate assets |
126
-
127
- ### User Tools (7)
128
-
129
- | Tool | Description |
130
- |------|-------------|
131
- | `list_halopsa_users` | List users with filtering, caching (1min TTL) |
132
- | `get_halopsa_user` | Get single user with custom fields |
133
- | `search_halopsa_users_by_email` | Search by email address |
134
- | `create_halopsa_user` | Create new user |
135
- | `update_halopsa_user` | Update existing user |
136
- | `find_halopsa_user_match` | Deduplication with confidence scoring |
137
- | `scan_halopsa_user_duplicates` | Scan for duplicate users |
138
-
139
- ### Site Tools (4)
140
-
141
- | Tool | Description |
142
- |------|-------------|
143
- | `list_halopsa_sites` | List sites with caching (5min TTL) |
144
- | `get_halopsa_site` | Get single site |
145
- | `create_halopsa_site` | Create new site |
146
- | `find_halopsa_site_match` | Deduplication with fuzzy matching |
147
-
148
- ### Client Tools (3)
149
-
150
- | Tool | Description |
151
- |------|-------------|
152
- | `list_halopsa_clients` | List clients with caching (5min TTL) |
153
- | `get_halopsa_client` | Get single client |
154
- | `search_halopsa_clients` | Search clients by name |
155
-
156
- ### Reference Data Tools (3)
157
-
158
- | Tool | Description |
159
- |------|-------------|
160
- | `list_halopsa_asset_types` | List asset types (1hr cache) |
161
- | `list_halopsa_asset_statuses` | List statuses with billing notes |
162
- | `list_halopsa_contact_types` | List contact types (1hr cache) |
163
-
164
- ### Batch Operations Tools (3)
165
-
166
- | Tool | Description |
167
- |------|-------------|
168
- | `get_halopsa_assets_batch` | Get multiple assets (max 50) |
169
- | `get_halopsa_users_batch` | Get multiple users (max 50) |
170
- | `get_halopsa_sites_batch` | Get multiple sites (max 50) |
171
-
172
- ## Deduplication Algorithms
173
-
174
- ### Asset Deduplication
175
-
176
- | Match Type | Confidence | Action |
177
- |------------|------------|--------|
178
- | Exact serial number | 100% | Auto-update |
179
- | Hostname only (serial mismatch) | 85% | Manual review |
180
- | No match | 0% | Create new |
181
-
182
- ### User Deduplication
183
-
184
- | Match Type | Confidence | Action |
185
- |------------|------------|--------|
186
- | Exact email | 100% | Auto-update |
187
- | UPN match (Entra) | 95% | Auto-update |
188
- | Username only | 70% | Manual review |
189
- | No match | 0% | Create new |
190
-
191
- ### Site Deduplication
192
-
193
- | Match Type | Confidence | Action |
194
- |------------|------------|--------|
195
- | Exact name | 100% | Auto-update |
196
- | Fuzzy name + address | 95% | Auto-update |
197
- | Fuzzy name only | 85% | Manual review |
198
- | No match | 0% | Create new |
199
-
200
- ## Caching TTLs
201
-
202
- | Data Type | TTL | Rationale |
203
- |-----------|-----|-----------|
204
- | Assets | 1 min | Billing-critical, frequent changes |
205
- | Users | 1 min | Billing-critical, frequent changes |
206
- | Sites | 5 min | Moderate change rate |
207
- | Clients | 5 min | Moderate change rate |
208
- | Reference data | 1 hour | Rarely changes |
209
-
210
- ## Token Optimization
211
-
212
- All tools support `format_options` for reducing response size:
213
-
214
- ```json
215
- {
216
- "format_options": {
217
- "format": "compact",
218
- "fields": ["id", "name", "status_id"],
219
- "omit_empty": true
220
- }
221
- }
222
- ```
223
-
224
- **Formats:**
225
- - `compact`: Minimal fields (id, name, status)
226
- - `standard`: Default fields (no pretty-printing)
227
- - `detailed`: All fields with pretty-printing
228
-
229
- ## Rate Limiting
230
-
231
- - **Limit:** 60 requests/minute per client_id
232
- - **Auto-throttling:** 1 second minimum between requests
233
- - **Retry:** Exponential backoff on 429 errors (1s, 2s, 4s)
234
- - **Token refresh:** 5 minutes before expiration
235
-
236
- ## Error Handling
237
-
238
- The server provides detailed error responses:
239
-
240
- ```json
241
- {
242
- "error": true,
243
- "error_type": "RateLimitExceeded",
244
- "message": "HaloPSA API rate limit exceeded",
245
- "details": {
246
- "retry_after_seconds": 30
247
- },
248
- "suggestion": "Wait 30 seconds before retrying."
249
- }
250
- ```
251
-
252
- ## Development
253
-
254
- ```bash
255
- # Build
256
- npm run build
257
-
258
- # Watch mode
259
- npm run dev
260
-
261
- # Start server
262
- npm start
263
- ```
264
-
265
- ## Related Documentation
266
-
267
- - [HaloPSA API Documentation](/.claude/api-docs/halopsa.md)
268
- - [HaloPSA API Agent](/.claude/agents/halopsa-api-agent.md)
269
- - [ITGlue MCP Server](/.claude/mcp-servers/itglue/) (reference implementation)
270
- - [Official HaloPSA API Docs](https://halo.haloservicedesk.com/apidoc/index.html)
1
+ # HaloPSA MCP Server
2
+
3
+ Model Context Protocol server for HaloPSA API integration with asset, user, and site management.
4
+
5
+ ## Key Features
6
+
7
+ - **31 tools** for managing HaloPSA assets, users, sites, clients, and reference data
8
+ - **Deduplication** with confidence scoring to prevent duplicate billing entities
9
+ - **OAuth2 Client Credentials** authentication with automatic token refresh
10
+ - **Rate limiting** with exponential backoff (60 requests/minute)
11
+ - **In-memory caching** with configurable TTLs and cache prewarm on startup
12
+ - **Inflight request dedup** prevents concurrent duplicate API calls
13
+ - **Token optimization** via format_options (compact/standard/detailed modes)
14
+
15
+ ## Important: Billing Context
16
+
17
+ HaloPSA asset and user counts are commonly used for billing calculations in MSP environments.
18
+
19
+ - **Only ACTIVE assets (status_id=1) count toward billing**
20
+ - **Only ACTIVE users (inactive=false) count toward billing**
21
+ - **Duplicates = Billing errors** — use the deduplication tools before creating new records
22
+
23
+ ## Installation
24
+
25
+ ```bash
26
+ npm install halopsa-mcp-server
27
+ ```
28
+
29
+ Or from source:
30
+
31
+ ```bash
32
+ git clone https://github.com/SuperGaco/halopsa-mcp-server.git
33
+ cd halopsa-mcp-server
34
+ npm install
35
+ npm run build
36
+ ```
37
+
38
+ ## Configuration
39
+
40
+ ### Environment Variables
41
+
42
+ | Variable | Required | Description |
43
+ |----------|----------|-------------|
44
+ | `HALOPSA_CLIENT_ID` | Yes | OAuth2 Client ID |
45
+ | `HALOPSA_CLIENT_SECRET` | Yes | OAuth2 Client Secret |
46
+ | `HALOPSA_BASE_URL` | Yes | Your HaloPSA instance URL (e.g., `https://your-instance.halopsa.com`) |
47
+
48
+ ### HaloPSA API Setup
49
+
50
+ 1. In HaloPSA, navigate to **Configuration > Integrations > API Applications**
51
+ 2. Create a new application with OAuth2 Client Credentials
52
+ 3. Grant appropriate permissions:
53
+ - `read:assets` and `read:customers` for read-only access
54
+ - `edit:assets` and `edit:customers` for write operations
55
+ 4. Note the Client ID and Client Secret
56
+
57
+ ### Claude Desktop Configuration
58
+
59
+ Add to your Claude Desktop config:
60
+
61
+ ```json
62
+ {
63
+ "mcpServers": {
64
+ "halopsa": {
65
+ "command": "node",
66
+ "args": ["path/to/halopsa-mcp-server/dist/index.js"],
67
+ "env": {
68
+ "HALOPSA_CLIENT_ID": "your_client_id",
69
+ "HALOPSA_CLIENT_SECRET": "your_client_secret",
70
+ "HALOPSA_BASE_URL": "https://your-instance.halopsa.com"
71
+ }
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## Tools Reference
78
+
79
+ ### Asset Tools (11)
80
+
81
+ | Tool | Description |
82
+ |------|-------------|
83
+ | `list_halopsa_assets` | List assets with filtering, caching (1min TTL) |
84
+ | `get_halopsa_asset` | Get single asset with custom fields |
85
+ | `search_halopsa_assets_by_serial` | Search by serial number (key_field) |
86
+ | `search_halopsa_assets_by_hostname` | Search by hostname (key_field2) |
87
+ | `create_halopsa_asset` | Create new asset |
88
+ | `update_halopsa_asset` | Update existing asset |
89
+ | `delete_halopsa_asset` | Delete asset |
90
+ | `list_halopsa_asset_custom_fields` | Inspect custom fields for an asset |
91
+ | `get_halopsa_asset_field_schema` | Analyze custom field definitions |
92
+ | `find_halopsa_asset_match` | Deduplication with confidence scoring |
93
+ | `scan_halopsa_asset_duplicates` | Scan for duplicate assets |
94
+
95
+ ### User Tools (7)
96
+
97
+ | Tool | Description |
98
+ |------|-------------|
99
+ | `list_halopsa_users` | List users with filtering, caching (1min TTL) |
100
+ | `get_halopsa_user` | Get single user with custom fields |
101
+ | `search_halopsa_users_by_email` | Search by email address |
102
+ | `create_halopsa_user` | Create new user |
103
+ | `update_halopsa_user` | Update existing user |
104
+ | `find_halopsa_user_match` | Deduplication with confidence scoring |
105
+ | `scan_halopsa_user_duplicates` | Scan for duplicate users |
106
+
107
+ ### Site Tools (4)
108
+
109
+ | Tool | Description |
110
+ |------|-------------|
111
+ | `list_halopsa_sites` | List sites with caching (5min TTL) |
112
+ | `get_halopsa_site` | Get single site |
113
+ | `create_halopsa_site` | Create new site |
114
+ | `find_halopsa_site_match` | Deduplication with fuzzy matching |
115
+
116
+ ### Client Tools (3)
117
+
118
+ | Tool | Description |
119
+ |------|-------------|
120
+ | `list_halopsa_clients` | List clients with caching (5min TTL) |
121
+ | `get_halopsa_client` | Get single client |
122
+ | `search_halopsa_clients` | Search clients by name |
123
+
124
+ ### Reference Data Tools (3)
125
+
126
+ | Tool | Description |
127
+ |------|-------------|
128
+ | `list_halopsa_asset_types` | List asset types (1hr cache) |
129
+ | `list_halopsa_asset_statuses` | List statuses with billing notes |
130
+ | `list_halopsa_contact_types` | List contact types (1hr cache) |
131
+
132
+ ### Batch Operations Tools (3)
133
+
134
+ | Tool | Description |
135
+ |------|-------------|
136
+ | `get_halopsa_assets_batch` | Get multiple assets (max 50) |
137
+ | `get_halopsa_users_batch` | Get multiple users (max 50) |
138
+ | `get_halopsa_sites_batch` | Get multiple sites (max 50) |
139
+
140
+ ## Deduplication Algorithms
141
+
142
+ ### Asset Deduplication
143
+
144
+ | Match Type | Confidence | Action |
145
+ |------------|------------|--------|
146
+ | Exact serial number | 100% | Auto-update |
147
+ | Hostname only (serial mismatch) | 85% | Manual review |
148
+ | No match | 0% | Create new |
149
+
150
+ ### User Deduplication
151
+
152
+ | Match Type | Confidence | Action |
153
+ |------------|------------|--------|
154
+ | Exact email | 100% | Auto-update |
155
+ | UPN match (Entra) | 95% | Auto-update |
156
+ | Username only | 70% | Manual review |
157
+ | No match | 0% | Create new |
158
+
159
+ ### Site Deduplication
160
+
161
+ | Match Type | Confidence | Action |
162
+ |------------|------------|--------|
163
+ | Exact name | 100% | Auto-update |
164
+ | Fuzzy name + address | 95% | Auto-update |
165
+ | Fuzzy name only | 85% | Manual review |
166
+ | No match | 0% | Create new |
167
+
168
+ ## Token Optimization
169
+
170
+ All tools support `format_options` for reducing response size:
171
+
172
+ ```json
173
+ {
174
+ "format_options": {
175
+ "format": "compact",
176
+ "fields": ["id", "name", "status_id"],
177
+ "omit_empty": true
178
+ }
179
+ }
180
+ ```
181
+
182
+ **Formats:**
183
+ - `compact`: Minimal fields (id, name, status)
184
+ - `standard`: Default fields (no pretty-printing)
185
+ - `detailed`: All fields with pretty-printing
186
+
187
+ ## Rate Limiting
188
+
189
+ - **Limit:** 60 requests/minute per client_id
190
+ - **Auto-throttling:** 1 second minimum between requests
191
+ - **Retry:** Exponential backoff on 429 errors (1s, 2s, 4s)
192
+ - **Token refresh:** 5 minutes before expiration
193
+
194
+ ## Development
195
+
196
+ ```bash
197
+ npm run build # Build
198
+ npm run dev # Watch mode
199
+ npm start # Start server
200
+ npm run test:smoke # Run smoke tests (requires live API credentials)
201
+ ```
202
+
203
+ ## License
204
+
205
+ MIT
@@ -30,13 +30,13 @@ export class HaloPSAAPIClient {
30
30
  this.maxRetries = config.maxRetries ?? 3;
31
31
  this.retryDelay = config.retryDelay ?? 1000;
32
32
  // Create auth client (for token requests)
33
- // Auth server is at: baseUrl/auth (e.g., https://support.wilnertech.com/auth)
33
+ // Auth server is at: baseUrl/auth (e.g., https://your-instance.halopsa.com/auth)
34
34
  this.authClient = axios.create({
35
35
  baseURL: `${this.baseUrl}/auth`,
36
36
  timeout: 30000,
37
37
  });
38
38
  // Create API client (for data requests)
39
- // Resource server is at: baseUrl/api (e.g., https://support.wilnertech.com/api)
39
+ // Resource server is at: baseUrl/api (e.g., https://your-instance.halopsa.com/api)
40
40
  this.client = axios.create({
41
41
  baseURL: `${this.baseUrl}/api`,
42
42
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,YAAY,GACb,MAAM,aAAa,CAAC;AAuBrB,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAgB;IACtB,UAAU,CAAgB;IAC1B,QAAQ,CAAS;IACjB,YAAY,CAAS;IACrB,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,UAAU,CAAS;IAE3B,mBAAmB;IACX,WAAW,GAAkB,IAAI,CAAC;IAClC,cAAc,GAAW,CAAC,CAAC;IAC3B,kBAAkB,GAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,sCAAsC;IAE1F,gBAAgB;IACR,YAAY,GAAW,CAAC,CAAC;IACzB,eAAe,GAAW,CAAC,CAAC;IACnB,oBAAoB,GAAG,IAAI,CAAC,CAAC,2CAA2C;IAEzF,iCAAiC;IACzB,QAAQ,GAAkC,IAAI,GAAG,EAAE,CAAC;IAE5D,YAAY,MAA2B;QACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;QAE5C,0CAA0C;QAC1C,iFAAiF;QACjF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;YAC7B,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,OAAO;YAC/B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,wCAAwC;QACxC,mFAAmF;QACnF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM;YAC9B,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpD,+BAA+B;YAC/B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE9B,2BAA2B;YAC3B,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;YAE5D,2CAA2C;YAC3C,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAE7B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,KAAK,EAAE,KAAiB,EAAE,EAAE;YAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9E,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAE9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,QAAQ,EACR,MAAM,EACN;gBACE,OAAO,EAAE;oBACP,cAAc,EAAE,mCAAmC;iBACpD;aACF,CACF,CAAC;YAEF,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;YAC9C,4CAA4C;YAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEnE,OAAO,CAAC,KAAK,CACX,mDAAmD,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,EAAE,CACjG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,yBAAyB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5D,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC5D,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAE/D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,iBAAiB;oBACrD,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK;oBAC3B,KAAK,CAAC,OAAO,CAAC;gBAChB,MAAM,eAAe,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,eAAe,CAAC,+BAA+B,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,eAAe;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;QAExD,IAAI,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;YAC/D,sFAAsF;YACtF,yDAAyD;YACzD,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,KAAK,CAAC;YACnC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,KAAiB;QACzC,sFAAsF;QACtF,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,kBAAkB,CAAC,KAAc,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC;QAEhD,oCAAoC;QACpC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,6BAA6B;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YAExB,0CAA0C;YAC1C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;oBAClD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;oBAC9C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAU,CAAC;gBACpD,CAAC;gBAAC,MAAM,CAAC;oBACP,6CAA6C;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE1E,OAAO,CAAC,IAAI,CAAC,kCAAkC,UAAU,0BAA0B,CAAC,CAAC;YACrF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;YAEvE,oBAAoB;YACpB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAU,CAAC;YACpD,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,aAAa,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,QAAgB,EAChB,MAAgC,EAChC,UAAU,GAAG,CAAC;QAEd,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAI,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,CACV,wCAAwC,KAAK,eAAe,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,MAAM,CACpG,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC,GAAG,CAAI,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,MAAgC,EAChC,YAA2B;QAE3B,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,SAAS,GAAG,QAAQ,EAAE,GAAG,YAAY,IAAI,EAAE,CAAC;QAE1F,yBAAyB;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,GAAG,CAAI,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,qBAAqB;QACrB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAE3D,oBAAoB;QACpB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAI,QAAQ,CAAC,CAAC;QACjD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAsB,CAAC;QAChC,CAAC;QAED,oEAAoE;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAI,QAAQ,EAAE,MAAM,CAAC;aAC1C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAe;QAC7B,OAAO,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAI,QAAgB,EAAE,IAAa,EAAE,UAAU,GAAG,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3D,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,CACV,wCAAwC,KAAK,eAAe,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,MAAM,CACpG,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC,IAAI,CAAI,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAI,QAAgB,EAAE,UAAU,GAAG,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAI,QAAQ,CAAC,CAAC;YACvD,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,CACV,wCAAwC,KAAK,eAAe,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,MAAM,CACpG,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC,MAAM,CAAI,QAAQ,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAc;QACrC,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,wCAAwC;YACxC,OAAO,CACL,KAAK,CAAC,SAAS,KAAK,mBAAmB;gBACvC,KAAK,CAAC,SAAS,KAAK,aAAa;gBACjC,KAAK,CAAC,SAAS,KAAK,cAAc,CACnC,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;YACtC,gEAAgE;YAChE,OAAO,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ;QAKN,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;IACJ,CAAC;CACF"}
@@ -62,7 +62,7 @@ export function createAuthError(message = 'Authentication failed') {
62
62
  return new HaloPSAError('AuthError', message, {
63
63
  auth_method: 'OAuth2 Client Credentials',
64
64
  }, 'Verify your HALOPSA_CLIENT_ID and HALOPSA_CLIENT_SECRET environment variables are correct. ' +
65
- 'Credentials should be stored in ITGlue under "API - HaloPSA - WTECH HaloPSA".', 401);
65
+ 'Verify your HALOPSA_CLIENT_ID and HALOPSA_CLIENT_SECRET environment variables.', 401);
66
66
  }
67
67
  /**
68
68
  * Create token expired error