@truenorth-it/dataverse-client 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/README.md +37 -22
- package/package.json +7 -2
- package/sdk/dist/client.d.ts +1 -1
- package/sdk/dist/client.d.ts.map +1 -1
- package/sdk/dist/types.d.ts +2 -2
- package/sdk/dist/types.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- This file is published to npmjs.com as the package README. Edit here, not the root README.md. -->
|
|
2
|
-
|
|
3
1
|
# @truenorth-it/dataverse-client
|
|
4
2
|
|
|
5
3
|
A type-safe JavaScript client for the Dataverse Contact API. Works with **any** deployment — generate TypeScript types specific to your Dataverse org, or use it untyped.
|
|
@@ -33,6 +31,22 @@ for (const record of result.data) {
|
|
|
33
31
|
}
|
|
34
32
|
```
|
|
35
33
|
|
|
34
|
+
## Types are optional
|
|
35
|
+
|
|
36
|
+
Generated types are a **developer experience** convenience, not a requirement. The SDK works identically with or without them — every method accepts an optional generic, and defaults to `Record<string, unknown>` when none is provided.
|
|
37
|
+
|
|
38
|
+
- **No types**: works out of the box, no setup needed
|
|
39
|
+
- **With types**: add `<Incident>` to calls where you want autocomplete
|
|
40
|
+
- **Mix freely**: type the tables you work with most, leave the rest untyped
|
|
41
|
+
- **Stale types are fine**: if your schema changes and you don't regenerate, your code still runs — you just lose autocomplete for new fields
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// ✅ All three of these work in the same file
|
|
45
|
+
const cases = await client.me.list<Incident>("incident"); // typed
|
|
46
|
+
const projects = await client.me.list("msdyn_project"); // untyped — still works
|
|
47
|
+
const contacts = await client.me.lookup<Contact>("contact", { search: "jane" }); // typed
|
|
48
|
+
```
|
|
49
|
+
|
|
36
50
|
## Generate types for your API
|
|
37
51
|
|
|
38
52
|
For full TypeScript autocomplete and type safety, generate interfaces from your own API deployment:
|
|
@@ -182,16 +196,14 @@ The client exposes three scopes, each backed by server-side authorization:
|
|
|
182
196
|
### List records
|
|
183
197
|
|
|
184
198
|
```typescript
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const result = await client.me.list<Incident>("incident", {
|
|
199
|
+
const result = await client.me.list("incident", {
|
|
188
200
|
select: ["title", "ticketnumber", "statuscode", "prioritycode", "createdon"],
|
|
189
201
|
top: 50,
|
|
190
202
|
orderBy: "createdon:desc",
|
|
191
203
|
filter: "statuscode eq 1",
|
|
192
204
|
});
|
|
193
205
|
|
|
194
|
-
// result.data — Incident[]
|
|
206
|
+
// result.data — Record<string, unknown>[] (or Incident[] if you pass a generic)
|
|
195
207
|
// result.page — { top, skip, next }
|
|
196
208
|
|
|
197
209
|
for (const c of result.data) {
|
|
@@ -201,10 +213,12 @@ for (const c of result.data) {
|
|
|
201
213
|
}
|
|
202
214
|
```
|
|
203
215
|
|
|
216
|
+
> **With types:** `client.me.list<Incident>("incident", ...)` — gives full autocomplete on `result.data`.
|
|
217
|
+
|
|
204
218
|
### Get a single record
|
|
205
219
|
|
|
206
220
|
```typescript
|
|
207
|
-
const result = await client.me.get
|
|
221
|
+
const result = await client.me.get("incident", caseId, {
|
|
208
222
|
select: ["title", "description", "statuscode", "customerid"],
|
|
209
223
|
});
|
|
210
224
|
|
|
@@ -217,9 +231,7 @@ console.log(c.statuscode_label); // "In Progress"
|
|
|
217
231
|
### Create a record (me scope only)
|
|
218
232
|
|
|
219
233
|
```typescript
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
const result = await client.me.create<Casenotes>("casenotes", {
|
|
234
|
+
const result = await client.me.create("casenotes", {
|
|
223
235
|
subject: "Follow-up call",
|
|
224
236
|
notetext: "Spoke with customer — issue resolved.",
|
|
225
237
|
objectid_incident: incidentId, // link to parent case
|
|
@@ -233,30 +245,31 @@ console.log(result.data.annotationid); // new note GUID
|
|
|
233
245
|
Available on all scopes (`me`, `team`, `all`):
|
|
234
246
|
|
|
235
247
|
```typescript
|
|
236
|
-
const result = await client.me.update
|
|
248
|
+
const result = await client.me.update("incident", caseId, {
|
|
237
249
|
description: "Updated with latest findings",
|
|
238
250
|
});
|
|
239
251
|
|
|
240
252
|
console.log(result.data.modifiedon); // "2026-02-13T10:30:00Z"
|
|
241
253
|
```
|
|
242
254
|
|
|
243
|
-
### Lookup (
|
|
255
|
+
### Lookup (summary search)
|
|
244
256
|
|
|
245
|
-
|
|
246
|
-
import type { Contact } from "./dataverse-tables.generated";
|
|
257
|
+
Returns only summary fields (ID + display name) — no addresses, phone numbers, or sensitive details. Use for listing names, finding record IDs, or populating references safely.
|
|
247
258
|
|
|
248
|
-
|
|
259
|
+
```typescript
|
|
260
|
+
const result = await client.me.lookup("contact", {
|
|
249
261
|
search: "john",
|
|
250
|
-
select: ["fullname", "emailaddress1", "jobtitle"],
|
|
251
262
|
top: 10,
|
|
252
263
|
});
|
|
253
264
|
|
|
254
|
-
//
|
|
265
|
+
// Returns names and IDs only — no full contact details
|
|
255
266
|
for (const contact of result.data) {
|
|
256
|
-
console.log(contact.fullname
|
|
267
|
+
console.log(contact.fullname);
|
|
257
268
|
}
|
|
258
269
|
```
|
|
259
270
|
|
|
271
|
+
> **With types:** any operation accepts a generic — `client.me.lookup<Contact>("contact", ...)`, `client.me.get<Incident>(...)`, etc.
|
|
272
|
+
|
|
260
273
|
### Who am I
|
|
261
274
|
|
|
262
275
|
```typescript
|
|
@@ -312,7 +325,7 @@ Used by `list()`:
|
|
|
312
325
|
|
|
313
326
|
| Option | Type | Description |
|
|
314
327
|
|--------|------|-------------|
|
|
315
|
-
| `search` | `string` | Search term
|
|
328
|
+
| `search` | `string` | Search term to filter by name/title |
|
|
316
329
|
|
|
317
330
|
`get()` accepts only `select` and `expand`.
|
|
318
331
|
|
|
@@ -337,7 +350,9 @@ try {
|
|
|
337
350
|
| 403 | Insufficient permissions |
|
|
338
351
|
| 404 | Unknown table or contact not found |
|
|
339
352
|
|
|
340
|
-
##
|
|
353
|
+
## Response field patterns
|
|
354
|
+
|
|
355
|
+
These patterns apply to **all** API responses, whether or not you use generated types.
|
|
341
356
|
|
|
342
357
|
### Choice and lookup field siblings
|
|
343
358
|
|
|
@@ -353,9 +368,9 @@ record._customerid_value // "a1b2c3d4-..." (GUID of linked customer)
|
|
|
353
368
|
record._primarycontactid_value // "e5f6g7h8-..." (GUID of linked contact)
|
|
354
369
|
```
|
|
355
370
|
|
|
356
|
-
### TableName union
|
|
371
|
+
### TableName union (generated types only)
|
|
357
372
|
|
|
358
|
-
|
|
373
|
+
If you use codegen, the generated file includes a `TableName` union of all valid table names and aliases:
|
|
359
374
|
|
|
360
375
|
```typescript
|
|
361
376
|
import type { TableName } from "./dataverse-tables.generated";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truenorth-it/dataverse-client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./sdk/dist/index.js",
|
|
6
6
|
"types": "./sdk/dist/index.d.ts",
|
|
@@ -29,6 +29,8 @@
|
|
|
29
29
|
"sync-auth0-perms": "tsx scripts/sync-auth0-permissions.ts",
|
|
30
30
|
"sync-auth0-perms:apply": "tsx scripts/sync-auth0-permissions.ts --apply",
|
|
31
31
|
"add-table": "tsx scripts/add-table.ts",
|
|
32
|
+
"capture-snapshots": "tsx scripts/capture-dataverse-snapshots.ts",
|
|
33
|
+
"capture-snapshots:force": "tsx scripts/capture-dataverse-snapshots.ts --force",
|
|
32
34
|
"test": "vitest run",
|
|
33
35
|
"test:watch": "vitest",
|
|
34
36
|
"test:coverage": "vitest run --coverage"
|
|
@@ -37,6 +39,7 @@
|
|
|
37
39
|
"@auth0/auth0-react": "^2.2.4",
|
|
38
40
|
"@azure/identity": "^4.2.0",
|
|
39
41
|
"@microsoft/applicationinsights-web": "^3.3.11",
|
|
42
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
40
43
|
"applicationinsights": "^2.9.8",
|
|
41
44
|
"jose": "^5.2.0",
|
|
42
45
|
"mermaid": "^11.12.2",
|
|
@@ -44,7 +47,8 @@
|
|
|
44
47
|
"react-dom": "^18.2.0",
|
|
45
48
|
"react-markdown": "^10.1.0",
|
|
46
49
|
"react-router-dom": "^7.13.0",
|
|
47
|
-
"remark-gfm": "^4.0.1"
|
|
50
|
+
"remark-gfm": "^4.0.1",
|
|
51
|
+
"zod": "^3.25.76"
|
|
48
52
|
},
|
|
49
53
|
"devDependencies": {
|
|
50
54
|
"@tailwindcss/vite": "^4.1.18",
|
|
@@ -58,6 +62,7 @@
|
|
|
58
62
|
"@typescript-eslint/parser": "^7.0.0",
|
|
59
63
|
"@vercel/node": "^3.0.0",
|
|
60
64
|
"@vitejs/plugin-react": "^4.2.1",
|
|
65
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
61
66
|
"eslint": "^8.56.0",
|
|
62
67
|
"happy-dom": "^20.6.1",
|
|
63
68
|
"tailwindcss": "^4.1.18",
|
package/sdk/dist/client.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface ScopeClient {
|
|
|
14
14
|
get<T = Record<string, unknown>>(table: string, id: string, options?: Pick<QueryOptions, "select" | "expand">): Promise<SingleResponse<T>>;
|
|
15
15
|
/** Update a record */
|
|
16
16
|
update<T = Record<string, unknown>>(table: string, id: string, data: Record<string, unknown>): Promise<SingleResponse<T>>;
|
|
17
|
-
/** Search
|
|
17
|
+
/** Search records — returns summary fields only (ID + display name), no sensitive details */
|
|
18
18
|
lookup<T = Record<string, unknown>>(table: string, options?: LookupOptions): Promise<PaginatedResponse<T>>;
|
|
19
19
|
}
|
|
20
20
|
/** Extended scope with create and whoami (only available on "me") */
|
package/sdk/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,0DAA0D;AAC1D,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;gBAEvB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;CAO1E;AA+DD,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC,gCAAgC;IAChC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,QAAQ,CAAC,GAChD,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B,sBAAsB;IACtB,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,0DAA0D;AAC1D,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;gBAEvB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;CAO1E;AA+DD,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC,gCAAgC;IAChC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,QAAQ,CAAC,GAChD,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B,sBAAsB;IACtB,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B,6FAA6F;IAC7F,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC;AAwDD,qEAAqE;AACrE,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,0BAA0B;IAC1B,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B,0DAA0D;IAC1D,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;CACnC;AAoBD,mCAAmC;AACnC,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,EAAE,EAAE,aAAa,CAAC;IAClB,iEAAiE;IACjE,IAAI,EAAE,WAAW,CAAC;IAClB,wCAAwC;IACxC,GAAG,EAAE,WAAW,CAAC;IAEjB,sEAAsE;IACtE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,CAAC;IAE7F,sDAAsD;IACtD,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC;CAC9D;AAED,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAsBlE"}
|
package/sdk/dist/types.d.ts
CHANGED
|
@@ -24,9 +24,9 @@ export interface QueryOptions {
|
|
|
24
24
|
/** Expand related lookup fields, e.g. "primarycontactid(contactid,fullname)" */
|
|
25
25
|
expand?: string;
|
|
26
26
|
}
|
|
27
|
-
/** Query options for lookup endpoints */
|
|
27
|
+
/** Query options for lookup endpoints (summary data only — no sensitive fields) */
|
|
28
28
|
export interface LookupOptions extends QueryOptions {
|
|
29
|
-
/** Search term
|
|
29
|
+
/** Search term to filter by name/title */
|
|
30
30
|
search?: string;
|
|
31
31
|
}
|
|
32
32
|
/** Standard paginated response from the API */
|
package/sdk/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,iEAAiE;IACjE,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|