@atlasauth/backend 0.1.7 → 0.4.0
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/dist/client/api-keys.d.ts +50 -1
- package/dist/client/api-keys.js +14 -0
- package/dist/client/api-keys.js.map +1 -1
- package/dist/client/captcha.d.ts +43 -0
- package/dist/client/captcha.js +27 -0
- package/dist/client/captcha.js.map +1 -0
- package/dist/client/index.d.ts +44 -2
- package/dist/client/index.js +9 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/machines.d.ts +183 -0
- package/dist/client/machines.js +73 -0
- package/dist/client/machines.js.map +1 -0
- package/dist/client/messaging.d.ts +287 -21
- package/dist/client/messaging.js +18 -6
- package/dist/client/messaging.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/pca/require-pca.d.ts +47 -0
- package/dist/pca/require-pca.js +121 -0
- package/dist/pca/require-pca.js.map +1 -0
- package/dist/pca/verify.d.ts +36 -0
- package/dist/pca/verify.js +136 -0
- package/dist/pca/verify.js.map +1 -0
- package/package.json +3 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type RequestFn } from './request';
|
|
2
|
-
import type { ListPage } from './types';
|
|
2
|
+
import type { CursorPage, ListPage } from './types';
|
|
3
3
|
export type ApiKeySubjectType = 'user' | 'organization';
|
|
4
4
|
/**
|
|
5
5
|
* An end-user API key — Clerk `api_keys` parity. A tenant mints these for ITS OWN
|
|
@@ -56,6 +56,45 @@ export type ApiKeyVerification = {
|
|
|
56
56
|
claims: Record<string, unknown>;
|
|
57
57
|
last_used_at: number | null;
|
|
58
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* §P1-8 a short-lived, offline-verifiable access JWT minted from a long-lived
|
|
61
|
+
* `ak_` key (`POST /v1/api_keys/token`). Signed with the instance's RS256 key, so
|
|
62
|
+
* any resource server verifies it against the public JWKS without a round trip.
|
|
63
|
+
*/
|
|
64
|
+
export interface ApiKeyToken {
|
|
65
|
+
object: 'api_key_token';
|
|
66
|
+
token: string;
|
|
67
|
+
token_type: 'Bearer';
|
|
68
|
+
jti: string;
|
|
69
|
+
key_id: string;
|
|
70
|
+
subject_type: ApiKeySubjectType;
|
|
71
|
+
subject_id: string;
|
|
72
|
+
scopes: string[];
|
|
73
|
+
constraints: Record<string, unknown>;
|
|
74
|
+
expires_in: number;
|
|
75
|
+
expires_at: number;
|
|
76
|
+
/** Which JWKS/issuer a verifier should check, so it needn't parse the JWT first. */
|
|
77
|
+
issuer: string;
|
|
78
|
+
}
|
|
79
|
+
export interface MintApiKeyTokenBody {
|
|
80
|
+
/** The long-lived `ak_` secret to mint from. */
|
|
81
|
+
secret: string;
|
|
82
|
+
/** Requested lifetime; clamped to the key's ceiling, its expiry, and the global cap. */
|
|
83
|
+
ttl_seconds?: number;
|
|
84
|
+
audience?: string | string[];
|
|
85
|
+
}
|
|
86
|
+
/** One entry in the revocation feed: an id and when it was revoked. */
|
|
87
|
+
export interface RevokedApiKeyRef {
|
|
88
|
+
object: 'api_key';
|
|
89
|
+
id: string;
|
|
90
|
+
revoked_at: number | null;
|
|
91
|
+
}
|
|
92
|
+
export interface ListRevokedApiKeysQuery {
|
|
93
|
+
/** An ISO-8601 instant, epoch-millis, or a `next_cursor` from a previous page. */
|
|
94
|
+
since?: string;
|
|
95
|
+
/** Page size (server clamps to its own maximum). */
|
|
96
|
+
limit?: number;
|
|
97
|
+
}
|
|
59
98
|
export declare function apiKeysResource(request: RequestFn): {
|
|
60
99
|
/** Optionally narrowed to one subject. */
|
|
61
100
|
list(query?: {
|
|
@@ -74,4 +113,14 @@ export declare function apiKeysResource(request: RequestFn): {
|
|
|
74
113
|
id: string;
|
|
75
114
|
revoked: true;
|
|
76
115
|
}>;
|
|
116
|
+
/**
|
|
117
|
+
* §P1-8 mint a short-lived delegated token from an `ak_` key. Rate-limited —
|
|
118
|
+
* presenting the secret is the same online credential surface as verify.
|
|
119
|
+
*/
|
|
120
|
+
mintToken(body: MintApiKeyTokenBody): Promise<ApiKeyToken>;
|
|
121
|
+
/**
|
|
122
|
+
* §P1-8 the revocation feed a resource server polls to deny-list revoked keys
|
|
123
|
+
* while their delegated tokens are still live. Keyset-paginated via `since`.
|
|
124
|
+
*/
|
|
125
|
+
listRevoked(query?: ListRevokedApiKeysQuery): Promise<CursorPage<RevokedApiKeyRef>>;
|
|
77
126
|
};
|
package/dist/client/api-keys.js
CHANGED
|
@@ -26,6 +26,20 @@ function apiKeysResource(request) {
|
|
|
26
26
|
delete(id) {
|
|
27
27
|
return request({ method: 'DELETE', path: `/v1/api_keys/${(0, request_1.enc)(id)}` });
|
|
28
28
|
},
|
|
29
|
+
/**
|
|
30
|
+
* §P1-8 mint a short-lived delegated token from an `ak_` key. Rate-limited —
|
|
31
|
+
* presenting the secret is the same online credential surface as verify.
|
|
32
|
+
*/
|
|
33
|
+
mintToken(body) {
|
|
34
|
+
return request({ method: 'POST', path: '/v1/api_keys/token', body });
|
|
35
|
+
},
|
|
36
|
+
/**
|
|
37
|
+
* §P1-8 the revocation feed a resource server polls to deny-list revoked keys
|
|
38
|
+
* while their delegated tokens are still live. Keyset-paginated via `since`.
|
|
39
|
+
*/
|
|
40
|
+
listRevoked(query = {}) {
|
|
41
|
+
return request({ method: 'GET', path: '/v1/api_keys/revoked', query: { ...query } });
|
|
42
|
+
},
|
|
29
43
|
};
|
|
30
44
|
}
|
|
31
45
|
//# sourceMappingURL=api-keys.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../../src/client/api-keys.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../../src/client/api-keys.ts"],"names":[],"mappings":";;AA2GA,0CA0CC;AArJD,uCAAgD;AA2GhD,SAAgB,eAAe,CAAC,OAAkB;IAChD,OAAO;QACL,0CAA0C;QAC1C,IAAI,CAAC,KAGJ;YACC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,qDAAqD;QACrD,MAAM,CAAC,IAAsB,EAAE,cAAuB;YACpD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,iFAAiF;QACjF,MAAM,CAAC,MAAc;YACnB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAAsB;YACvC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,sEAAsE;QACtE,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QACD;;;WAGG;QACH,SAAS,CAAC,IAAyB;YACjC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QACD;;;WAGG;QACH,WAAW,CAAC,QAAiC,EAAE;YAC7C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type RequestFn } from './request';
|
|
2
|
+
/**
|
|
3
|
+
* The verdict `POST /v1/captcha/verify` returns. `success` is the gate decision;
|
|
4
|
+
* `score` (0..1, higher = more human), `verdict` and `meta` are the provider's
|
|
5
|
+
* own judgment, surfaced for the caller's risk pipeline.
|
|
6
|
+
*/
|
|
7
|
+
export interface CaptchaVerification {
|
|
8
|
+
object: 'captcha_verification';
|
|
9
|
+
success: boolean;
|
|
10
|
+
/** The action this verification resolved for, or null for the base provider. */
|
|
11
|
+
action: string | null;
|
|
12
|
+
/** The provider the token was verified against. */
|
|
13
|
+
provider: string;
|
|
14
|
+
/** Normalized 0..1 (higher = more human); absent for pass/fail-only providers. */
|
|
15
|
+
score?: number;
|
|
16
|
+
/** Coarse label; `edge` for edge-enforced providers (AWS WAF, PerimeterX, …). */
|
|
17
|
+
verdict?: 'pass' | 'fail' | 'low_score' | 'edge';
|
|
18
|
+
/** The provider-issued challenge timestamp, when it returns one. */
|
|
19
|
+
challenge_ts?: string;
|
|
20
|
+
/** Provider-specific reason codes / breakdown (server-side only). */
|
|
21
|
+
meta?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/** Options for a verify call. */
|
|
24
|
+
export interface VerifyCaptchaOptions {
|
|
25
|
+
/**
|
|
26
|
+
* The customer-named action to resolve the provider for (e.g. "comment.create").
|
|
27
|
+
* Omit to use the instance's base provider.
|
|
28
|
+
*/
|
|
29
|
+
action?: string;
|
|
30
|
+
/** The end-user's IP, forwarded to the provider when it accepts one (advised). */
|
|
31
|
+
remoteIp?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* "CAPTCHA anywhere" — verify a token server-side against the instance's
|
|
35
|
+
* centrally-configured provider. Atlas holds the provider secret and does the
|
|
36
|
+
* verification, so a tenant protects any action without holding the secret or
|
|
37
|
+
* writing its own verification code. Fails CLOSED: an unconfigured provider,
|
|
38
|
+
* missing secret, outage or bad token all come back `success: false`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function captchaResource(request: RequestFn): {
|
|
41
|
+
/** Verify a CAPTCHA token for an optional action. */
|
|
42
|
+
verify(token: string, options?: VerifyCaptchaOptions): Promise<CaptchaVerification>;
|
|
43
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.captchaResource = captchaResource;
|
|
4
|
+
/**
|
|
5
|
+
* "CAPTCHA anywhere" — verify a token server-side against the instance's
|
|
6
|
+
* centrally-configured provider. Atlas holds the provider secret and does the
|
|
7
|
+
* verification, so a tenant protects any action without holding the secret or
|
|
8
|
+
* writing its own verification code. Fails CLOSED: an unconfigured provider,
|
|
9
|
+
* missing secret, outage or bad token all come back `success: false`.
|
|
10
|
+
*/
|
|
11
|
+
function captchaResource(request) {
|
|
12
|
+
return {
|
|
13
|
+
/** Verify a CAPTCHA token for an optional action. */
|
|
14
|
+
verify(token, options = {}) {
|
|
15
|
+
return request({
|
|
16
|
+
method: 'POST',
|
|
17
|
+
path: '/v1/captcha/verify',
|
|
18
|
+
body: {
|
|
19
|
+
token,
|
|
20
|
+
...(options.action ? { action: options.action } : {}),
|
|
21
|
+
...(options.remoteIp ? { remote_ip: options.remoteIp } : {}),
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=captcha.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/client/captcha.ts"],"names":[],"mappings":";;AA0CA,0CAeC;AAtBD;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,OAAkB;IAChD,OAAO;QACL,qDAAqD;QACrD,MAAM,CAAC,KAAa,EAAE,UAAgC,EAAE;YACtD,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE;oBACJ,KAAK;oBACL,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7D;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -390,6 +390,33 @@ export declare function createAtlasClient(config: AtlasClientConfig): {
|
|
|
390
390
|
id: string;
|
|
391
391
|
revoked: true;
|
|
392
392
|
}>;
|
|
393
|
+
mintToken(body: import("./api-keys").MintApiKeyTokenBody): Promise<import("./api-keys").ApiKeyToken>;
|
|
394
|
+
listRevoked(query?: import("./api-keys").ListRevokedApiKeysQuery): Promise<import("./types").CursorPage<import("./api-keys").RevokedApiKeyRef>>;
|
|
395
|
+
};
|
|
396
|
+
machines: {
|
|
397
|
+
list(query?: import("./machines").ListMachinesQuery): Promise<import("./machines").MachineListPage>;
|
|
398
|
+
create(body: import("./machines").CreateMachineBody, idempotencyKey?: string): Promise<import("./machines").MachineWithSecret>;
|
|
399
|
+
get(id: string): Promise<import("./machines").Machine>;
|
|
400
|
+
rename(id: string, name: string): Promise<import("./machines").Machine>;
|
|
401
|
+
patchMetadata(id: string, metadata: import("./machines").MachineMetadata): Promise<import("./machines").Machine>;
|
|
402
|
+
approve(id: string): Promise<import("./machines").Machine>;
|
|
403
|
+
revoke(id: string): Promise<import("./machines").Machine>;
|
|
404
|
+
rotateSecret(id: string): Promise<import("./machines").MachineWithSecret>;
|
|
405
|
+
rotateKey(id: string, publicKeyPem: string): Promise<import("./machines").Machine>;
|
|
406
|
+
delete(id: string): Promise<{
|
|
407
|
+
object: "machine";
|
|
408
|
+
id: string;
|
|
409
|
+
deleted: true;
|
|
410
|
+
}>;
|
|
411
|
+
organizationMemberships(id: string): Promise<import("./machines").MachineOrganizationMembershipPage>;
|
|
412
|
+
createEnrolmentToken(body?: import("./machines").CreateEnrolmentTokenBody, idempotencyKey?: string): Promise<import("./machines").MachineEnrolmentTokenWithSecret>;
|
|
413
|
+
listEnrolmentTokens(): Promise<import("./types").ListPage<import("./machines").MachineEnrolmentToken>>;
|
|
414
|
+
deleteEnrolmentToken(id: string): Promise<{
|
|
415
|
+
object: "machine_enrolment_token";
|
|
416
|
+
id: string;
|
|
417
|
+
deleted: true;
|
|
418
|
+
}>;
|
|
419
|
+
verifyM2mToken(token: string): Promise<import("./machines").M2mTokenVerification>;
|
|
393
420
|
};
|
|
394
421
|
oauthProviders: {
|
|
395
422
|
list(): Promise<import("./types").ListPage<import("./oauth-providers").OAuthProvider>>;
|
|
@@ -654,8 +681,18 @@ export declare function createAtlasClient(config: AtlasClientConfig): {
|
|
|
654
681
|
};
|
|
655
682
|
messaging: {
|
|
656
683
|
get(): Promise<import("./messaging").MessagingProviders>;
|
|
657
|
-
setEmail
|
|
658
|
-
|
|
684
|
+
setEmail: {
|
|
685
|
+
(body: import("./messaging").EmailProviderInput): Promise<import("./messaging").EmailProvider>;
|
|
686
|
+
<T extends string>(body: Omit<import("./messaging").MessagingProviderInput, "transport"> & {
|
|
687
|
+
transport: T;
|
|
688
|
+
} & (string extends T ? unknown : never)): Promise<import("./messaging").MessagingProvider>;
|
|
689
|
+
};
|
|
690
|
+
setSms: {
|
|
691
|
+
(body: import("./messaging").SmsProviderInput): Promise<import("./messaging").SmsProvider>;
|
|
692
|
+
<T extends string>(body: Omit<import("./messaging").MessagingProviderInput, "transport"> & {
|
|
693
|
+
transport: T;
|
|
694
|
+
} & (string extends T ? unknown : never)): Promise<import("./messaging").MessagingProvider>;
|
|
695
|
+
};
|
|
659
696
|
deleteChannel(channel: "email" | "sms"): Promise<import("./messaging").DeletedMessagingProvider>;
|
|
660
697
|
test(channel: "email" | "sms", body: {
|
|
661
698
|
to: string;
|
|
@@ -743,6 +780,9 @@ export declare function createAtlasClient(config: AtlasClientConfig): {
|
|
|
743
780
|
tokens: {
|
|
744
781
|
verify(body: import("./tokens").VerifyTokenBody): Promise<import("./tokens").TokenVerification>;
|
|
745
782
|
};
|
|
783
|
+
captcha: {
|
|
784
|
+
verify(token: string, options?: import("./captcha").VerifyCaptchaOptions): Promise<import("./captcha").CaptchaVerification>;
|
|
785
|
+
};
|
|
746
786
|
};
|
|
747
787
|
/** The fully typed client instance `createAtlasClient` returns. */
|
|
748
788
|
export type AtlasClient = ReturnType<typeof createAtlasClient>;
|
|
@@ -770,6 +810,7 @@ export * from './sign-in-tokens';
|
|
|
770
810
|
export * from './audit-logs';
|
|
771
811
|
export * from './jwt-templates';
|
|
772
812
|
export * from './api-keys';
|
|
813
|
+
export * from './machines';
|
|
773
814
|
export * from './oauth-providers';
|
|
774
815
|
export * from './sso-onboarding';
|
|
775
816
|
export * from './scim-provisioning';
|
|
@@ -794,3 +835,4 @@ export * from './lti-platforms';
|
|
|
794
835
|
export * from './instance';
|
|
795
836
|
export * from './instance-security';
|
|
796
837
|
export * from './tokens';
|
|
838
|
+
export * from './captcha';
|
package/dist/client/index.js
CHANGED
|
@@ -36,6 +36,7 @@ const sign_in_tokens_1 = require("./sign-in-tokens");
|
|
|
36
36
|
const audit_logs_1 = require("./audit-logs");
|
|
37
37
|
const jwt_templates_1 = require("./jwt-templates");
|
|
38
38
|
const api_keys_1 = require("./api-keys");
|
|
39
|
+
const machines_1 = require("./machines");
|
|
39
40
|
const oauth_providers_1 = require("./oauth-providers");
|
|
40
41
|
const sso_onboarding_1 = require("./sso-onboarding");
|
|
41
42
|
const scim_provisioning_1 = require("./scim-provisioning");
|
|
@@ -60,6 +61,7 @@ const lti_platforms_1 = require("./lti-platforms");
|
|
|
60
61
|
const instance_1 = require("./instance");
|
|
61
62
|
const instance_security_1 = require("./instance-security");
|
|
62
63
|
const tokens_1 = require("./tokens");
|
|
64
|
+
const captcha_1 = require("./captcha");
|
|
63
65
|
/**
|
|
64
66
|
* The typed management client for the Atlas Backend API — the secret-key
|
|
65
67
|
* surface, the peer of `@clerk/backend`'s `createClerkClient`.
|
|
@@ -93,6 +95,8 @@ function createAtlasClient(config) {
|
|
|
93
95
|
auditLogs: (0, audit_logs_1.auditLogsResource)(request),
|
|
94
96
|
jwtTemplates: (0, jwt_templates_1.jwtTemplatesResource)(request),
|
|
95
97
|
apiKeys: (0, api_keys_1.apiKeysResource)(request),
|
|
98
|
+
// §9.3 / §P1-7 named machine identities + device registry + enrolment tokens.
|
|
99
|
+
machines: (0, machines_1.machinesResource)(request),
|
|
96
100
|
oauthProviders: (0, oauth_providers_1.oauthProvidersResource)(request),
|
|
97
101
|
ssoOnboarding: (0, sso_onboarding_1.ssoOnboardingResource)(request),
|
|
98
102
|
scimProvisioning: (0, scim_provisioning_1.scimProvisioningResource)(request),
|
|
@@ -117,6 +121,9 @@ function createAtlasClient(config) {
|
|
|
117
121
|
instance: (0, instance_1.instanceResource)(request),
|
|
118
122
|
instanceSecurity: (0, instance_security_1.instanceSecurityResource)(request),
|
|
119
123
|
tokens: (0, tokens_1.tokensResource)(request),
|
|
124
|
+
// §5 "captcha anywhere" — verify any CAPTCHA token against the instance's
|
|
125
|
+
// centrally-configured provider, server-side, with the secret held by Atlas.
|
|
126
|
+
captcha: (0, captcha_1.captchaResource)(request),
|
|
120
127
|
};
|
|
121
128
|
}
|
|
122
129
|
var request_2 = require("./request");
|
|
@@ -147,6 +154,7 @@ __exportStar(require("./sign-in-tokens"), exports);
|
|
|
147
154
|
__exportStar(require("./audit-logs"), exports);
|
|
148
155
|
__exportStar(require("./jwt-templates"), exports);
|
|
149
156
|
__exportStar(require("./api-keys"), exports);
|
|
157
|
+
__exportStar(require("./machines"), exports);
|
|
150
158
|
__exportStar(require("./oauth-providers"), exports);
|
|
151
159
|
__exportStar(require("./sso-onboarding"), exports);
|
|
152
160
|
__exportStar(require("./scim-provisioning"), exports);
|
|
@@ -171,4 +179,5 @@ __exportStar(require("./lti-platforms"), exports);
|
|
|
171
179
|
__exportStar(require("./instance"), exports);
|
|
172
180
|
__exportStar(require("./instance-security"), exports);
|
|
173
181
|
__exportStar(require("./tokens"), exports);
|
|
182
|
+
__exportStar(require("./captcha"), exports);
|
|
174
183
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { type RequestFn } from './request';
|
|
2
|
+
import type { CursorParams, ListPage, Metadata } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* §9.3 / §P1-7 MACHINE identities + the device registry.
|
|
5
|
+
*
|
|
6
|
+
* A machine is a first-class non-human principal with its own secret (`mk_…`),
|
|
7
|
+
* distinct from an instance API key. §P1-7 layers a DEVICE half on top: a machine
|
|
8
|
+
* can carry a registered public KEY, a lifecycle `status`, device `metadata`, and
|
|
9
|
+
* optional org/owner ownership. This namespace is the `sk_`-authenticated
|
|
10
|
+
* MANAGEMENT surface (list/filter, create, rename, metadata, approve, revoke, key
|
|
11
|
+
* rotation, delete) plus enrolment-token management and M2M-token verification.
|
|
12
|
+
*
|
|
13
|
+
* The device self-serve half (`/v1/machines/enroll`, `/challenge`, `/token`) is a
|
|
14
|
+
* PUBLIC, credential-presented surface a bootstrapping device calls with no `sk_`,
|
|
15
|
+
* so it is deliberately NOT part of this secret-key client.
|
|
16
|
+
*/
|
|
17
|
+
/** A machine's lifecycle state. `pending` awaits approval; `revoked` is terminal. */
|
|
18
|
+
export type MachineStatus = 'pending' | 'active' | 'revoked';
|
|
19
|
+
/** Device metadata bag (hostname/os/app_version/last_seen_at/…). */
|
|
20
|
+
export type MachineMetadata = Record<string, unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* A named machine identity. `secret_hash` is never present on any machine surface
|
|
23
|
+
* — only a hash is stored, so the `mk_` secret is shown exactly once at
|
|
24
|
+
* create/rotate (see {@link MachineWithSecret}).
|
|
25
|
+
*/
|
|
26
|
+
export interface Machine {
|
|
27
|
+
object: 'machine';
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
organization_id: string | null;
|
|
31
|
+
status: MachineStatus;
|
|
32
|
+
/** JWK thumbprint of the registered device key, or null for a secret-only machine. */
|
|
33
|
+
public_key_jkt: string | null;
|
|
34
|
+
metadata: MachineMetadata;
|
|
35
|
+
enrolled_at: number | null;
|
|
36
|
+
created_at: number;
|
|
37
|
+
updated_at: number;
|
|
38
|
+
}
|
|
39
|
+
/** The create / rotate_secret response: the machine plus its `mk_` secret, shown once. */
|
|
40
|
+
export interface MachineWithSecret extends Machine {
|
|
41
|
+
secret: string;
|
|
42
|
+
}
|
|
43
|
+
export interface CreateMachineBody {
|
|
44
|
+
name: string;
|
|
45
|
+
/** Round-7: the user who owns this machine identity. */
|
|
46
|
+
owner_user_id?: string;
|
|
47
|
+
/** Round-7: bind the machine to an organization at creation. */
|
|
48
|
+
organization_id?: string;
|
|
49
|
+
/** Round-7: free-form data bag stored on the machine. */
|
|
50
|
+
data?: Metadata;
|
|
51
|
+
/** Device metadata (hostname/os/app_version/…). */
|
|
52
|
+
metadata?: MachineMetadata;
|
|
53
|
+
}
|
|
54
|
+
export interface ListMachinesQuery extends CursorParams {
|
|
55
|
+
status?: MachineStatus;
|
|
56
|
+
/** Filter by the device's reported hostname. */
|
|
57
|
+
hostname?: string;
|
|
58
|
+
/** Round-7: only machines owned by this user. */
|
|
59
|
+
owner_user_id?: string;
|
|
60
|
+
/** Round-7: only machines belonging to this organization. */
|
|
61
|
+
organization_id?: string;
|
|
62
|
+
/** Round-7: a JSON-encoded metadata match filter. */
|
|
63
|
+
metadata?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The machine list page. The envelope is `{ object: 'list', data }`; §P1-7's
|
|
67
|
+
* cursor fields (`has_more`/`next_cursor`) are present on the round-7 surface and
|
|
68
|
+
* optional here so the type is honest against both.
|
|
69
|
+
*/
|
|
70
|
+
export interface MachineListPage {
|
|
71
|
+
object: 'list';
|
|
72
|
+
data: Machine[];
|
|
73
|
+
has_more?: boolean;
|
|
74
|
+
next_cursor?: string | null;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* A machine's org membership, membership-shaped like
|
|
78
|
+
* `GET /v1/users/:id/organization_memberships`. A machine belongs to at most one
|
|
79
|
+
* org today, so the list holds 0 or 1 entries; `role` is always null (a machine
|
|
80
|
+
* holds no org role).
|
|
81
|
+
*/
|
|
82
|
+
export interface MachineOrganizationMembership {
|
|
83
|
+
object: 'organization_membership';
|
|
84
|
+
organization_id: string;
|
|
85
|
+
organization_slug: string;
|
|
86
|
+
role: null;
|
|
87
|
+
plan: string | null;
|
|
88
|
+
joined_at: number;
|
|
89
|
+
}
|
|
90
|
+
export interface MachineOrganizationMembershipPage {
|
|
91
|
+
object: 'list';
|
|
92
|
+
data: MachineOrganizationMembership[];
|
|
93
|
+
has_more: boolean;
|
|
94
|
+
next_cursor: string | null;
|
|
95
|
+
}
|
|
96
|
+
/** An enrolment token — a short-lived credential a device presents to `/enroll`. */
|
|
97
|
+
export interface MachineEnrolmentToken {
|
|
98
|
+
object: 'machine_enrolment_token';
|
|
99
|
+
id: string;
|
|
100
|
+
organization_id: string | null;
|
|
101
|
+
max_uses: number;
|
|
102
|
+
uses: number;
|
|
103
|
+
expires_at: number;
|
|
104
|
+
requires_approval: boolean;
|
|
105
|
+
created_at: number;
|
|
106
|
+
}
|
|
107
|
+
/** The create response: the enrolment token plus its `met_` secret, shown once. */
|
|
108
|
+
export interface MachineEnrolmentTokenWithSecret extends MachineEnrolmentToken {
|
|
109
|
+
token: string;
|
|
110
|
+
}
|
|
111
|
+
export interface CreateEnrolmentTokenBody {
|
|
112
|
+
/** Bind machines enrolled with this token to an organization. */
|
|
113
|
+
organization_id?: string;
|
|
114
|
+
/** Round-7: the user who will own machines enrolled with this token. */
|
|
115
|
+
owner_user_id?: string;
|
|
116
|
+
/** Round-7: free-form data copied onto each enrolled machine. */
|
|
117
|
+
data?: Metadata;
|
|
118
|
+
/** Round-7: restrict the token to a single enrolment session. */
|
|
119
|
+
single_session?: boolean;
|
|
120
|
+
/** Round-7: the maximum number of machines that may enrol with this token. */
|
|
121
|
+
max_machines?: number;
|
|
122
|
+
/** How many times the token may be redeemed (defaults to 1 server-side). */
|
|
123
|
+
max_uses?: number;
|
|
124
|
+
/** Token lifetime; defaults to 3600s, capped at one year. */
|
|
125
|
+
expires_in_seconds?: number;
|
|
126
|
+
/** When true, enrolled machines start `pending` and must be approved. */
|
|
127
|
+
requires_approval?: boolean;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* The verify verdict for an M2M credential (Clerk `verifyM2MToken`): resolve a
|
|
131
|
+
* presented machine secret to its machine. An unknown, rotated, or revoked secret
|
|
132
|
+
* all resolve to the SAME `{ valid: false }`, so a caller cannot probe which
|
|
133
|
+
* machines exist.
|
|
134
|
+
*/
|
|
135
|
+
export type M2mTokenVerification = {
|
|
136
|
+
object: 'm2m_verification';
|
|
137
|
+
valid: false;
|
|
138
|
+
} | {
|
|
139
|
+
object: 'm2m_verification';
|
|
140
|
+
valid: true;
|
|
141
|
+
machine_id: string;
|
|
142
|
+
name: string;
|
|
143
|
+
};
|
|
144
|
+
export declare function machinesResource(request: RequestFn): {
|
|
145
|
+
/** List + filter machines (§P1-7 device-registry query). */
|
|
146
|
+
list(query?: ListMachinesQuery): Promise<MachineListPage>;
|
|
147
|
+
/** Create a machine. The `mk_` secret is returned once, here. */
|
|
148
|
+
create(body: CreateMachineBody, idempotencyKey?: string): Promise<MachineWithSecret>;
|
|
149
|
+
get(id: string): Promise<Machine>;
|
|
150
|
+
/** Rename a machine (`PATCH /v1/machines/:id`). */
|
|
151
|
+
rename(id: string, name: string): Promise<Machine>;
|
|
152
|
+
/** Merge device metadata (`PATCH /v1/machines/:id/metadata`). */
|
|
153
|
+
patchMetadata(id: string, metadata: MachineMetadata): Promise<Machine>;
|
|
154
|
+
/** Approve a `pending` device (→ `active`). */
|
|
155
|
+
approve(id: string): Promise<Machine>;
|
|
156
|
+
/** Revoke a machine (→ `revoked`). The record is kept; its key stops minting at once. */
|
|
157
|
+
revoke(id: string): Promise<Machine>;
|
|
158
|
+
/** Rotate the `mk_` secret. The new secret is shown once; the old stops working. */
|
|
159
|
+
rotateSecret(id: string): Promise<MachineWithSecret>;
|
|
160
|
+
/** Rotate the registered device keypair by supplying the new public key PEM. */
|
|
161
|
+
rotateKey(id: string, publicKeyPem: string): Promise<Machine>;
|
|
162
|
+
/** Delete a machine outright (distinct from {@link revoke}, which keeps the record). */
|
|
163
|
+
delete(id: string): Promise<{
|
|
164
|
+
object: "machine";
|
|
165
|
+
id: string;
|
|
166
|
+
deleted: true;
|
|
167
|
+
}>;
|
|
168
|
+
/** The machine's org memberships (0 or 1 entry). */
|
|
169
|
+
organizationMemberships(id: string): Promise<MachineOrganizationMembershipPage>;
|
|
170
|
+
/** Mint an enrolment token. The `met_` secret is returned once, here. */
|
|
171
|
+
createEnrolmentToken(body?: CreateEnrolmentTokenBody, idempotencyKey?: string): Promise<MachineEnrolmentTokenWithSecret>;
|
|
172
|
+
listEnrolmentTokens(): Promise<ListPage<MachineEnrolmentToken>>;
|
|
173
|
+
deleteEnrolmentToken(id: string): Promise<{
|
|
174
|
+
object: "machine_enrolment_token";
|
|
175
|
+
id: string;
|
|
176
|
+
deleted: true;
|
|
177
|
+
}>;
|
|
178
|
+
/**
|
|
179
|
+
* Verify a presented M2M credential (`POST /v1/m2m_tokens/verify`). Resolve a
|
|
180
|
+
* machine secret to its machine; every negative resolves to `{ valid: false }`.
|
|
181
|
+
*/
|
|
182
|
+
verifyM2mToken(token: string): Promise<M2mTokenVerification>;
|
|
183
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.machinesResource = machinesResource;
|
|
4
|
+
const request_1 = require("./request");
|
|
5
|
+
function machinesResource(request) {
|
|
6
|
+
return {
|
|
7
|
+
/** List + filter machines (§P1-7 device-registry query). */
|
|
8
|
+
list(query = {}) {
|
|
9
|
+
return request({ method: 'GET', path: '/v1/machines', query: { ...query } });
|
|
10
|
+
},
|
|
11
|
+
/** Create a machine. The `mk_` secret is returned once, here. */
|
|
12
|
+
create(body, idempotencyKey) {
|
|
13
|
+
return request({ method: 'POST', path: '/v1/machines', body, idempotencyKey });
|
|
14
|
+
},
|
|
15
|
+
get(id) {
|
|
16
|
+
return request({ method: 'GET', path: `/v1/machines/${(0, request_1.enc)(id)}` });
|
|
17
|
+
},
|
|
18
|
+
/** Rename a machine (`PATCH /v1/machines/:id`). */
|
|
19
|
+
rename(id, name) {
|
|
20
|
+
return request({ method: 'PATCH', path: `/v1/machines/${(0, request_1.enc)(id)}`, body: { name } });
|
|
21
|
+
},
|
|
22
|
+
/** Merge device metadata (`PATCH /v1/machines/:id/metadata`). */
|
|
23
|
+
patchMetadata(id, metadata) {
|
|
24
|
+
return request({ method: 'PATCH', path: `/v1/machines/${(0, request_1.enc)(id)}/metadata`, body: { metadata } });
|
|
25
|
+
},
|
|
26
|
+
/** Approve a `pending` device (→ `active`). */
|
|
27
|
+
approve(id) {
|
|
28
|
+
return request({ method: 'POST', path: `/v1/machines/${(0, request_1.enc)(id)}/approve` });
|
|
29
|
+
},
|
|
30
|
+
/** Revoke a machine (→ `revoked`). The record is kept; its key stops minting at once. */
|
|
31
|
+
revoke(id) {
|
|
32
|
+
return request({ method: 'POST', path: `/v1/machines/${(0, request_1.enc)(id)}/revoke` });
|
|
33
|
+
},
|
|
34
|
+
/** Rotate the `mk_` secret. The new secret is shown once; the old stops working. */
|
|
35
|
+
rotateSecret(id) {
|
|
36
|
+
return request({ method: 'POST', path: `/v1/machines/${(0, request_1.enc)(id)}/rotate_secret` });
|
|
37
|
+
},
|
|
38
|
+
/** Rotate the registered device keypair by supplying the new public key PEM. */
|
|
39
|
+
rotateKey(id, publicKeyPem) {
|
|
40
|
+
return request({
|
|
41
|
+
method: 'POST',
|
|
42
|
+
path: `/v1/machines/${(0, request_1.enc)(id)}/rotate_key`,
|
|
43
|
+
body: { public_key_pem: publicKeyPem },
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
/** Delete a machine outright (distinct from {@link revoke}, which keeps the record). */
|
|
47
|
+
delete(id) {
|
|
48
|
+
return request({ method: 'DELETE', path: `/v1/machines/${(0, request_1.enc)(id)}` });
|
|
49
|
+
},
|
|
50
|
+
/** The machine's org memberships (0 or 1 entry). */
|
|
51
|
+
organizationMemberships(id) {
|
|
52
|
+
return request({ method: 'GET', path: `/v1/machines/${(0, request_1.enc)(id)}/organization_memberships` });
|
|
53
|
+
},
|
|
54
|
+
/** Mint an enrolment token. The `met_` secret is returned once, here. */
|
|
55
|
+
createEnrolmentToken(body = {}, idempotencyKey) {
|
|
56
|
+
return request({ method: 'POST', path: '/v1/machine_enrolment_tokens', body, idempotencyKey });
|
|
57
|
+
},
|
|
58
|
+
listEnrolmentTokens() {
|
|
59
|
+
return request({ method: 'GET', path: '/v1/machine_enrolment_tokens' });
|
|
60
|
+
},
|
|
61
|
+
deleteEnrolmentToken(id) {
|
|
62
|
+
return request({ method: 'DELETE', path: `/v1/machine_enrolment_tokens/${(0, request_1.enc)(id)}` });
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* Verify a presented M2M credential (`POST /v1/m2m_tokens/verify`). Resolve a
|
|
66
|
+
* machine secret to its machine; every negative resolves to `{ valid: false }`.
|
|
67
|
+
*/
|
|
68
|
+
verifyM2mToken(token) {
|
|
69
|
+
return request({ method: 'POST', path: '/v1/m2m_tokens/verify', body: { token } });
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=machines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machines.js","sourceRoot":"","sources":["../../src/client/machines.ts"],"names":[],"mappings":"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"}
|