@inkbox/sdk 0.5.0 → 0.5.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 +4 -0
- package/dist/_http.d.ts +7 -2
- package/dist/_http.d.ts.map +1 -1
- package/dist/_http.js +19 -5
- package/dist/_http.js.map +1 -1
- package/dist/contacts/correspondence.d.ts +172 -0
- package/dist/contacts/correspondence.d.ts.map +1 -0
- package/dist/contacts/correspondence.js +91 -0
- package/dist/contacts/correspondence.js.map +1 -0
- package/dist/contacts/facts.d.ts +73 -0
- package/dist/contacts/facts.d.ts.map +1 -0
- package/dist/contacts/facts.js +44 -0
- package/dist/contacts/facts.js.map +1 -0
- package/dist/contacts/index.d.ts +6 -1
- package/dist/contacts/index.d.ts.map +1 -1
- package/dist/contacts/index.js +2 -0
- package/dist/contacts/index.js.map +1 -1
- package/dist/contacts/resources/contactAccess.d.ts +6 -9
- package/dist/contacts/resources/contactAccess.d.ts.map +1 -1
- package/dist/contacts/resources/contactAccess.js +6 -14
- package/dist/contacts/resources/contactAccess.js.map +1 -1
- package/dist/contacts/resources/contactFacts.d.ts +13 -0
- package/dist/contacts/resources/contactFacts.d.ts.map +1 -0
- package/dist/contacts/resources/contactFacts.js +40 -0
- package/dist/contacts/resources/contactFacts.js.map +1 -0
- package/dist/contacts/resources/contacts.d.ts +21 -10
- package/dist/contacts/resources/contacts.d.ts.map +1 -1
- package/dist/contacts/resources/contacts.js +44 -10
- package/dist/contacts/resources/contacts.js.map +1 -1
- package/dist/contacts/resources/correspondence.d.ts +26 -0
- package/dist/contacts/resources/correspondence.d.ts.map +1 -0
- package/dist/contacts/resources/correspondence.js +35 -0
- package/dist/contacts/resources/correspondence.js.map +1 -0
- package/dist/contacts/resources/vcards.d.ts +3 -1
- package/dist/contacts/resources/vcards.d.ts.map +1 -1
- package/dist/contacts/resources/vcards.js +8 -1
- package/dist/contacts/resources/vcards.js.map +1 -1
- package/dist/contacts/types.d.ts +81 -3
- package/dist/contacts/types.d.ts.map +1 -1
- package/dist/contacts/types.js +42 -0
- package/dist/contacts/types.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inkbox.d.ts +1 -1
- package/dist/inkbox.d.ts.map +1 -1
- package/dist/inkbox.js +1 -1
- package/dist/inkbox.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/webhooks/types.d.ts +4 -0
- package/dist/webhooks/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* inkbox-contacts/resources/contactAccess.ts
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Deprecated read-only compatibility metadata that does not restrict
|
|
5
|
+
* organization-wide contact visibility.
|
|
5
6
|
*/
|
|
6
7
|
import { HttpTransport } from "../../_http.js";
|
|
7
8
|
import { ContactAccess } from "../types.js";
|
|
8
|
-
export interface GrantContactAccessOptions {
|
|
9
|
-
/** Identity UUID to grant. Mutually exclusive with `wildcard`. */
|
|
10
|
-
identityId?: string;
|
|
11
|
-
/** When true, reset to a wildcard grant (every active identity sees it). */
|
|
12
|
-
wildcard?: boolean;
|
|
13
|
-
}
|
|
14
9
|
export declare class ContactAccessResource {
|
|
15
10
|
private readonly http;
|
|
16
11
|
constructor(http: HttpTransport);
|
|
12
|
+
/**
|
|
13
|
+
* List deprecated read-only compatibility metadata for a contact.
|
|
14
|
+
* These records do not restrict organization-wide contact visibility.
|
|
15
|
+
*/
|
|
17
16
|
list(contactId: string): Promise<ContactAccess[]>;
|
|
18
|
-
grant(contactId: string, options: GrantContactAccessOptions): Promise<ContactAccess>;
|
|
19
|
-
revoke(contactId: string, identityId: string): Promise<void>;
|
|
20
17
|
}
|
|
21
18
|
//# sourceMappingURL=contactAccess.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactAccess.d.ts","sourceRoot":"","sources":["../../../src/contacts/resources/contactAccess.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"contactAccess.d.ts","sourceRoot":"","sources":["../../../src/contacts/resources/contactAccess.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,aAAa,EAGd,MAAM,aAAa,CAAC;AAIrB,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD;;;OAGG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAOxD"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* inkbox-contacts/resources/contactAccess.ts
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Deprecated read-only compatibility metadata that does not restrict
|
|
5
|
+
* organization-wide contact visibility.
|
|
5
6
|
*/
|
|
6
7
|
import { parseContactAccess, } from "../types.js";
|
|
7
8
|
const BASE = "/contacts";
|
|
@@ -10,23 +11,14 @@ export class ContactAccessResource {
|
|
|
10
11
|
constructor(http) {
|
|
11
12
|
this.http = http;
|
|
12
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* List deprecated read-only compatibility metadata for a contact.
|
|
16
|
+
* These records do not restrict organization-wide contact visibility.
|
|
17
|
+
*/
|
|
13
18
|
async list(contactId) {
|
|
14
19
|
const data = await this.http.get(`${BASE}/${contactId}/access`);
|
|
15
20
|
const items = Array.isArray(data) ? data : data.items;
|
|
16
21
|
return items.map(parseContactAccess);
|
|
17
22
|
}
|
|
18
|
-
async grant(contactId, options) {
|
|
19
|
-
if (options.wildcard && options.identityId !== undefined) {
|
|
20
|
-
throw new Error("Pass either identityId or wildcard: true, not both.");
|
|
21
|
-
}
|
|
22
|
-
const body = {
|
|
23
|
-
identity_id: options.wildcard ? null : options.identityId ?? null,
|
|
24
|
-
};
|
|
25
|
-
const data = await this.http.post(`${BASE}/${contactId}/access`, body);
|
|
26
|
-
return parseContactAccess(data);
|
|
27
|
-
}
|
|
28
|
-
async revoke(contactId, identityId) {
|
|
29
|
-
await this.http.delete(`${BASE}/${contactId}/access/${identityId}`);
|
|
30
|
-
}
|
|
31
23
|
}
|
|
32
24
|
//# sourceMappingURL=contactAccess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactAccess.js","sourceRoot":"","sources":["../../../src/contacts/resources/contactAccess.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"contactAccess.js","sourceRoot":"","sources":["../../../src/contacts/resources/contactAccess.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAGL,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAE9B,GAAG,IAAI,IAAI,SAAS,SAAS,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACtD,OAAO,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HttpTransport } from "../../_http.js";
|
|
2
|
+
import { ContactFact, ContactFactCitationDetail, ContactFactDeleteResult } from "../facts.js";
|
|
3
|
+
export declare class ContactFactsResource {
|
|
4
|
+
private readonly http;
|
|
5
|
+
constructor(http: HttpTransport);
|
|
6
|
+
list(contactId: string): Promise<ContactFact[]>;
|
|
7
|
+
get(contactId: string, factId: string): Promise<ContactFact>;
|
|
8
|
+
resolveCitation(contactId: string, factId: string, citationId: string): Promise<ContactFactCitationDetail>;
|
|
9
|
+
resolveCitationUrl(sourceUrl: string): Promise<ContactFactCitationDetail>;
|
|
10
|
+
/** Delete a fact using an admin-scoped API key. */
|
|
11
|
+
delete(contactId: string, factId: string): Promise<ContactFactDeleteResult>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=contactFacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contactFacts.d.ts","sourceRoot":"","sources":["../../../src/contacts/resources/contactFacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,WAAW,EACX,yBAAyB,EACzB,uBAAuB,EAOxB,MAAM,aAAa,CAAC;AAIrB,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAE1C,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAK/C,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAO5D,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,yBAAyB,CAAC;IAO/B,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAe/E,mDAAmD;IAC7C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAMlF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { parseContactFact, parseContactFactCitationDetail, parseContactFactDeleteResult, } from "../facts.js";
|
|
2
|
+
const BASE = "/contacts";
|
|
3
|
+
export class ContactFactsResource {
|
|
4
|
+
http;
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
async list(contactId) {
|
|
9
|
+
const data = await this.http.get(`${BASE}/${contactId}/facts`);
|
|
10
|
+
return data.map(parseContactFact);
|
|
11
|
+
}
|
|
12
|
+
async get(contactId, factId) {
|
|
13
|
+
const data = await this.http.get(`${BASE}/${contactId}/facts/${factId}`);
|
|
14
|
+
return parseContactFact(data);
|
|
15
|
+
}
|
|
16
|
+
async resolveCitation(contactId, factId, citationId) {
|
|
17
|
+
const data = await this.http.get(`${BASE}/${contactId}/facts/${factId}/citations/${citationId}`);
|
|
18
|
+
return parseContactFactCitationDetail(data);
|
|
19
|
+
}
|
|
20
|
+
async resolveCitationUrl(sourceUrl) {
|
|
21
|
+
const path = sourceUrl.startsWith("http://") || sourceUrl.startsWith("https://")
|
|
22
|
+
? (() => {
|
|
23
|
+
const parsed = new URL(sourceUrl);
|
|
24
|
+
return `${parsed.pathname}${parsed.search}`;
|
|
25
|
+
})()
|
|
26
|
+
: sourceUrl;
|
|
27
|
+
const relativePath = path.startsWith("/api/v1/") ? path.slice("/api/v1".length) : path;
|
|
28
|
+
if (!relativePath.startsWith("/contacts/")) {
|
|
29
|
+
throw new Error("sourceUrl must be a contact citation URL");
|
|
30
|
+
}
|
|
31
|
+
const data = await this.http.get(relativePath);
|
|
32
|
+
return parseContactFactCitationDetail(data);
|
|
33
|
+
}
|
|
34
|
+
/** Delete a fact using an admin-scoped API key. */
|
|
35
|
+
async delete(contactId, factId) {
|
|
36
|
+
const data = await this.http.deleteWithResponse(`${BASE}/${contactId}/facts/${factId}`);
|
|
37
|
+
return parseContactFactDeleteResult(data);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=contactFacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contactFacts.js","sourceRoot":"","sources":["../../../src/contacts/resources/contactFacts.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,gBAAgB,EAChB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AAErB,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,MAAM,OAAO,oBAAoB;IACF;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,GAAG,IAAI,IAAI,SAAS,QAAQ,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAiB,EAAE,MAAc;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9B,GAAG,IAAI,IAAI,SAAS,UAAU,MAAM,EAAE,CACvC,CAAC;QACF,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,SAAiB,EACjB,MAAc,EACd,UAAkB;QAElB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9B,GAAG,IAAI,IAAI,SAAS,UAAU,MAAM,cAAc,UAAU,EAAE,CAC/D,CAAC;QACF,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QACxC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;YAC9E,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClC,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9C,CAAC,CAAC,EAAE;YACN,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvF,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAA+B,YAAY,CAAC,CAAC;QAC7E,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,MAAc;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAC7C,GAAG,IAAI,IAAI,SAAS,UAAU,MAAM,EAAE,CACvC,CAAC;QACF,OAAO,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -5,13 +5,17 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { HttpTransport } from "../../_http.js";
|
|
7
7
|
import { ContactAccessResource } from "./contactAccess.js";
|
|
8
|
+
import { ContactCorrespondenceResource } from "./correspondence.js";
|
|
9
|
+
import { ContactFactsResource } from "./contactFacts.js";
|
|
8
10
|
import { VCardsResource } from "./vcards.js";
|
|
9
|
-
import { Contact, ContactAddress, ContactCustomField, ContactDate, ContactEmail, ContactPhone, ContactWebsite } from "../types.js";
|
|
11
|
+
import { Contact, ContactAddress, ContactBulkDeleteResult, ContactCustomField, ContactDate, ContactEmail, ContactPhone, ContactReviewStatus, ContactWebsite } from "../types.js";
|
|
10
12
|
export interface ListContactsOptions {
|
|
11
13
|
q?: string;
|
|
12
14
|
order?: "name" | "recent" | string;
|
|
13
15
|
limit?: number;
|
|
16
|
+
/** Offset from 0 through 10,000. */
|
|
14
17
|
offset?: number;
|
|
18
|
+
reviewStatus?: ContactReviewStatus[];
|
|
15
19
|
}
|
|
16
20
|
export interface LookupContactsOptions {
|
|
17
21
|
email?: string;
|
|
@@ -38,15 +42,6 @@ export interface CreateContactOptions {
|
|
|
38
42
|
dates?: ContactDate[];
|
|
39
43
|
addresses?: ContactAddress[];
|
|
40
44
|
customFields?: ContactCustomField[];
|
|
41
|
-
/**
|
|
42
|
-
* Access control at create time.
|
|
43
|
-
* - `undefined` (default) / `"wildcard"` — one wildcard row, every active
|
|
44
|
-
* identity sees the contact.
|
|
45
|
-
* - `[]` — zero grants (only admin + human callers see it).
|
|
46
|
-
* - Explicit list of identity UUIDs — one per-identity grant each. Capped
|
|
47
|
-
* at 500 entries server-side.
|
|
48
|
-
*/
|
|
49
|
-
accessIdentityIds?: string[] | "wildcard" | null;
|
|
50
45
|
}
|
|
51
46
|
export interface UpdateContactOptions {
|
|
52
47
|
preferredName?: string | null;
|
|
@@ -66,10 +61,18 @@ export interface UpdateContactOptions {
|
|
|
66
61
|
dates?: ContactDate[] | null;
|
|
67
62
|
addresses?: ContactAddress[] | null;
|
|
68
63
|
customFields?: ContactCustomField[] | null;
|
|
64
|
+
reviewStatus?: ContactReviewStatus;
|
|
65
|
+
}
|
|
66
|
+
export type ContactMergeField = "preferredName" | "namePrefix" | "givenName" | "middleName" | "familyName" | "nameSuffix" | "companyName" | "jobTitle" | "birthday" | "notes";
|
|
67
|
+
export interface MergeContactsOptions {
|
|
68
|
+
losingContactIds: string[];
|
|
69
|
+
fieldSources?: Partial<Record<ContactMergeField, string>>;
|
|
69
70
|
}
|
|
70
71
|
export declare class ContactsResource {
|
|
71
72
|
private readonly http;
|
|
72
73
|
readonly access: ContactAccessResource;
|
|
74
|
+
readonly correspondence: ContactCorrespondenceResource;
|
|
75
|
+
readonly facts: ContactFactsResource;
|
|
73
76
|
readonly vcards: VCardsResource;
|
|
74
77
|
constructor(http: HttpTransport);
|
|
75
78
|
list(options?: ListContactsOptions): Promise<Contact[]>;
|
|
@@ -77,6 +80,14 @@ export declare class ContactsResource {
|
|
|
77
80
|
get(contactId: string): Promise<Contact>;
|
|
78
81
|
create(options?: CreateContactOptions): Promise<Contact>;
|
|
79
82
|
update(contactId: string, options: UpdateContactOptions): Promise<Contact>;
|
|
83
|
+
/**
|
|
84
|
+
* Merge contacts using an admin-scoped API key.
|
|
85
|
+
*
|
|
86
|
+
* The server rejects the merge atomically if the result would exceed 25 active
|
|
87
|
+
* memories. Delete unwanted facts and retry.
|
|
88
|
+
*/
|
|
89
|
+
merge(contactId: string, options: MergeContactsOptions): Promise<Contact>;
|
|
80
90
|
delete(contactId: string): Promise<void>;
|
|
91
|
+
bulkDelete(contactIds: string[]): Promise<ContactBulkDeleteResult>;
|
|
81
92
|
}
|
|
82
93
|
//# sourceMappingURL=contacts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../../src/contacts/resources/contacts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../../src/contacts/resources/contacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,16 +4,22 @@
|
|
|
4
4
|
* Contacts CRUD + search + lookup.
|
|
5
5
|
*/
|
|
6
6
|
import { ContactAccessResource } from "./contactAccess.js";
|
|
7
|
+
import { ContactCorrespondenceResource } from "./correspondence.js";
|
|
8
|
+
import { ContactFactsResource } from "./contactFacts.js";
|
|
7
9
|
import { VCardsResource } from "./vcards.js";
|
|
8
|
-
import { contactAddressToWire, contactCustomFieldToWire, contactDateToWire, contactEmailToWire, contactPhoneToWire, contactWebsiteToWire, parseContact, } from "../types.js";
|
|
10
|
+
import { contactAddressToWire, contactCustomFieldToWire, contactDateToWire, contactEmailToWire, contactPhoneToWire, contactWebsiteToWire, parseContact, parseContactBulkDeleteResult, } from "../types.js";
|
|
9
11
|
const BASE = "/contacts";
|
|
10
12
|
export class ContactsResource {
|
|
11
13
|
http;
|
|
12
14
|
access;
|
|
15
|
+
correspondence;
|
|
16
|
+
facts;
|
|
13
17
|
vcards;
|
|
14
18
|
constructor(http) {
|
|
15
19
|
this.http = http;
|
|
16
20
|
this.access = new ContactAccessResource(http);
|
|
21
|
+
this.correspondence = new ContactCorrespondenceResource(http);
|
|
22
|
+
this.facts = new ContactFactsResource(http);
|
|
17
23
|
this.vcards = new VCardsResource(http);
|
|
18
24
|
}
|
|
19
25
|
async list(options = {}) {
|
|
@@ -26,6 +32,8 @@ export class ContactsResource {
|
|
|
26
32
|
params.limit = options.limit;
|
|
27
33
|
if (options.offset !== undefined)
|
|
28
34
|
params.offset = options.offset;
|
|
35
|
+
if (options.reviewStatus !== undefined)
|
|
36
|
+
params.review_status = options.reviewStatus;
|
|
29
37
|
const data = await this.http.get(BASE, params);
|
|
30
38
|
const items = Array.isArray(data) ? data : data.items;
|
|
31
39
|
return items.map(parseContact);
|
|
@@ -85,15 +93,6 @@ export class ContactsResource {
|
|
|
85
93
|
body.addresses = options.addresses.map(contactAddressToWire);
|
|
86
94
|
if (options.customFields !== undefined)
|
|
87
95
|
body.custom_fields = options.customFields.map(contactCustomFieldToWire);
|
|
88
|
-
if (options.accessIdentityIds === undefined || options.accessIdentityIds === "wildcard") {
|
|
89
|
-
// omit — server wildcards by default
|
|
90
|
-
}
|
|
91
|
-
else if (options.accessIdentityIds === null) {
|
|
92
|
-
body.access_identity_ids = null;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
body.access_identity_ids = options.accessIdentityIds;
|
|
96
|
-
}
|
|
97
96
|
const data = await this.http.post(BASE, body);
|
|
98
97
|
return parseContact(data);
|
|
99
98
|
}
|
|
@@ -110,6 +109,7 @@ export class ContactsResource {
|
|
|
110
109
|
["jobTitle", "job_title"],
|
|
111
110
|
["birthday", "birthday"],
|
|
112
111
|
["notes", "notes"],
|
|
112
|
+
["reviewStatus", "review_status"],
|
|
113
113
|
]) {
|
|
114
114
|
if (key in options)
|
|
115
115
|
body[wire] = options[key];
|
|
@@ -136,8 +136,42 @@ export class ContactsResource {
|
|
|
136
136
|
const data = await this.http.patch(`${BASE}/${contactId}`, body);
|
|
137
137
|
return parseContact(data);
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Merge contacts using an admin-scoped API key.
|
|
141
|
+
*
|
|
142
|
+
* The server rejects the merge atomically if the result would exceed 25 active
|
|
143
|
+
* memories. Delete unwanted facts and retry.
|
|
144
|
+
*/
|
|
145
|
+
async merge(contactId, options) {
|
|
146
|
+
const fieldSources = Object.fromEntries(Object.entries(options.fieldSources ?? {}).map(([key, value]) => [
|
|
147
|
+
{
|
|
148
|
+
preferredName: "preferred_name",
|
|
149
|
+
namePrefix: "name_prefix",
|
|
150
|
+
givenName: "given_name",
|
|
151
|
+
middleName: "middle_name",
|
|
152
|
+
familyName: "family_name",
|
|
153
|
+
nameSuffix: "name_suffix",
|
|
154
|
+
companyName: "company_name",
|
|
155
|
+
jobTitle: "job_title",
|
|
156
|
+
birthday: "birthday",
|
|
157
|
+
notes: "notes",
|
|
158
|
+
}[key],
|
|
159
|
+
value,
|
|
160
|
+
]));
|
|
161
|
+
const data = await this.http.post(`${BASE}/${contactId}/merge`, {
|
|
162
|
+
losing_contact_ids: options.losingContactIds,
|
|
163
|
+
field_sources: fieldSources,
|
|
164
|
+
});
|
|
165
|
+
return parseContact(data);
|
|
166
|
+
}
|
|
139
167
|
async delete(contactId) {
|
|
140
168
|
await this.http.delete(`${BASE}/${contactId}`);
|
|
141
169
|
}
|
|
170
|
+
async bulkDelete(contactIds) {
|
|
171
|
+
const data = await this.http.post(`${BASE}/bulk-delete`, {
|
|
172
|
+
contact_ids: contactIds,
|
|
173
|
+
});
|
|
174
|
+
return parseContactBulkDeleteResult(data);
|
|
175
|
+
}
|
|
142
176
|
}
|
|
143
177
|
//# sourceMappingURL=contacts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../src/contacts/resources/contacts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../src/contacts/resources/contacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { HttpTransport } from "../../_http.js";
|
|
2
|
+
import { ContactCorrespondence, CorrespondenceChannel, CorrespondenceContentMode, CorrespondenceOrder, CorrespondenceTranscriptMode } from "../correspondence.js";
|
|
3
|
+
export interface ContactCorrespondenceOptions {
|
|
4
|
+
channels?: CorrespondenceChannel[];
|
|
5
|
+
after?: Date | string;
|
|
6
|
+
before?: Date | string;
|
|
7
|
+
limitPerChannel?: number;
|
|
8
|
+
emailLimit?: number;
|
|
9
|
+
smsLimit?: number;
|
|
10
|
+
imessageLimit?: number;
|
|
11
|
+
callsLimit?: number;
|
|
12
|
+
cursor?: string;
|
|
13
|
+
order?: CorrespondenceOrder;
|
|
14
|
+
content?: CorrespondenceContentMode;
|
|
15
|
+
transcripts?: CorrespondenceTranscriptMode;
|
|
16
|
+
includeFailed?: boolean;
|
|
17
|
+
identityId?: string;
|
|
18
|
+
}
|
|
19
|
+
export type GetContactCorrespondenceOptions = ContactCorrespondenceOptions;
|
|
20
|
+
export declare class ContactCorrespondenceResource {
|
|
21
|
+
private readonly http;
|
|
22
|
+
constructor(http: HttpTransport);
|
|
23
|
+
get(contactId: string, options?: ContactCorrespondenceOptions): Promise<ContactCorrespondence>;
|
|
24
|
+
list(contactId: string, options?: ContactCorrespondenceOptions): Promise<ContactCorrespondence>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=correspondence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correspondence.d.ts","sourceRoot":"","sources":["../../../src/contacts/resources/correspondence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,4BAA4B,EAG7B,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,WAAW,CAAC,EAAE,4BAA4B,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,+BAA+B,GAAG,4BAA4B,CAAC;AAM3E,qBAAa,6BAA6B;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAE1C,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,qBAAqB,CAAC;IA2B3B,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,qBAAqB,CAAC;CAGlC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { parseContactCorrespondence, } from "../correspondence.js";
|
|
2
|
+
const BASE = "/contacts";
|
|
3
|
+
function serializeDate(value) {
|
|
4
|
+
return value instanceof Date ? value.toISOString() : value;
|
|
5
|
+
}
|
|
6
|
+
export class ContactCorrespondenceResource {
|
|
7
|
+
http;
|
|
8
|
+
constructor(http) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
}
|
|
11
|
+
async get(contactId, options = {}) {
|
|
12
|
+
const params = {
|
|
13
|
+
channels: options.channels,
|
|
14
|
+
after: options.after === undefined ? undefined : serializeDate(options.after),
|
|
15
|
+
before: options.before === undefined ? undefined : serializeDate(options.before),
|
|
16
|
+
limit_per_channel: options.limitPerChannel,
|
|
17
|
+
email_limit: options.emailLimit,
|
|
18
|
+
sms_limit: options.smsLimit,
|
|
19
|
+
imessage_limit: options.imessageLimit,
|
|
20
|
+
calls_limit: options.callsLimit,
|
|
21
|
+
cursor: options.cursor,
|
|
22
|
+
order: options.order,
|
|
23
|
+
content: options.content,
|
|
24
|
+
transcripts: options.transcripts,
|
|
25
|
+
include_failed: options.includeFailed,
|
|
26
|
+
identity_id: options.identityId,
|
|
27
|
+
};
|
|
28
|
+
const data = await this.http.get(`${BASE}/${contactId}/correspondence`, params);
|
|
29
|
+
return parseContactCorrespondence(data);
|
|
30
|
+
}
|
|
31
|
+
async list(contactId, options = {}) {
|
|
32
|
+
return this.get(contactId, options);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=correspondence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correspondence.js","sourceRoot":"","sources":["../../../src/contacts/resources/correspondence.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,IAAI,GAAG,WAAW,CAAC;AAqBzB,SAAS,aAAa,CAAC,KAAoB;IACzC,OAAO,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,OAAO,6BAA6B;IACX;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD,KAAK,CAAC,GAAG,CACP,SAAiB,EACjB,UAAwC,EAAE;QAE1C,MAAM,MAAM,GAGR;YACF,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7E,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;YAChF,iBAAiB,EAAE,OAAO,CAAC,eAAe;YAC1C,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,SAAS,EAAE,OAAO,CAAC,QAAQ;YAC3B,cAAc,EAAE,OAAO,CAAC,aAAa;YACrC,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,cAAc,EAAE,OAAO,CAAC,aAAa;YACrC,WAAW,EAAE,OAAO,CAAC,UAAU;SAChC,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9B,GAAG,IAAI,IAAI,SAAS,iBAAiB,EACrC,MAAM,CACP,CAAC;QACF,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CACR,SAAiB,EACjB,UAAwC,EAAE;QAE1C,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* vCard import / export.
|
|
5
5
|
*/
|
|
6
6
|
import { HttpTransport } from "../../_http.js";
|
|
7
|
-
import { ContactImportResult } from "../types.js";
|
|
7
|
+
import { ContactImportResult, ContactVCardExportResult } from "../types.js";
|
|
8
8
|
export declare class VCardsResource {
|
|
9
9
|
private readonly http;
|
|
10
10
|
constructor(http: HttpTransport);
|
|
@@ -19,5 +19,7 @@ export declare class VCardsResource {
|
|
|
19
19
|
import(content: string | Uint8Array, contentType?: string): Promise<ContactImportResult>;
|
|
20
20
|
/** Export a single contact as vCard 4.0 text. */
|
|
21
21
|
export(contactId: string): Promise<string>;
|
|
22
|
+
/** Export up to 25 contacts as one vCard document. */
|
|
23
|
+
exportMany(contactIds: string[]): Promise<ContactVCardExportResult>;
|
|
22
24
|
}
|
|
23
25
|
//# sourceMappingURL=vcards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vcards.d.ts","sourceRoot":"","sources":["../../../src/contacts/resources/vcards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,mBAAmB,
|
|
1
|
+
{"version":3,"file":"vcards.d.ts","sourceRoot":"","sources":["../../../src/contacts/resources/vcards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EAKzB,MAAM,aAAa,CAAC;AAKrB,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD;;;;;;;OAOG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,WAAW,GAAE,MAA2B,GACvC,OAAO,CAAC,mBAAmB,CAAC;IAS/B,iDAAiD;IAC3C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhD,sDAAsD;IAChD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAM1E"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* vCard import / export.
|
|
5
5
|
*/
|
|
6
|
-
import { parseContactImportResult, } from "../types.js";
|
|
6
|
+
import { parseContactImportResult, parseContactVCardExportResult, } from "../types.js";
|
|
7
7
|
const BASE = "/contacts";
|
|
8
8
|
const VCARD_CONTENT_TYPE = "text/vcard";
|
|
9
9
|
export class VCardsResource {
|
|
@@ -27,5 +27,12 @@ export class VCardsResource {
|
|
|
27
27
|
async export(contactId) {
|
|
28
28
|
return this.http.getText(`${BASE}/${contactId}.vcf`, VCARD_CONTENT_TYPE);
|
|
29
29
|
}
|
|
30
|
+
/** Export up to 25 contacts as one vCard document. */
|
|
31
|
+
async exportMany(contactIds) {
|
|
32
|
+
const data = await this.http.post(`${BASE}/vcard-export`, {
|
|
33
|
+
contact_ids: contactIds,
|
|
34
|
+
});
|
|
35
|
+
return parseContactVCardExportResult(data);
|
|
36
|
+
}
|
|
30
37
|
}
|
|
31
38
|
//# sourceMappingURL=vcards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vcards.js","sourceRoot":"","sources":["../../../src/contacts/resources/vcards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"vcards.js","sourceRoot":"","sources":["../../../src/contacts/resources/vcards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAKL,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AAErB,MAAM,IAAI,GAAG,WAAW,CAAC;AACzB,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAExC,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CACV,OAA4B,EAC5B,cAAsB,kBAAkB;QAExC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAClC,GAAG,IAAI,SAAS,EAChB,OAAO,EACP,WAAW,CACZ,CAAC;QACF,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,SAAS,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC3E,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,UAAU,CAAC,UAAoB;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAA8B,GAAG,IAAI,eAAe,EAAE;YACrF,WAAW,EAAE,UAAU;SACxB,CAAC,CAAC;QACH,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
package/dist/contacts/types.d.ts
CHANGED
|
@@ -32,13 +32,25 @@ export interface ContactCustomField {
|
|
|
32
32
|
label: string;
|
|
33
33
|
value: string;
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Deprecated read-only compatibility metadata.
|
|
37
|
+
* These records do not restrict organization-wide contact visibility.
|
|
38
|
+
*/
|
|
35
39
|
export interface ContactAccess {
|
|
36
40
|
id: string;
|
|
37
41
|
contactId: string;
|
|
38
|
-
/** null
|
|
42
|
+
/** null is the legacy wildcard sentinel. */
|
|
39
43
|
identityId: string | null;
|
|
40
44
|
createdAt: Date;
|
|
41
45
|
}
|
|
46
|
+
export type ContactCreationSource = "manual" | "vcard" | "communication" | "backfill";
|
|
47
|
+
export type ContactReviewStatus = "unreviewed" | "confirmed";
|
|
48
|
+
export type ContactNameSource = "manual" | "vcard" | "provider" | "mail_header" | "identifier_fallback";
|
|
49
|
+
export interface ContactMemorySummary {
|
|
50
|
+
id: string;
|
|
51
|
+
content: string;
|
|
52
|
+
updatedAt: Date;
|
|
53
|
+
}
|
|
42
54
|
export interface Contact {
|
|
43
55
|
id: string;
|
|
44
56
|
organizationId: string | null;
|
|
@@ -60,6 +72,18 @@ export interface Contact {
|
|
|
60
72
|
addresses: ContactAddress[];
|
|
61
73
|
customFields: ContactCustomField[];
|
|
62
74
|
access: ContactAccess[];
|
|
75
|
+
creationSource: ContactCreationSource;
|
|
76
|
+
reviewStatus: ContactReviewStatus;
|
|
77
|
+
reviewedAt: Date | null;
|
|
78
|
+
reviewedBy: string | null;
|
|
79
|
+
preferredNameSource: ContactNameSource;
|
|
80
|
+
preferredNameLockedAt: Date | null;
|
|
81
|
+
createdByIdentityId: string | null;
|
|
82
|
+
mergedIntoContactId: string | null;
|
|
83
|
+
isAutoCreated: boolean;
|
|
84
|
+
isConfirmed: boolean;
|
|
85
|
+
memoryCount: number | null;
|
|
86
|
+
latestMemory: ContactMemorySummary | null;
|
|
63
87
|
status: string | null;
|
|
64
88
|
createdAt: Date;
|
|
65
89
|
updatedAt: Date;
|
|
@@ -70,12 +94,14 @@ export interface Contact {
|
|
|
70
94
|
* `contact` is populated when `status === "created"` (and `error` is null);
|
|
71
95
|
* `error` is populated when `status === "error"` (and `contact` is null).
|
|
72
96
|
*/
|
|
97
|
+
export type ContactImportStatus = "created" | "conflict" | "error";
|
|
73
98
|
export interface ContactImportResultItem {
|
|
74
99
|
/** 0-based position within the uploaded vCard stream. */
|
|
75
100
|
index: number;
|
|
76
|
-
status:
|
|
101
|
+
status: ContactImportStatus;
|
|
77
102
|
contact: Contact | null;
|
|
78
103
|
error: string | null;
|
|
104
|
+
conflictingContactId: string | null;
|
|
79
105
|
}
|
|
80
106
|
export interface ContactImportResult {
|
|
81
107
|
createdCount: number;
|
|
@@ -86,6 +112,24 @@ export interface ContactImportResult {
|
|
|
86
112
|
readonly createdIds: string[];
|
|
87
113
|
/** Convenience: per-card entries where `status === "error"`. */
|
|
88
114
|
readonly errors: ContactImportResultItem[];
|
|
115
|
+
/** Convenience: per-card entries where `status === "conflict"`. */
|
|
116
|
+
readonly conflicts: ContactImportResultItem[];
|
|
117
|
+
}
|
|
118
|
+
export type ContactBulkDeleteStatus = "deleted" | "error";
|
|
119
|
+
export interface ContactBulkDeleteResultItem {
|
|
120
|
+
contactId: string;
|
|
121
|
+
status: ContactBulkDeleteStatus;
|
|
122
|
+
error: string | null;
|
|
123
|
+
}
|
|
124
|
+
export interface ContactBulkDeleteResult {
|
|
125
|
+
deletedCount: number;
|
|
126
|
+
errorCount: number;
|
|
127
|
+
results: ContactBulkDeleteResultItem[];
|
|
128
|
+
}
|
|
129
|
+
export interface ContactVCardExportResult {
|
|
130
|
+
contentType: string;
|
|
131
|
+
contactCount: number;
|
|
132
|
+
vcard: string;
|
|
89
133
|
}
|
|
90
134
|
export interface RawContactEmail {
|
|
91
135
|
label?: string | null;
|
|
@@ -143,15 +187,47 @@ export interface RawContact {
|
|
|
143
187
|
addresses: RawContactAddress[] | null;
|
|
144
188
|
custom_fields: RawContactCustomField[] | null;
|
|
145
189
|
access: RawContactAccess[] | null;
|
|
190
|
+
creation_source?: ContactCreationSource;
|
|
191
|
+
review_status?: ContactReviewStatus;
|
|
192
|
+
reviewed_at?: string | null;
|
|
193
|
+
reviewed_by?: string | null;
|
|
194
|
+
preferred_name_source?: ContactNameSource;
|
|
195
|
+
preferred_name_locked_at?: string | null;
|
|
196
|
+
created_by_identity_id?: string | null;
|
|
197
|
+
merged_into_contact_id?: string | null;
|
|
198
|
+
is_auto_created?: boolean;
|
|
199
|
+
is_confirmed?: boolean;
|
|
200
|
+
memory_count?: number | null;
|
|
201
|
+
latest_memory?: RawContactMemorySummary | null;
|
|
146
202
|
status?: string | null;
|
|
147
203
|
created_at: string;
|
|
148
204
|
updated_at: string;
|
|
149
205
|
}
|
|
206
|
+
export interface RawContactMemorySummary {
|
|
207
|
+
id: string;
|
|
208
|
+
content: string;
|
|
209
|
+
updated_at: string;
|
|
210
|
+
}
|
|
211
|
+
export interface RawContactBulkDeleteResult {
|
|
212
|
+
deleted_count: number;
|
|
213
|
+
error_count: number;
|
|
214
|
+
results: Array<{
|
|
215
|
+
contact_id: string;
|
|
216
|
+
status: "deleted" | "error";
|
|
217
|
+
error?: string | null;
|
|
218
|
+
}>;
|
|
219
|
+
}
|
|
220
|
+
export interface RawContactVCardExportResult {
|
|
221
|
+
content_type: string;
|
|
222
|
+
contact_count: number;
|
|
223
|
+
vcard: string;
|
|
224
|
+
}
|
|
150
225
|
export interface RawContactImportResultItem {
|
|
151
226
|
index: number;
|
|
152
|
-
status:
|
|
227
|
+
status: ContactImportStatus;
|
|
153
228
|
contact?: RawContact | null;
|
|
154
229
|
error?: string | null;
|
|
230
|
+
conflicting_contact_id?: string | null;
|
|
155
231
|
}
|
|
156
232
|
export interface RawContactImportResult {
|
|
157
233
|
created_count: number;
|
|
@@ -166,6 +242,8 @@ export declare function parseContactAddress(r: RawContactAddress): ContactAddres
|
|
|
166
242
|
export declare function parseContactCustomField(r: RawContactCustomField): ContactCustomField;
|
|
167
243
|
export declare function parseContactAccess(r: RawContactAccess): ContactAccess;
|
|
168
244
|
export declare function parseContact(r: RawContact): Contact;
|
|
245
|
+
export declare function parseContactBulkDeleteResult(r: RawContactBulkDeleteResult): ContactBulkDeleteResult;
|
|
246
|
+
export declare function parseContactVCardExportResult(r: RawContactVCardExportResult): ContactVCardExportResult;
|
|
169
247
|
export declare function parseContactImportResultItem(r: RawContactImportResultItem): ContactImportResultItem;
|
|
170
248
|
export declare function parseContactImportResult(r: RawContactImportResult): ContactImportResult;
|
|
171
249
|
export declare function contactEmailToWire(e: ContactEmail): RawContactEmail;
|