@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.
@@ -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
  };
@@ -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":";;AAgEA,0CA4BC;AA5FD,uCAAgD;AAgEhD,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;KACF,CAAC;AACJ,CAAC"}
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"}
@@ -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(body: import("./messaging").MessagingProviderInput): Promise<import("./messaging").MessagingProvider>;
658
- setSms(body: import("./messaging").MessagingProviderInput): Promise<import("./messaging").MessagingProvider>;
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';
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
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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"}