@inkbox/sdk 0.2.5 → 0.2.6
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 +62 -0
- package/dist/agent_signup/types.d.ts +82 -0
- package/dist/agent_signup/types.d.ts.map +1 -0
- package/dist/agent_signup/types.js +59 -0
- package/dist/agent_signup/types.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inkbox.d.ts +36 -0
- package/dist/inkbox.d.ts.map +1 -1
- package/dist/inkbox.js +89 -1
- package/dist/inkbox.js.map +1 -1
- package/dist/whoami/types.d.ts +55 -0
- package/dist/whoami/types.d.ts.map +1 -0
- package/dist/whoami/types.js +34 -0
- package/dist/whoami/types.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -66,6 +66,50 @@ for (const login of creds.listLogins()) {
|
|
|
66
66
|
|
|
67
67
|
---
|
|
68
68
|
|
|
69
|
+
## Agent Signup
|
|
70
|
+
|
|
71
|
+
Agents can self-register without a pre-existing API key. All signup methods are **static** — no `Inkbox` instance required.
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import { Inkbox } from "@inkbox/sdk";
|
|
75
|
+
|
|
76
|
+
// Sign up (public — no API key needed)
|
|
77
|
+
const result = await Inkbox.signup({
|
|
78
|
+
humanEmail: "john@example.com",
|
|
79
|
+
displayName: "Sales Agent",
|
|
80
|
+
noteToHuman: "Hey John, this is your sales bot signing up!",
|
|
81
|
+
});
|
|
82
|
+
const apiKey = result.apiKey; // save — shown only once
|
|
83
|
+
const email = result.emailAddress; // e.g. "sales-agent-a1b2c3@inkboxmail.com"
|
|
84
|
+
const handle = result.agentHandle; // e.g. "sales-agent-a1b2c3"
|
|
85
|
+
|
|
86
|
+
// Verify (after human shares the 6-digit code from the email)
|
|
87
|
+
await Inkbox.verifySignup(apiKey, { verificationCode: "483921" });
|
|
88
|
+
|
|
89
|
+
// Resend verification email (5-minute cooldown)
|
|
90
|
+
await Inkbox.resendSignupVerification(apiKey);
|
|
91
|
+
|
|
92
|
+
// Check status and restrictions
|
|
93
|
+
const status = await Inkbox.getSignupStatus(apiKey);
|
|
94
|
+
console.log(status.claimStatus); // "agent_unclaimed" or "agent_claimed"
|
|
95
|
+
console.log(status.restrictions.maxSendsPerDay); // 10 (unclaimed) or 500 (claimed)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
| Method | Auth | Returns |
|
|
99
|
+
|---|---|---|
|
|
100
|
+
| `Inkbox.signup(request, options?)` | None | `AgentSignupResponse` |
|
|
101
|
+
| `Inkbox.verifySignup(apiKey, request, options?)` | API key | `AgentSignupVerifyResponse` |
|
|
102
|
+
| `Inkbox.resendSignupVerification(apiKey, options?)` | API key | `AgentSignupResendResponse` |
|
|
103
|
+
| `Inkbox.getSignupStatus(apiKey, options?)` | API key | `AgentSignupStatusResponse` |
|
|
104
|
+
|
|
105
|
+
`request` for `signup()` requires `humanEmail`, `displayName`, and `noteToHuman`. All methods accept an optional `options` object with `baseUrl` and `timeoutMs`.
|
|
106
|
+
|
|
107
|
+
> **Note:** Unclaimed agents can only send to the `humanEmail` specified at signup (max 10/day). After verification or human approval in the console, full capabilities are unlocked.
|
|
108
|
+
|
|
109
|
+
> **Note:** The `organizationId` returned at signup is provisional (`org_agent_...`). It may change to a real organization ID after verification or human approval. Always use the `organizationId` from the most recent response (`verifySignup` or `resendSignupVerification`) rather than caching the value from the initial `signup()` call.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
69
113
|
## Identities
|
|
70
114
|
|
|
71
115
|
`inkbox.createIdentity()` and `inkbox.getIdentity()` return an `AgentIdentity` object that holds the identity's channels and exposes convenience methods scoped to those channels.
|
|
@@ -574,6 +618,24 @@ await inkbox.phoneNumbers.update(number.id, {
|
|
|
574
618
|
|
|
575
619
|
---
|
|
576
620
|
|
|
621
|
+
## Whoami
|
|
622
|
+
|
|
623
|
+
```ts
|
|
624
|
+
// Check the authenticated caller's identity
|
|
625
|
+
const info = await inkbox.whoami();
|
|
626
|
+
console.log(info.authType); // "api_key" or "jwt"
|
|
627
|
+
console.log(info.organizationId);
|
|
628
|
+
|
|
629
|
+
// Narrow by auth type (discriminated union)
|
|
630
|
+
if (info.authType === "api_key") {
|
|
631
|
+
console.log(info.keyId, info.label);
|
|
632
|
+
} else {
|
|
633
|
+
console.log(info.email, info.orgRole);
|
|
634
|
+
}
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
---
|
|
638
|
+
|
|
577
639
|
## Signing Keys
|
|
578
640
|
|
|
579
641
|
```ts
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox/agent_signup/types.ts
|
|
3
|
+
*
|
|
4
|
+
* Types for the agent self-signup flow.
|
|
5
|
+
*/
|
|
6
|
+
export interface AgentSignupRequest {
|
|
7
|
+
humanEmail: string;
|
|
8
|
+
displayName: string;
|
|
9
|
+
noteToHuman: string;
|
|
10
|
+
}
|
|
11
|
+
export interface AgentSignupResponse {
|
|
12
|
+
emailAddress: string;
|
|
13
|
+
organizationId: string;
|
|
14
|
+
apiKey: string;
|
|
15
|
+
agentHandle: string;
|
|
16
|
+
claimStatus: string;
|
|
17
|
+
humanEmail: string;
|
|
18
|
+
message: string;
|
|
19
|
+
}
|
|
20
|
+
export interface AgentSignupVerifyRequest {
|
|
21
|
+
verificationCode: string;
|
|
22
|
+
}
|
|
23
|
+
export interface AgentSignupVerifyResponse {
|
|
24
|
+
claimStatus: string;
|
|
25
|
+
organizationId: string;
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
export interface AgentSignupResendResponse {
|
|
29
|
+
claimStatus: string;
|
|
30
|
+
organizationId: string;
|
|
31
|
+
message: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SignupRestrictions {
|
|
34
|
+
maxSendsPerDay: number;
|
|
35
|
+
allowedRecipients: string[];
|
|
36
|
+
canReceive: boolean;
|
|
37
|
+
canCreateMailboxes: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface AgentSignupStatusResponse {
|
|
40
|
+
claimStatus: string;
|
|
41
|
+
humanState: string;
|
|
42
|
+
humanEmail: string;
|
|
43
|
+
restrictions: SignupRestrictions;
|
|
44
|
+
}
|
|
45
|
+
export interface RawAgentSignupResponse {
|
|
46
|
+
email_address: string;
|
|
47
|
+
organization_id: string;
|
|
48
|
+
api_key: string;
|
|
49
|
+
agent_handle: string;
|
|
50
|
+
claim_status: string;
|
|
51
|
+
human_email: string;
|
|
52
|
+
message: string;
|
|
53
|
+
}
|
|
54
|
+
export interface RawAgentSignupVerifyResponse {
|
|
55
|
+
claim_status: string;
|
|
56
|
+
organization_id: string;
|
|
57
|
+
message: string;
|
|
58
|
+
}
|
|
59
|
+
export interface RawAgentSignupResendResponse {
|
|
60
|
+
claim_status: string;
|
|
61
|
+
organization_id: string;
|
|
62
|
+
message: string;
|
|
63
|
+
}
|
|
64
|
+
export interface RawSignupRestrictions {
|
|
65
|
+
max_sends_per_day: number;
|
|
66
|
+
allowed_recipients: string[];
|
|
67
|
+
can_receive: boolean;
|
|
68
|
+
can_create_mailboxes: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface RawAgentSignupStatusResponse {
|
|
71
|
+
claim_status: string;
|
|
72
|
+
human_state: string;
|
|
73
|
+
human_email: string;
|
|
74
|
+
restrictions: RawSignupRestrictions;
|
|
75
|
+
}
|
|
76
|
+
export declare function parseAgentSignupResponse(r: RawAgentSignupResponse): AgentSignupResponse;
|
|
77
|
+
export declare function parseAgentSignupVerifyResponse(r: RawAgentSignupVerifyResponse): AgentSignupVerifyResponse;
|
|
78
|
+
export declare function parseAgentSignupResendResponse(r: RawAgentSignupResendResponse): AgentSignupResendResponse;
|
|
79
|
+
export declare function parseAgentSignupStatusResponse(r: RawAgentSignupStatusResponse): AgentSignupStatusResponse;
|
|
80
|
+
export declare function agentSignupRequestToWire(req: AgentSignupRequest): Record<string, string>;
|
|
81
|
+
export declare function agentSignupVerifyRequestToWire(req: AgentSignupVerifyRequest): Record<string, string>;
|
|
82
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent_signup/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAID,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,qBAAqB,CAAC;CACrC;AAID,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,sBAAsB,GAAG,mBAAmB,CAUvF;AAED,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,4BAA4B,GAAG,yBAAyB,CAMzG;AAED,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,4BAA4B,GAAG,yBAAyB,CAMzG;AAWD,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,4BAA4B,GAAG,yBAAyB,CAOzG;AAID,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,wBAAwB,GAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox/agent_signup/types.ts
|
|
3
|
+
*
|
|
4
|
+
* Types for the agent self-signup flow.
|
|
5
|
+
*/
|
|
6
|
+
// ---- parsers ----
|
|
7
|
+
export function parseAgentSignupResponse(r) {
|
|
8
|
+
return {
|
|
9
|
+
emailAddress: r.email_address,
|
|
10
|
+
organizationId: r.organization_id,
|
|
11
|
+
apiKey: r.api_key,
|
|
12
|
+
agentHandle: r.agent_handle,
|
|
13
|
+
claimStatus: r.claim_status,
|
|
14
|
+
humanEmail: r.human_email,
|
|
15
|
+
message: r.message,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function parseAgentSignupVerifyResponse(r) {
|
|
19
|
+
return {
|
|
20
|
+
claimStatus: r.claim_status,
|
|
21
|
+
organizationId: r.organization_id,
|
|
22
|
+
message: r.message,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function parseAgentSignupResendResponse(r) {
|
|
26
|
+
return {
|
|
27
|
+
claimStatus: r.claim_status,
|
|
28
|
+
organizationId: r.organization_id,
|
|
29
|
+
message: r.message,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function parseSignupRestrictions(r) {
|
|
33
|
+
return {
|
|
34
|
+
maxSendsPerDay: r.max_sends_per_day,
|
|
35
|
+
allowedRecipients: r.allowed_recipients,
|
|
36
|
+
canReceive: r.can_receive,
|
|
37
|
+
canCreateMailboxes: r.can_create_mailboxes,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function parseAgentSignupStatusResponse(r) {
|
|
41
|
+
return {
|
|
42
|
+
claimStatus: r.claim_status,
|
|
43
|
+
humanState: r.human_state,
|
|
44
|
+
humanEmail: r.human_email,
|
|
45
|
+
restrictions: parseSignupRestrictions(r.restrictions),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// ---- to-wire ----
|
|
49
|
+
export function agentSignupRequestToWire(req) {
|
|
50
|
+
return {
|
|
51
|
+
human_email: req.humanEmail,
|
|
52
|
+
display_name: req.displayName,
|
|
53
|
+
note_to_human: req.noteToHuman,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function agentSignupVerifyRequestToWire(req) {
|
|
57
|
+
return { verification_code: req.verificationCode };
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent_signup/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwFH,oBAAoB;AAEpB,MAAM,UAAU,wBAAwB,CAAC,CAAyB;IAChE,OAAO;QACL,YAAY,EAAE,CAAC,CAAC,aAAa;QAC7B,cAAc,EAAE,CAAC,CAAC,eAAe;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO;QACjB,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,UAAU,EAAE,CAAC,CAAC,WAAW;QACzB,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,CAA+B;IAC5E,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,cAAc,EAAE,CAAC,CAAC,eAAe;QACjC,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,CAA+B;IAC5E,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,cAAc,EAAE,CAAC,CAAC,eAAe;QACjC,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,CAAwB;IACvD,OAAO;QACL,cAAc,EAAE,CAAC,CAAC,iBAAiB;QACnC,iBAAiB,EAAE,CAAC,CAAC,kBAAkB;QACvC,UAAU,EAAE,CAAC,CAAC,WAAW;QACzB,kBAAkB,EAAE,CAAC,CAAC,oBAAoB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,CAA+B;IAC5E,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,UAAU,EAAE,CAAC,CAAC,WAAW;QACzB,UAAU,EAAE,CAAC,CAAC,WAAW;QACzB,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,oBAAoB;AAEpB,MAAM,UAAU,wBAAwB,CACtC,GAAuB;IAEvB,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,UAAU;QAC3B,YAAY,EAAE,GAAG,CAAC,WAAW;QAC7B,aAAa,EAAE,GAAG,CAAC,WAAW;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,GAA6B;IAE7B,OAAO,EAAE,iBAAiB,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC;AACrD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export { Inkbox } from "./inkbox.js";
|
|
2
2
|
export { AgentIdentity } from "./agent_identity.js";
|
|
3
3
|
export { Credentials } from "./credentials.js";
|
|
4
|
-
export type { InkboxOptions } from "./inkbox.js";
|
|
4
|
+
export type { InkboxOptions, SignupOptions } from "./inkbox.js";
|
|
5
|
+
export type { AgentSignupRequest, AgentSignupResponse, AgentSignupVerifyRequest, AgentSignupVerifyResponse, AgentSignupResendResponse, SignupRestrictions, AgentSignupStatusResponse, } from "./agent_signup/types.js";
|
|
5
6
|
export { InkboxError, InkboxAPIError, InkboxVaultKeyError } from "./_http.js";
|
|
7
|
+
export type { WhoamiApiKeyResponse, WhoamiJwtResponse, WhoamiResponse, } from "./whoami/types.js";
|
|
6
8
|
export type { SigningKey } from "./signing_keys.js";
|
|
7
9
|
export { verifyWebhook } from "./signing_keys.js";
|
|
8
10
|
export { MessageDirection } from "./mail/types.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC9E,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EACV,OAAO,EACP,OAAO,EACP,aAAa,EACb,MAAM,EACN,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,WAAW,EACX,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,eAAe,EACf,gCAAgC,EAChC,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EACV,UAAU,EACV,SAAS,EACT,qBAAqB,EACrB,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5E,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAW/C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAO9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AA0BnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAgBvD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC"}
|
package/dist/inkbox.d.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Inkbox — org-level entry point for all Inkbox APIs.
|
|
5
5
|
*/
|
|
6
|
+
import { HttpTransport } from "./_http.js";
|
|
7
|
+
import type { WhoamiResponse } from "./whoami/types.js";
|
|
6
8
|
import { MailboxesResource } from "./mail/resources/mailboxes.js";
|
|
7
9
|
import { MessagesResource } from "./mail/resources/messages.js";
|
|
8
10
|
import { ThreadsResource } from "./mail/resources/threads.js";
|
|
@@ -16,6 +18,13 @@ import { IdentitiesResource } from "./identities/resources/identities.js";
|
|
|
16
18
|
import { VaultResource } from "./vault/resources/vault.js";
|
|
17
19
|
import { AgentIdentity } from "./agent_identity.js";
|
|
18
20
|
import type { AgentIdentitySummary, CreateIdentityOptions } from "./identities/types.js";
|
|
21
|
+
import type { AgentSignupRequest, AgentSignupResponse, AgentSignupVerifyRequest, AgentSignupVerifyResponse, AgentSignupResendResponse, AgentSignupStatusResponse } from "./agent_signup/types.js";
|
|
22
|
+
export interface SignupOptions {
|
|
23
|
+
/** Override the API base URL (useful for self-hosting or testing). */
|
|
24
|
+
baseUrl?: string;
|
|
25
|
+
/** Request timeout in milliseconds. Defaults to 30 000. */
|
|
26
|
+
timeoutMs?: number;
|
|
27
|
+
}
|
|
19
28
|
export interface InkboxOptions {
|
|
20
29
|
/** Your Inkbox API key (sent as `X-Service-Token`). */
|
|
21
30
|
apiKey: string;
|
|
@@ -77,6 +86,7 @@ export declare class Inkbox {
|
|
|
77
86
|
readonly _transcripts: TranscriptsResource;
|
|
78
87
|
readonly _idsResource: IdentitiesResource;
|
|
79
88
|
readonly _vaultResource: VaultResource;
|
|
89
|
+
readonly _rootApiHttp: HttpTransport;
|
|
80
90
|
/** @internal */
|
|
81
91
|
_vaultUnlockPromise: Promise<unknown> | null;
|
|
82
92
|
constructor(options: InkboxOptions);
|
|
@@ -145,5 +155,31 @@ export declare class Inkbox {
|
|
|
145
155
|
* @returns The new {@link SigningKey}.
|
|
146
156
|
*/
|
|
147
157
|
createSigningKey(): Promise<SigningKey>;
|
|
158
|
+
/**
|
|
159
|
+
* Return the authenticated caller's identity and auth type.
|
|
160
|
+
*
|
|
161
|
+
* @returns A {@link WhoamiResponse} — either an API-key or JWT variant.
|
|
162
|
+
*/
|
|
163
|
+
whoami(): Promise<WhoamiResponse>;
|
|
164
|
+
/** @internal One-shot fetch for agent-signup endpoints. */
|
|
165
|
+
private static _signupFetch;
|
|
166
|
+
/**
|
|
167
|
+
* Register a new agent (public — no API key required).
|
|
168
|
+
*
|
|
169
|
+
* Returns the provisioned email, org, and a one-time API key.
|
|
170
|
+
*/
|
|
171
|
+
static signup(request: AgentSignupRequest, options?: SignupOptions): Promise<AgentSignupResponse>;
|
|
172
|
+
/**
|
|
173
|
+
* Submit a 6-digit verification code to unlock full capabilities.
|
|
174
|
+
*/
|
|
175
|
+
static verifySignup(apiKey: string, request: AgentSignupVerifyRequest, options?: SignupOptions): Promise<AgentSignupVerifyResponse>;
|
|
176
|
+
/**
|
|
177
|
+
* Resend the verification email (5-minute cooldown).
|
|
178
|
+
*/
|
|
179
|
+
static resendSignupVerification(apiKey: string, options?: SignupOptions): Promise<AgentSignupResendResponse>;
|
|
180
|
+
/**
|
|
181
|
+
* Check the current signup claim status and restrictions.
|
|
182
|
+
*/
|
|
183
|
+
static getSignupStatus(apiKey: string, options?: SignupOptions): Promise<AgentSignupStatusResponse>;
|
|
148
184
|
}
|
|
149
185
|
//# sourceMappingURL=inkbox.d.ts.map
|
package/dist/inkbox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inkbox.d.ts","sourceRoot":"","sources":["../src/inkbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"inkbox.d.ts","sourceRoot":"","sources":["../src/inkbox.ts"],"names":[],"mappings":"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"}
|
package/dist/inkbox.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Inkbox — org-level entry point for all Inkbox APIs.
|
|
5
5
|
*/
|
|
6
|
-
import { HttpTransport } from "./_http.js";
|
|
6
|
+
import { HttpTransport, InkboxAPIError } from "./_http.js";
|
|
7
|
+
import { parseWhoamiResponse } from "./whoami/types.js";
|
|
7
8
|
import { MailboxesResource } from "./mail/resources/mailboxes.js";
|
|
8
9
|
import { MessagesResource } from "./mail/resources/messages.js";
|
|
9
10
|
import { ThreadsResource } from "./mail/resources/threads.js";
|
|
@@ -15,6 +16,7 @@ import { TranscriptsResource } from "./phone/resources/transcripts.js";
|
|
|
15
16
|
import { IdentitiesResource } from "./identities/resources/identities.js";
|
|
16
17
|
import { VaultResource } from "./vault/resources/vault.js";
|
|
17
18
|
import { AgentIdentity } from "./agent_identity.js";
|
|
19
|
+
import { agentSignupRequestToWire, agentSignupVerifyRequestToWire, parseAgentSignupResponse, parseAgentSignupVerifyResponse, parseAgentSignupResendResponse, parseAgentSignupStatusResponse, } from "./agent_signup/types.js";
|
|
18
20
|
const DEFAULT_BASE_URL = "https://inkbox.ai";
|
|
19
21
|
/**
|
|
20
22
|
* Org-level entry point for all Inkbox APIs.
|
|
@@ -63,6 +65,7 @@ export class Inkbox {
|
|
|
63
65
|
_transcripts;
|
|
64
66
|
_idsResource;
|
|
65
67
|
_vaultResource;
|
|
68
|
+
_rootApiHttp;
|
|
66
69
|
/** @internal */
|
|
67
70
|
_vaultUnlockPromise = null;
|
|
68
71
|
constructor(options) {
|
|
@@ -92,6 +95,7 @@ export class Inkbox {
|
|
|
92
95
|
this._texts = new TextsResource(phoneHttp);
|
|
93
96
|
this._transcripts = new TranscriptsResource(phoneHttp);
|
|
94
97
|
this._idsResource = new IdentitiesResource(idsHttp);
|
|
98
|
+
this._rootApiHttp = rootApiHttp;
|
|
95
99
|
this._vaultResource = new VaultResource(vaultHttp, rootApiHttp);
|
|
96
100
|
if (options.vaultKey !== undefined) {
|
|
97
101
|
this._vaultUnlockPromise = this._vaultResource.unlock(options.vaultKey);
|
|
@@ -199,5 +203,89 @@ export class Inkbox {
|
|
|
199
203
|
async createSigningKey() {
|
|
200
204
|
return this._signingKeys.createOrRotate();
|
|
201
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Return the authenticated caller's identity and auth type.
|
|
208
|
+
*
|
|
209
|
+
* @returns A {@link WhoamiResponse} — either an API-key or JWT variant.
|
|
210
|
+
*/
|
|
211
|
+
async whoami() {
|
|
212
|
+
const raw = await this._rootApiHttp.get("/whoami");
|
|
213
|
+
return parseWhoamiResponse(raw);
|
|
214
|
+
}
|
|
215
|
+
// ------------------------------------------------------------------
|
|
216
|
+
// Agent signup (static — no instance required)
|
|
217
|
+
// ------------------------------------------------------------------
|
|
218
|
+
/** @internal One-shot fetch for agent-signup endpoints. */
|
|
219
|
+
static async _signupFetch(method, path, opts) {
|
|
220
|
+
const base = opts.baseUrl ?? DEFAULT_BASE_URL;
|
|
221
|
+
if (!base.startsWith("https://")) {
|
|
222
|
+
const parsed = new URL(base);
|
|
223
|
+
if (parsed.hostname !== "localhost" && parsed.hostname !== "127.0.0.1") {
|
|
224
|
+
throw new Error("Only HTTPS base URLs are permitted (HTTP is allowed for " +
|
|
225
|
+
"localhost and 127.0.0.1).");
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
const url = `${base.replace(/\/$/, "")}/api/v1/agent-signup${path}`;
|
|
229
|
+
const ms = opts.timeoutMs ?? 30_000;
|
|
230
|
+
const headers = { Accept: "application/json" };
|
|
231
|
+
if (opts.apiKey)
|
|
232
|
+
headers["X-Service-Token"] = opts.apiKey;
|
|
233
|
+
let bodyStr;
|
|
234
|
+
if (opts.body !== undefined) {
|
|
235
|
+
headers["Content-Type"] = "application/json";
|
|
236
|
+
bodyStr = JSON.stringify(opts.body);
|
|
237
|
+
}
|
|
238
|
+
const controller = new AbortController();
|
|
239
|
+
const timer = setTimeout(() => controller.abort(), ms);
|
|
240
|
+
let resp;
|
|
241
|
+
try {
|
|
242
|
+
resp = await fetch(url, { method, headers, body: bodyStr, signal: controller.signal });
|
|
243
|
+
}
|
|
244
|
+
finally {
|
|
245
|
+
clearTimeout(timer);
|
|
246
|
+
}
|
|
247
|
+
if (!resp.ok) {
|
|
248
|
+
let detail;
|
|
249
|
+
try {
|
|
250
|
+
const err = (await resp.json());
|
|
251
|
+
detail = err.detail ?? resp.statusText;
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
detail = resp.statusText;
|
|
255
|
+
}
|
|
256
|
+
throw new InkboxAPIError(resp.status, detail);
|
|
257
|
+
}
|
|
258
|
+
return resp.json();
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Register a new agent (public — no API key required).
|
|
262
|
+
*
|
|
263
|
+
* Returns the provisioned email, org, and a one-time API key.
|
|
264
|
+
*/
|
|
265
|
+
static async signup(request, options) {
|
|
266
|
+
const raw = await Inkbox._signupFetch("POST", "", { body: agentSignupRequestToWire(request), ...options });
|
|
267
|
+
return parseAgentSignupResponse(raw);
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Submit a 6-digit verification code to unlock full capabilities.
|
|
271
|
+
*/
|
|
272
|
+
static async verifySignup(apiKey, request, options) {
|
|
273
|
+
const raw = await Inkbox._signupFetch("POST", "/verify", { apiKey, body: agentSignupVerifyRequestToWire(request), ...options });
|
|
274
|
+
return parseAgentSignupVerifyResponse(raw);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Resend the verification email (5-minute cooldown).
|
|
278
|
+
*/
|
|
279
|
+
static async resendSignupVerification(apiKey, options) {
|
|
280
|
+
const raw = await Inkbox._signupFetch("POST", "/resend-verification", { apiKey, ...options });
|
|
281
|
+
return parseAgentSignupResendResponse(raw);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Check the current signup claim status and restrictions.
|
|
285
|
+
*/
|
|
286
|
+
static async getSignupStatus(apiKey, options) {
|
|
287
|
+
const raw = await Inkbox._signupFetch("GET", "/status", { apiKey, ...options });
|
|
288
|
+
return parseAgentSignupStatusResponse(raw);
|
|
289
|
+
}
|
|
202
290
|
}
|
|
203
291
|
//# sourceMappingURL=inkbox.js.map
|
package/dist/inkbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inkbox.js","sourceRoot":"","sources":["../src/inkbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"inkbox.js","sourceRoot":"","sources":["../src/inkbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox/whoami/types.ts
|
|
3
|
+
*
|
|
4
|
+
* Types for the ``GET /api/whoami`` endpoint.
|
|
5
|
+
*/
|
|
6
|
+
export interface WhoamiApiKeyResponse {
|
|
7
|
+
authType: "api_key";
|
|
8
|
+
authSubtype: string | null;
|
|
9
|
+
organizationId: string | null;
|
|
10
|
+
createdBy: string | null;
|
|
11
|
+
creatorType: string | null;
|
|
12
|
+
keyId: string | null;
|
|
13
|
+
label: string | null;
|
|
14
|
+
description: string | null;
|
|
15
|
+
createdAt: number | null;
|
|
16
|
+
lastUsedAt: number | null;
|
|
17
|
+
expiresAt: number | null;
|
|
18
|
+
}
|
|
19
|
+
export interface WhoamiJwtResponse {
|
|
20
|
+
authType: "jwt";
|
|
21
|
+
authSubtype: string | null;
|
|
22
|
+
userId: string | null;
|
|
23
|
+
email: string | null;
|
|
24
|
+
name: string | null;
|
|
25
|
+
organizationId: string | null;
|
|
26
|
+
orgRole: string | null;
|
|
27
|
+
orgSlug: string | null;
|
|
28
|
+
}
|
|
29
|
+
export type WhoamiResponse = WhoamiApiKeyResponse | WhoamiJwtResponse;
|
|
30
|
+
export interface RawWhoamiApiKeyResponse {
|
|
31
|
+
auth_type: "api_key";
|
|
32
|
+
auth_subtype: string | null;
|
|
33
|
+
organization_id: string | null;
|
|
34
|
+
created_by: string | null;
|
|
35
|
+
creator_type: string | null;
|
|
36
|
+
key_id: string | null;
|
|
37
|
+
label: string | null;
|
|
38
|
+
description: string | null;
|
|
39
|
+
created_at: number | null;
|
|
40
|
+
last_used_at: number | null;
|
|
41
|
+
expires_at: number | null;
|
|
42
|
+
}
|
|
43
|
+
export interface RawWhoamiJwtResponse {
|
|
44
|
+
auth_type: "jwt";
|
|
45
|
+
auth_subtype: string | null;
|
|
46
|
+
user_id: string | null;
|
|
47
|
+
email: string | null;
|
|
48
|
+
name: string | null;
|
|
49
|
+
organization_id: string | null;
|
|
50
|
+
org_role: string | null;
|
|
51
|
+
org_slug: string | null;
|
|
52
|
+
}
|
|
53
|
+
export type RawWhoamiResponse = RawWhoamiApiKeyResponse | RawWhoamiJwtResponse;
|
|
54
|
+
export declare function parseWhoamiResponse(r: RawWhoamiResponse): WhoamiResponse;
|
|
55
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/whoami/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;AAItE,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,KAAK,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;AAI/E,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,iBAAiB,GAAG,cAAc,CA0BxE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox/whoami/types.ts
|
|
3
|
+
*
|
|
4
|
+
* Types for the ``GET /api/whoami`` endpoint.
|
|
5
|
+
*/
|
|
6
|
+
// ---- parser ----
|
|
7
|
+
export function parseWhoamiResponse(r) {
|
|
8
|
+
if (r.auth_type === "api_key") {
|
|
9
|
+
return {
|
|
10
|
+
authType: r.auth_type,
|
|
11
|
+
authSubtype: r.auth_subtype,
|
|
12
|
+
organizationId: r.organization_id,
|
|
13
|
+
createdBy: r.created_by,
|
|
14
|
+
creatorType: r.creator_type,
|
|
15
|
+
keyId: r.key_id,
|
|
16
|
+
label: r.label,
|
|
17
|
+
description: r.description,
|
|
18
|
+
createdAt: r.created_at,
|
|
19
|
+
lastUsedAt: r.last_used_at,
|
|
20
|
+
expiresAt: r.expires_at,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
authType: r.auth_type,
|
|
25
|
+
authSubtype: r.auth_subtype,
|
|
26
|
+
userId: r.user_id,
|
|
27
|
+
email: r.email,
|
|
28
|
+
name: r.name,
|
|
29
|
+
organizationId: r.organization_id,
|
|
30
|
+
orgRole: r.org_role,
|
|
31
|
+
orgSlug: r.org_slug,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/whoami/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4DH,mBAAmB;AAEnB,MAAM,UAAU,mBAAmB,CAAC,CAAoB;IACtD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,CAAC,CAAC,SAAS;YACrB,WAAW,EAAE,CAAC,CAAC,YAAY;YAC3B,cAAc,EAAE,CAAC,CAAC,eAAe;YACjC,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,WAAW,EAAE,CAAC,CAAC,YAAY;YAC3B,KAAK,EAAE,CAAC,CAAC,MAAM;YACf,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,UAAU,EAAE,CAAC,CAAC,YAAY;YAC1B,SAAS,EAAE,CAAC,CAAC,UAAU;SACxB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,MAAM,EAAE,CAAC,CAAC,OAAO;QACjB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,cAAc,EAAE,CAAC,CAAC,eAAe;QACjC,OAAO,EAAE,CAAC,CAAC,QAAQ;QACnB,OAAO,EAAE,CAAC,CAAC,QAAQ;KACpB,CAAC;AACJ,CAAC"}
|