@atlasauth/backend 0.23.0 → 0.25.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/CHANGELOG.md +14 -0
- package/dist/auth0-session.d.ts +23 -0
- package/dist/auth0-session.js +80 -0
- package/dist/auth0-session.js.map +1 -0
- package/dist/better-auth.d.ts +4 -8
- package/dist/better-auth.js +42 -150
- package/dist/better-auth.js.map +1 -1
- package/dist/client/abac.d.ts +132 -0
- package/dist/client/abac.js +48 -0
- package/dist/client/abac.js.map +1 -0
- package/dist/client/access-policies.d.ts +100 -0
- package/dist/client/access-policies.js +29 -0
- package/dist/client/access-policies.js.map +1 -0
- package/dist/client/action-gallery.d.ts +1 -1
- package/dist/client/action-gallery.js.map +1 -1
- package/dist/client/actions.d.ts +129 -6
- package/dist/client/actions.js +4 -0
- package/dist/client/actions.js.map +1 -1
- package/dist/client/analytics-reports.d.ts +215 -0
- package/dist/client/analytics-reports.js +56 -0
- package/dist/client/analytics-reports.js.map +1 -0
- package/dist/client/app-catalog.d.ts +74 -0
- package/dist/client/app-catalog.js +30 -0
- package/dist/client/app-catalog.js.map +1 -0
- package/dist/client/attack-protection.d.ts +10 -0
- package/dist/client/attack-protection.js +8 -0
- package/dist/client/attack-protection.js.map +1 -1
- package/dist/client/audit-events.d.ts +71 -0
- package/dist/client/audit-events.js +28 -0
- package/dist/client/audit-events.js.map +1 -1
- package/dist/client/credentials.d.ts +8 -0
- package/dist/client/credentials.js.map +1 -1
- package/dist/client/delegated-ui-proxy.d.ts +25 -0
- package/dist/client/delegated-ui-proxy.js +46 -0
- package/dist/client/delegated-ui-proxy.js.map +1 -0
- package/dist/client/devices.d.ts +44 -0
- package/dist/client/devices.js +26 -0
- package/dist/client/devices.js.map +1 -0
- package/dist/client/email-templates.d.ts +1 -1
- package/dist/client/email-templates.js.map +1 -1
- package/dist/client/flags.d.ts +101 -0
- package/dist/client/flags.js +104 -0
- package/dist/client/flags.js.map +1 -0
- package/dist/client/groups.d.ts +146 -0
- package/dist/client/groups.js +67 -0
- package/dist/client/groups.js.map +1 -0
- package/dist/client/identity-verification.d.ts +62 -0
- package/dist/client/identity-verification.js +39 -0
- package/dist/client/identity-verification.js.map +1 -0
- package/dist/client/index.d.ts +997 -2
- package/dist/client/index.js +77 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/journeys.d.ts +108 -0
- package/dist/client/journeys.js +35 -0
- package/dist/client/journeys.js.map +1 -0
- package/dist/client/log-streams.d.ts +1 -1
- package/dist/client/marketing.d.ts +67 -0
- package/dist/client/marketing.js +26 -0
- package/dist/client/marketing.js.map +1 -0
- package/dist/client/mcp-gateways.d.ts +54 -0
- package/dist/client/mcp-gateways.js +25 -0
- package/dist/client/mcp-gateways.js.map +1 -0
- package/dist/client/messaging.d.ts +14 -3
- package/dist/client/messaging.js.map +1 -1
- package/dist/client/mfa-factors.d.ts +120 -0
- package/dist/client/mfa-factors.js +73 -0
- package/dist/client/mfa-factors.js.map +1 -0
- package/dist/client/migrations.d.ts +286 -0
- package/dist/client/migrations.js +103 -0
- package/dist/client/migrations.js.map +1 -0
- package/dist/client/network-acls.d.ts +6 -1
- package/dist/client/network-acls.js.map +1 -1
- package/dist/client/network-zones.d.ts +56 -0
- package/dist/client/network-zones.js +29 -0
- package/dist/client/network-zones.js.map +1 -0
- package/dist/client/notifications.d.ts +1 -1
- package/dist/client/notifications.js.map +1 -1
- package/dist/client/oauth-clients.d.ts +183 -3
- package/dist/client/oauth-clients.js +64 -0
- package/dist/client/oauth-clients.js.map +1 -1
- package/dist/client/org-role-grants.d.ts +57 -0
- package/dist/client/org-role-grants.js +40 -0
- package/dist/client/org-role-grants.js.map +1 -0
- package/dist/client/organizations.d.ts +52 -0
- package/dist/client/organizations.js +44 -0
- package/dist/client/organizations.js.map +1 -1
- package/dist/client/page-templates.d.ts +78 -0
- package/dist/client/page-templates.js +31 -0
- package/dist/client/page-templates.js.map +1 -0
- package/dist/client/passkey-api.d.ts +73 -0
- package/dist/client/passkey-api.js +34 -0
- package/dist/client/passkey-api.js.map +1 -0
- package/dist/client/resources.d.ts +149 -0
- package/dist/client/resources.js +73 -0
- package/dist/client/resources.js.map +1 -0
- package/dist/client/risk-based-mfa.d.ts +147 -0
- package/dist/client/risk-based-mfa.js +30 -0
- package/dist/client/risk-based-mfa.js.map +1 -1
- package/dist/client/roles.d.ts +4 -0
- package/dist/client/roles.js.map +1 -1
- package/dist/client/service-connectors.d.ts +83 -0
- package/dist/client/service-connectors.js +33 -0
- package/dist/client/service-connectors.js.map +1 -0
- package/dist/client/ssf.d.ts +111 -0
- package/dist/client/ssf.js +49 -0
- package/dist/client/ssf.js.map +1 -0
- package/dist/client/sso-onboarding.d.ts +6 -0
- package/dist/client/sso-onboarding.js.map +1 -1
- package/dist/client/users.d.ts +302 -0
- package/dist/client/users.js +125 -0
- package/dist/client/users.js.map +1 -1
- package/dist/client/vault.d.ts +85 -0
- package/dist/client/vault.js +50 -0
- package/dist/client/vault.js.map +1 -0
- package/dist/client/vc.d.ts +128 -0
- package/dist/client/vc.js +43 -0
- package/dist/client/vc.js.map +1 -0
- package/dist/client/webhooks.d.ts +31 -2
- package/dist/client/webhooks.js.map +1 -1
- package/dist/client/workflows.d.ts +131 -0
- package/dist/client/workflows.js +36 -0
- package/dist/client/workflows.js.map +1 -0
- package/dist/framework-bridge.d.ts +98 -0
- package/dist/framework-bridge.js +264 -0
- package/dist/framework-bridge.js.map +1 -0
- package/dist/framework-sessions.d.ts +147 -0
- package/dist/framework-sessions.js +544 -0
- package/dist/framework-sessions.js.map +1 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy-issuer-presets.d.ts +85 -0
- package/dist/legacy-issuer-presets.js +165 -0
- package/dist/legacy-issuer-presets.js.map +1 -0
- package/dist/legacy-issuers.d.ts +16 -2
- package/dist/legacy-issuers.js +16 -1
- package/dist/legacy-issuers.js.map +1 -1
- package/dist/legacy-verify.d.ts +103 -0
- package/dist/legacy-verify.js +244 -0
- package/dist/legacy-verify.js.map +1 -0
- package/dist/magic-did.d.ts +5 -0
- package/dist/magic-did.js +49 -0
- package/dist/magic-did.js.map +1 -0
- package/dist/migration-bridge.d.ts +162 -0
- package/dist/migration-bridge.js +354 -0
- package/dist/migration-bridge.js.map +1 -0
- package/dist/migration-presets-g3.d.ts +2 -0
- package/dist/migration-presets-g3.js +254 -0
- package/dist/migration-presets-g3.js.map +1 -0
- package/dist/migration-presets-g4/authentik.d.ts +14 -0
- package/dist/migration-presets-g4/authentik.js +37 -0
- package/dist/migration-presets-g4/authentik.js.map +1 -0
- package/dist/migration-presets-g4/fusionauth.d.ts +2 -0
- package/dist/migration-presets-g4/fusionauth.js +52 -0
- package/dist/migration-presets-g4/fusionauth.js.map +1 -0
- package/dist/migration-presets-g4/hanko.d.ts +12 -0
- package/dist/migration-presets-g4/hanko.js +46 -0
- package/dist/migration-presets-g4/hanko.js.map +1 -0
- package/dist/migration-presets-g4/keycloak.d.ts +16 -0
- package/dist/migration-presets-g4/keycloak.js +37 -0
- package/dist/migration-presets-g4/keycloak.js.map +1 -0
- package/dist/migration-presets-g4/logto.d.ts +12 -0
- package/dist/migration-presets-g4/logto.js +35 -0
- package/dist/migration-presets-g4/logto.js.map +1 -0
- package/dist/migration-presets-g4/ory.d.ts +2 -0
- package/dist/migration-presets-g4/ory.js +67 -0
- package/dist/migration-presets-g4/ory.js.map +1 -0
- package/dist/migration-presets-g4/supertokens.d.ts +13 -0
- package/dist/migration-presets-g4/supertokens.js +35 -0
- package/dist/migration-presets-g4/supertokens.js.map +1 -0
- package/dist/migration-presets-g4/zitadel.d.ts +2 -0
- package/dist/migration-presets-g4/zitadel.js +36 -0
- package/dist/migration-presets-g4/zitadel.js.map +1 -0
- package/dist/migration-presets-g4.d.ts +10 -0
- package/dist/migration-presets-g4.js +30 -0
- package/dist/migration-presets-g4.js.map +1 -0
- package/dist/migration-presets.d.ts +156 -0
- package/dist/migration-presets.js +536 -0
- package/dist/migration-presets.js.map +1 -0
- package/dist/request-auth.d.ts +32 -0
- package/dist/request-auth.js +72 -0
- package/dist/request-auth.js.map +1 -0
- package/dist/verify.d.ts +2 -0
- package/dist/verify.js.map +1 -1
- package/dist/workos-session.d.ts +30 -0
- package/dist/workos-session.js +123 -0
- package/dist/workos-session.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.vaultResource = vaultResource;
|
|
4
|
+
const enc = encodeURIComponent;
|
|
5
|
+
function vaultResource(request) {
|
|
6
|
+
return {
|
|
7
|
+
create(body, idempotencyKey) {
|
|
8
|
+
return request({ method: 'POST', path: '/v1/vault/objects', body, idempotencyKey });
|
|
9
|
+
},
|
|
10
|
+
/** Metadata only, newest first. */
|
|
11
|
+
list(params = {}) {
|
|
12
|
+
const { key_context, ...rest } = params;
|
|
13
|
+
return request({
|
|
14
|
+
method: 'GET',
|
|
15
|
+
path: '/v1/vault/objects',
|
|
16
|
+
query: { ...rest, ...(key_context ? { key_context: JSON.stringify(key_context) } : {}) },
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
/** The decrypted value of the current version, or of `version`. Audited. */
|
|
20
|
+
read(id, version) {
|
|
21
|
+
return request({ method: 'GET', path: `/v1/vault/objects/${enc(id)}`, query: version ? { version } : undefined });
|
|
22
|
+
},
|
|
23
|
+
metadata(id) {
|
|
24
|
+
return request({ method: 'GET', path: `/v1/vault/objects/${enc(id)}/metadata` });
|
|
25
|
+
},
|
|
26
|
+
versions(id) {
|
|
27
|
+
return request({ method: 'GET', path: `/v1/vault/objects/${enc(id)}/versions` });
|
|
28
|
+
},
|
|
29
|
+
/** Append a version. Pass `version_check` (the version you read) to fail with 409 on a concurrent update. */
|
|
30
|
+
update(id, body) {
|
|
31
|
+
return request({ method: 'PUT', path: `/v1/vault/objects/${enc(id)}`, body });
|
|
32
|
+
},
|
|
33
|
+
delete(id) {
|
|
34
|
+
return request({ method: 'DELETE', path: `/v1/vault/objects/${enc(id)}` });
|
|
35
|
+
},
|
|
36
|
+
/** Bring your own AWS KMS, Google Cloud KMS or Azure Key Vault key for new versions. */
|
|
37
|
+
keyProvider: {
|
|
38
|
+
get() {
|
|
39
|
+
return request({ method: 'GET', path: '/v1/vault/key_provider' });
|
|
40
|
+
},
|
|
41
|
+
set(body) {
|
|
42
|
+
return request({ method: 'PUT', path: '/v1/vault/key_provider', body });
|
|
43
|
+
},
|
|
44
|
+
remove() {
|
|
45
|
+
return request({ method: 'DELETE', path: '/v1/vault/key_provider' });
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/client/vault.ts"],"names":[],"mappings":";;AAgEA,sCA4CC;AAzGD,MAAM,GAAG,GAAG,kBAAkB,CAAC;AA6D/B,SAAgB,aAAa,CAAC,OAAkB;IAC9C,OAAO;QACL,MAAM,CAAC,IAA2B,EAAE,cAAuB;YACzD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,mCAAmC;QACnC,IAAI,CAAC,SAAiC,EAAE;YACtC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;YACxC,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aACzF,CAAC,CAAC;QACL,CAAC;QACD,4EAA4E;QAC5E,IAAI,CAAC,EAAU,EAAE,OAAgB;YAC/B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACpH,CAAC;QACD,QAAQ,CAAC,EAAU;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,QAAQ,CAAC,EAAU;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,6GAA6G;QAC7G,MAAM,CAAC,EAAU,EAAE,IAA+C;YAChE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,wFAAwF;QACxF,WAAW,EAAE;YACX,GAAG;gBACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,GAAG,CAAC,IAA6B;gBAC/B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM;gBACJ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACvE,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { type RequestFn } from './request';
|
|
2
|
+
import type { ListPage } from './types';
|
|
3
|
+
export interface VcClaimMapping {
|
|
4
|
+
name: string;
|
|
5
|
+
/** user_id | email | first_name | last_name | username | public_metadata.<key> */
|
|
6
|
+
source: string;
|
|
7
|
+
/** Selectively disclosable (default true; SD-JWT VC only). */
|
|
8
|
+
disclosable?: boolean;
|
|
9
|
+
/** Typing of the value; full-date is YYYY-MM-DD (an mdoc full-date). */
|
|
10
|
+
value_type?: 'string' | 'number' | 'boolean' | 'full-date';
|
|
11
|
+
}
|
|
12
|
+
export interface VcCredentialType {
|
|
13
|
+
object: 'vc_credential_type';
|
|
14
|
+
id: string;
|
|
15
|
+
/** The vct, or the docType for mso_mdoc. */
|
|
16
|
+
vct: string;
|
|
17
|
+
format: VcFormat;
|
|
18
|
+
namespace: string | null;
|
|
19
|
+
/** mdoc: PEM IACA roots a presentation must chain to. */
|
|
20
|
+
iaca_roots: string[];
|
|
21
|
+
/** mdoc: PEM Document Signer chain published as x5chain. */
|
|
22
|
+
signer_chain: string[];
|
|
23
|
+
name: string;
|
|
24
|
+
claims: VcClaimMapping[];
|
|
25
|
+
lifetime_seconds: number;
|
|
26
|
+
require_wallet_attestation: boolean;
|
|
27
|
+
created_at: number;
|
|
28
|
+
}
|
|
29
|
+
export type VcFormat = 'dc+sd-jwt' | 'mso_mdoc';
|
|
30
|
+
export interface CreateVcCredentialTypeBody {
|
|
31
|
+
/** The vct, or the docType for mso_mdoc (for example org.iso.18013.5.1.mDL). */
|
|
32
|
+
vct: string;
|
|
33
|
+
format?: VcFormat;
|
|
34
|
+
/** mso_mdoc: the namespace of the claims (default the docType). */
|
|
35
|
+
namespace?: string;
|
|
36
|
+
/** mso_mdoc: PEM IACA roots (ISO 18013-5 Annex B); with roots set only a certificate chain is accepted. */
|
|
37
|
+
iaca_roots?: string[];
|
|
38
|
+
/** mso_mdoc: PEM Document Signer certificate (then intermediates) for the instance's mdoc signing key. */
|
|
39
|
+
signer_chain?: string[];
|
|
40
|
+
name: string;
|
|
41
|
+
claims: VcClaimMapping[];
|
|
42
|
+
lifetime_seconds?: number;
|
|
43
|
+
require_wallet_attestation?: boolean;
|
|
44
|
+
wallet_attestation_jwks?: {
|
|
45
|
+
keys: Record<string, unknown>[];
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export interface VcOffer {
|
|
49
|
+
object: 'vc_offer';
|
|
50
|
+
id: string;
|
|
51
|
+
expires_at: number;
|
|
52
|
+
credential_offer: Record<string, unknown>;
|
|
53
|
+
/** The openid-credential-offer:// link for a QR code. Shown once. */
|
|
54
|
+
credential_offer_uri: string;
|
|
55
|
+
}
|
|
56
|
+
export interface VcCredential {
|
|
57
|
+
object: 'vc_credential';
|
|
58
|
+
id: string;
|
|
59
|
+
credential_type_id: string;
|
|
60
|
+
user_id: string;
|
|
61
|
+
status_idx: number;
|
|
62
|
+
issued_at: number;
|
|
63
|
+
expires_at: number;
|
|
64
|
+
revoked_at: number | null;
|
|
65
|
+
}
|
|
66
|
+
export interface VcPresentationRequest {
|
|
67
|
+
object: 'vc_presentation_request';
|
|
68
|
+
id: string;
|
|
69
|
+
vct: string;
|
|
70
|
+
format: VcFormat;
|
|
71
|
+
iaca_roots: string[];
|
|
72
|
+
claims: string[];
|
|
73
|
+
status: 'pending' | 'verified' | 'failed';
|
|
74
|
+
result: {
|
|
75
|
+
issuer: string;
|
|
76
|
+
vct: string;
|
|
77
|
+
claims: Record<string, unknown>;
|
|
78
|
+
} | null;
|
|
79
|
+
error: string | null;
|
|
80
|
+
/** Set when the credential was issued by this instance. */
|
|
81
|
+
user_id: string | null;
|
|
82
|
+
expires_at: number;
|
|
83
|
+
request_uri: string;
|
|
84
|
+
/** The openid4vp:// link for a QR code. */
|
|
85
|
+
authorization_request_uri: string;
|
|
86
|
+
}
|
|
87
|
+
/** Issue verifiable credentials to wallets (OpenID4VCI) and verify presentations (OpenID4VP), SD-JWT VC. */
|
|
88
|
+
export declare function vcResource(request: RequestFn): {
|
|
89
|
+
credentialTypes: {
|
|
90
|
+
list(): Promise<ListPage<VcCredentialType>>;
|
|
91
|
+
create(body: CreateVcCredentialTypeBody): Promise<VcCredentialType>;
|
|
92
|
+
get(id: string): Promise<VcCredentialType>;
|
|
93
|
+
delete(id: string): Promise<{
|
|
94
|
+
object: "vc_credential_type";
|
|
95
|
+
id: string;
|
|
96
|
+
deleted: true;
|
|
97
|
+
}>;
|
|
98
|
+
};
|
|
99
|
+
createOffer(body: {
|
|
100
|
+
credential_type_id: string;
|
|
101
|
+
user_id: string;
|
|
102
|
+
tx_code?: string;
|
|
103
|
+
expires_in_seconds?: number;
|
|
104
|
+
}): Promise<VcOffer>;
|
|
105
|
+
credentials: {
|
|
106
|
+
list(query?: {
|
|
107
|
+
user_id?: string;
|
|
108
|
+
}): Promise<ListPage<VcCredential>>;
|
|
109
|
+
revoke(id: string): Promise<VcCredential>;
|
|
110
|
+
};
|
|
111
|
+
presentationRequests: {
|
|
112
|
+
create(body: {
|
|
113
|
+
vct: string;
|
|
114
|
+
format?: VcFormat;
|
|
115
|
+
/** mso_mdoc: PEM IACA roots for this request. */
|
|
116
|
+
iaca_roots?: string[];
|
|
117
|
+
claims?: string[];
|
|
118
|
+
trusted_issuers?: Array<{
|
|
119
|
+
issuer: string;
|
|
120
|
+
jwks: {
|
|
121
|
+
keys: Record<string, unknown>[];
|
|
122
|
+
};
|
|
123
|
+
}>;
|
|
124
|
+
expires_in_seconds?: number;
|
|
125
|
+
}): Promise<VcPresentationRequest>;
|
|
126
|
+
get(id: string): Promise<VcPresentationRequest>;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.vcResource = vcResource;
|
|
4
|
+
const request_1 = require("./request");
|
|
5
|
+
/** Issue verifiable credentials to wallets (OpenID4VCI) and verify presentations (OpenID4VP), SD-JWT VC. */
|
|
6
|
+
function vcResource(request) {
|
|
7
|
+
return {
|
|
8
|
+
credentialTypes: {
|
|
9
|
+
list() {
|
|
10
|
+
return request({ method: 'GET', path: '/v1/vc/credential_types' });
|
|
11
|
+
},
|
|
12
|
+
create(body) {
|
|
13
|
+
return request({ method: 'POST', path: '/v1/vc/credential_types', body });
|
|
14
|
+
},
|
|
15
|
+
get(id) {
|
|
16
|
+
return request({ method: 'GET', path: `/v1/vc/credential_types/${(0, request_1.enc)(id)}` });
|
|
17
|
+
},
|
|
18
|
+
delete(id) {
|
|
19
|
+
return request({ method: 'DELETE', path: `/v1/vc/credential_types/${(0, request_1.enc)(id)}` });
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
createOffer(body) {
|
|
23
|
+
return request({ method: 'POST', path: '/v1/vc/offers', body });
|
|
24
|
+
},
|
|
25
|
+
credentials: {
|
|
26
|
+
list(query = {}) {
|
|
27
|
+
return request({ method: 'GET', path: '/v1/vc/credentials', query: { ...query } });
|
|
28
|
+
},
|
|
29
|
+
revoke(id) {
|
|
30
|
+
return request({ method: 'POST', path: `/v1/vc/credentials/${(0, request_1.enc)(id)}/revoke` });
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
presentationRequests: {
|
|
34
|
+
create(body) {
|
|
35
|
+
return request({ method: 'POST', path: '/v1/vc/presentation_requests', body });
|
|
36
|
+
},
|
|
37
|
+
get(id) {
|
|
38
|
+
return request({ method: 'GET', path: `/v1/vc/presentation_requests/${(0, request_1.enc)(id)}` });
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=vc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vc.js","sourceRoot":"","sources":["../../src/client/vc.ts"],"names":[],"mappings":";;AAyFA,gCA4CC;AArID,uCAAgD;AAwFhD,4GAA4G;AAC5G,SAAgB,UAAU,CAAC,OAAkB;IAC3C,OAAO;QACL,eAAe,EAAE;YACf,IAAI;gBACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,CAAC,IAAgC;gBACrC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACnF,CAAC;SACF;QACD,WAAW,CAAC,IAAoG;YAC9G,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,WAAW,EAAE;YACX,IAAI,CAAC,QAA8B,EAAE;gBACnC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YACnF,CAAC;SACF;QACD,oBAAoB,EAAE;YACpB,MAAM,CAAC,IAQN;gBACC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gCAAgC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ProvisioningFields, type ProvisioningInput, type ProvisioningMetadata } from './compliance';
|
|
2
2
|
import { type RequestFn } from './request';
|
|
3
|
-
export type WebhookDestinationType = 'https' | 'aws_eventbridge' | 'gcp_pubsub' | 'cloudflare_queue';
|
|
3
|
+
export type WebhookDestinationType = 'https' | 'aws_eventbridge' | 'gcp_pubsub' | 'cloudflare_queue' | 'segment' | 'ga4' | 'mixpanel' | 'posthog' | 'amplitude' | 'customerio' | 'slack';
|
|
4
4
|
/** Where deliveries go. Credentials are never returned. */
|
|
5
5
|
export type WebhookDestination = {
|
|
6
6
|
type: 'https';
|
|
@@ -17,7 +17,21 @@ export type WebhookDestination = {
|
|
|
17
17
|
type: 'cloudflare_queue';
|
|
18
18
|
account_id: string;
|
|
19
19
|
queue_id: string;
|
|
20
|
-
}
|
|
20
|
+
} | ({
|
|
21
|
+
type: 'segment' | 'mixpanel' | 'posthog' | 'amplitude' | 'customerio';
|
|
22
|
+
region?: 'us' | 'eu';
|
|
23
|
+
} & AnalyticsOptions) | ({
|
|
24
|
+
type: 'ga4';
|
|
25
|
+
measurement_id: string;
|
|
26
|
+
} & AnalyticsOptions) | ({
|
|
27
|
+
type: 'slack';
|
|
28
|
+
} & AnalyticsOptions);
|
|
29
|
+
/** Shared by the analytics and messaging destinations: person-identifying fields are dropped unless `include_pii`. */
|
|
30
|
+
export interface AnalyticsOptions {
|
|
31
|
+
include_pii?: boolean;
|
|
32
|
+
/** Rename events: `{ 'user.created': 'Signed Up' }`. */
|
|
33
|
+
event_map?: Record<string, string>;
|
|
34
|
+
}
|
|
21
35
|
/** Your own credentials for an event destination (stored encrypted, write-only). */
|
|
22
36
|
export type WebhookDestinationCredentials = {
|
|
23
37
|
access_key_id: string;
|
|
@@ -27,6 +41,21 @@ export type WebhookDestinationCredentials = {
|
|
|
27
41
|
service_account_json: string | Record<string, unknown>;
|
|
28
42
|
} | {
|
|
29
43
|
api_token: string;
|
|
44
|
+
} | {
|
|
45
|
+
write_key: string;
|
|
46
|
+
} | {
|
|
47
|
+
api_secret: string;
|
|
48
|
+
} | {
|
|
49
|
+
project_token: string;
|
|
50
|
+
} | {
|
|
51
|
+
project_api_key: string;
|
|
52
|
+
} | {
|
|
53
|
+
api_key: string;
|
|
54
|
+
} | {
|
|
55
|
+
site_id: string;
|
|
56
|
+
api_key: string;
|
|
57
|
+
} | {
|
|
58
|
+
webhook_url: string;
|
|
30
59
|
};
|
|
31
60
|
export interface WebhookLastFailure {
|
|
32
61
|
at: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/client/webhooks.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/client/webhooks.ts"],"names":[],"mappings":";;AAuUA,4CA+HC;AAtcD,6CAAyH;AACzH,uCAAgD;AAsUhD,SAAgB,gBAAgB,CAAC,OAAkB;IACjD,OAAO;QACL,SAAS,EAAE;YACT,gFAAgF;YAChF,wEAAwE;YACxE,IAAI,CAAC,OAAyE,EAAE;gBAC9E,OAAO,OAAO,CAAC;oBACb,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,uBAAuB;oBAC7B,KAAK,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAA,0BAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;iBAC9G,CAAC,CAAC;YACL,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD;;;eAGG;YACH,WAAW,CACT,IAA+B,EAC/B,cAAuB;gBAEvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAChG,CAAC;YACD,wEAAwE;YACxE,MAAM,CAAC,EAAU,EAAE,IAA+B;gBAChD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,sDAAsD;YACtD,YAAY,CAAC,EAAU;gBACrB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC7F,CAAC;YACD;;;;eAIG;YACH,YAAY,CAAC,EAAU,EAAE,IAA8B;gBACrD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;YACnG,CAAC;YACD,2FAA2F;YAC3F,IAAI,CAAC,EAAU;gBACb,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACpF,CAAC;YACD;;;;eAIG;YACH,OAAO,CAAC,EAAU,EAAE,OAAe,KAAK;gBACtC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACrG,CAAC;YACD,mGAAmG;YACnG,eAAe,CACb,EAAU,EACV,OAA0D,EAAE,EAC5D,cAAuB;gBAEvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAC/G,CAAC;YACD,wFAAwF;YACxF,MAAM,CACJ,EAAU,EACV,IAAqE,EACrE,cAAuB;gBAEvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAC5G,CAAC;YACD,+EAA+E;YAC/E,SAAS,CAAC,EAAU,EAAE,UAAkB;gBACtC,OAAO,OAAO,CAAC;oBACb,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,eAAe,IAAA,aAAG,EAAC,UAAU,CAAC,YAAY;iBACjF,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CACJ,IAA+B,EAC/B,cAAuB;gBAEvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,CACJ,EAAU;gBAEV,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACjF,CAAC;SACF;QACD,oCAAoC;QACpC,UAAU,CACR,EAAU,EACV,SAAsC,EAAE;YAExC,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,EAAE,CAAC,aAAa;gBACnD,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE;aACrB,CAAC,CAAC;QACL,CAAC;QACD,oDAAoD;QACpD,SAAS;YACP,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,sHAAsH;QACtH,MAAM,CAAC,SAAqE,EAAE;YAK5E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,4EAA4E;QAC5E,gBAAgB,CAAC,IAAwB,EAAE,QAAgB,EAAE,aAA8B;YACzF,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,IAAI,CAAC,IAAI,IAAA,aAAG,EAAC,QAAQ,CAAC,iBAAiB;gBACxE,IAAI,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE;aACxC,CAAC,CAAC;QACL,CAAC;QACD,8DAA8D;QAC9D,SAAS,CAAC,UAAkB,EAAE,UAAkB;YAC9C,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,yBAAyB,IAAA,aAAG,EAAC,UAAU,CAAC,eAAe,IAAA,aAAG,EAAC,UAAU,CAAC,YAAY;aACzF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { type RequestFn } from './request';
|
|
2
|
+
import type { ListPage } from './types';
|
|
3
|
+
/** What starts a workflow run. */
|
|
4
|
+
export type WorkflowTrigger = {
|
|
5
|
+
type: 'cron';
|
|
6
|
+
cron: string;
|
|
7
|
+
} | {
|
|
8
|
+
type: 'user_created';
|
|
9
|
+
after_minutes?: number;
|
|
10
|
+
} | {
|
|
11
|
+
type: 'inactive';
|
|
12
|
+
days: number;
|
|
13
|
+
} | {
|
|
14
|
+
type: 'membership_age';
|
|
15
|
+
days: number;
|
|
16
|
+
organization_id?: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'trial_end';
|
|
19
|
+
days_before?: number;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'webhook_event';
|
|
22
|
+
event_type: string;
|
|
23
|
+
};
|
|
24
|
+
/** One step. A step that acts on an organization takes `organization_id`, or uses the membership's own for `membership_age`. */
|
|
25
|
+
export type WorkflowStep = {
|
|
26
|
+
type: 'notify';
|
|
27
|
+
subject: string;
|
|
28
|
+
body: string;
|
|
29
|
+
to?: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'disable';
|
|
32
|
+
reason?: string;
|
|
33
|
+
} | {
|
|
34
|
+
type: 'delete';
|
|
35
|
+
} | {
|
|
36
|
+
type: 'invite';
|
|
37
|
+
role: string;
|
|
38
|
+
organization_id?: string;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'add_to_org';
|
|
41
|
+
role: string;
|
|
42
|
+
organization_id?: string;
|
|
43
|
+
} | {
|
|
44
|
+
type: 'remove_from_org';
|
|
45
|
+
organization_id?: string;
|
|
46
|
+
} | {
|
|
47
|
+
type: 'add_to_team';
|
|
48
|
+
team_id: string;
|
|
49
|
+
organization_id?: string;
|
|
50
|
+
} | {
|
|
51
|
+
type: 'remove_from_team';
|
|
52
|
+
team_id: string;
|
|
53
|
+
organization_id?: string;
|
|
54
|
+
} | {
|
|
55
|
+
type: 'add_to_group';
|
|
56
|
+
group: string;
|
|
57
|
+
} | {
|
|
58
|
+
type: 'remove_from_group';
|
|
59
|
+
group: string;
|
|
60
|
+
} | {
|
|
61
|
+
type: 'call_action';
|
|
62
|
+
action_id: string;
|
|
63
|
+
};
|
|
64
|
+
export interface Workflow {
|
|
65
|
+
object: 'workflow';
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
description: string | null;
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
trigger: WorkflowTrigger;
|
|
71
|
+
steps: WorkflowStep[];
|
|
72
|
+
/** A cron workflow's next slot (Unix ms); null for other triggers. */
|
|
73
|
+
next_run_at: number | null;
|
|
74
|
+
created_at: number;
|
|
75
|
+
updated_at: number;
|
|
76
|
+
}
|
|
77
|
+
export interface WorkflowRunStep {
|
|
78
|
+
index: number;
|
|
79
|
+
type: string;
|
|
80
|
+
status: 'ok' | 'failed' | 'would_run' | 'skipped';
|
|
81
|
+
detail?: string;
|
|
82
|
+
}
|
|
83
|
+
export interface WorkflowRun {
|
|
84
|
+
object: 'workflow_run';
|
|
85
|
+
id: string;
|
|
86
|
+
workflow_id: string;
|
|
87
|
+
subject: string;
|
|
88
|
+
user_id: string | null;
|
|
89
|
+
dry_run: boolean;
|
|
90
|
+
status: 'running' | 'succeeded' | 'failed';
|
|
91
|
+
steps: WorkflowRunStep[];
|
|
92
|
+
error: string | null;
|
|
93
|
+
started_at: number;
|
|
94
|
+
finished_at: number | null;
|
|
95
|
+
}
|
|
96
|
+
export interface CreateWorkflowBody {
|
|
97
|
+
name: string;
|
|
98
|
+
description?: string | null;
|
|
99
|
+
enabled?: boolean;
|
|
100
|
+
trigger: WorkflowTrigger;
|
|
101
|
+
steps: WorkflowStep[];
|
|
102
|
+
}
|
|
103
|
+
export type UpdateWorkflowBody = Partial<CreateWorkflowBody>;
|
|
104
|
+
export declare function workflowsResource(request: RequestFn): {
|
|
105
|
+
list(): Promise<ListPage<Workflow>>;
|
|
106
|
+
create(body: CreateWorkflowBody, idempotencyKey?: string): Promise<Workflow>;
|
|
107
|
+
get(id: string): Promise<Workflow>;
|
|
108
|
+
update(id: string, body: UpdateWorkflowBody): Promise<Workflow>;
|
|
109
|
+
delete(id: string): Promise<{
|
|
110
|
+
object: "workflow";
|
|
111
|
+
id: string;
|
|
112
|
+
deleted: true;
|
|
113
|
+
}>;
|
|
114
|
+
/** Validate every step against live data for a user (none for cron) and report what would happen; changes nothing. */
|
|
115
|
+
dryRun(id: string, target?: {
|
|
116
|
+
user_id?: string;
|
|
117
|
+
organization_id?: string;
|
|
118
|
+
}): Promise<WorkflowRun>;
|
|
119
|
+
/** Run now for one user (none for cron), outside the trigger. */
|
|
120
|
+
run(id: string, target?: {
|
|
121
|
+
user_id?: string;
|
|
122
|
+
organization_id?: string;
|
|
123
|
+
}, idempotencyKey?: string): Promise<WorkflowRun>;
|
|
124
|
+
/** Run history, newest first. */
|
|
125
|
+
runs(id: string, query?: {
|
|
126
|
+
limit?: number;
|
|
127
|
+
starting_after?: string;
|
|
128
|
+
}): Promise<ListPage<WorkflowRun> & {
|
|
129
|
+
next_cursor: string | null;
|
|
130
|
+
}>;
|
|
131
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.workflowsResource = workflowsResource;
|
|
4
|
+
const request_1 = require("./request");
|
|
5
|
+
function workflowsResource(request) {
|
|
6
|
+
return {
|
|
7
|
+
list() {
|
|
8
|
+
return request({ method: 'GET', path: '/v1/workflows' });
|
|
9
|
+
},
|
|
10
|
+
create(body, idempotencyKey) {
|
|
11
|
+
return request({ method: 'POST', path: '/v1/workflows', body, idempotencyKey });
|
|
12
|
+
},
|
|
13
|
+
get(id) {
|
|
14
|
+
return request({ method: 'GET', path: `/v1/workflows/${(0, request_1.enc)(id)}` });
|
|
15
|
+
},
|
|
16
|
+
update(id, body) {
|
|
17
|
+
return request({ method: 'PATCH', path: `/v1/workflows/${(0, request_1.enc)(id)}`, body });
|
|
18
|
+
},
|
|
19
|
+
delete(id) {
|
|
20
|
+
return request({ method: 'DELETE', path: `/v1/workflows/${(0, request_1.enc)(id)}` });
|
|
21
|
+
},
|
|
22
|
+
/** Validate every step against live data for a user (none for cron) and report what would happen; changes nothing. */
|
|
23
|
+
dryRun(id, target = {}) {
|
|
24
|
+
return request({ method: 'POST', path: `/v1/workflows/${(0, request_1.enc)(id)}/dry_run`, body: target });
|
|
25
|
+
},
|
|
26
|
+
/** Run now for one user (none for cron), outside the trigger. */
|
|
27
|
+
run(id, target = {}, idempotencyKey) {
|
|
28
|
+
return request({ method: 'POST', path: `/v1/workflows/${(0, request_1.enc)(id)}/run`, body: target, idempotencyKey });
|
|
29
|
+
},
|
|
30
|
+
/** Run history, newest first. */
|
|
31
|
+
runs(id, query = {}) {
|
|
32
|
+
return request({ method: 'GET', path: `/v1/workflows/${(0, request_1.enc)(id)}/runs`, query });
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/client/workflows.ts"],"names":[],"mappings":";;AAuEA,8CA8BC;AArGD,uCAAgD;AAuEhD,SAAgB,iBAAiB,CAAC,OAAkB;IAClD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,CAAC,IAAwB,EAAE,cAAuB;YACtD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAAwB;YACzC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,sHAAsH;QACtH,MAAM,CAAC,EAAU,EAAE,SAAyD,EAAE;YAC5E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,iEAAiE;QACjE,GAAG,CAAC,EAAU,EAAE,SAAyD,EAAE,EAAE,cAAuB;YAClG,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,iCAAiC;QACjC,IAAI,CAAC,EAAU,EAAE,QAAqD,EAAE;YACtE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { MigrationTokenExtractor } from './migration-bridge';
|
|
2
|
+
/**
|
|
3
|
+
* Zero-logout bridge for the SELF-HOSTED frameworks (Auth.js, Lucia,
|
|
4
|
+
* Passport, iron-session, Devise, Django): their presets, and the token
|
|
5
|
+
* extractors `migrationBridge({ extractToken })` takes.
|
|
6
|
+
*
|
|
7
|
+
* Two families:
|
|
8
|
+
*
|
|
9
|
+
* - Database sessions (Auth.js database strategy, Lucia, express-session
|
|
10
|
+
* stores, Django's database backend, Rails' activerecord-session_store):
|
|
11
|
+
* preset mode `session_table`. The cookie carries an opaque id; Atlas finds
|
|
12
|
+
* sha256(id) among the sessions you imported. Lucia, Auth.js and Django
|
|
13
|
+
* cookies are read as they are; express-session's cookie is signed
|
|
14
|
+
* (`s:<id>.<signature>`), so {@link expressSessionExtractor} pulls the id out.
|
|
15
|
+
*
|
|
16
|
+
* - Sealed cookies (Auth.js JWT strategy, iron-session, Rails' cookie store
|
|
17
|
+
* under Devise, Django's signed-cookie backend): there is no session row to
|
|
18
|
+
* import — the cookie IS the session, and only your app's secret opens it.
|
|
19
|
+
* The extractor opens it ON YOUR SERVER and hands Atlas a short-lived
|
|
20
|
+
* BRIDGE ASSERTION instead: an HS256 JWT (`iss` = `urn:atlas:bridge:<source>`,
|
|
21
|
+
* `sub` = the user id you exported, `jti` = the old session's id) signed
|
|
22
|
+
* with a bridge secret you generate and store in the bridge settings
|
|
23
|
+
* (`shared_secret`). Your AUTH_SECRET / secret_key_base / SECRET_KEY /
|
|
24
|
+
* iron password never leave your server; Atlas verifies the assertion,
|
|
25
|
+
* spends its `jti` once, and signs the user in.
|
|
26
|
+
*/
|
|
27
|
+
/** The issuer of a bridge assertion for a source. */
|
|
28
|
+
export declare function bridgeAssertionIssuer(source: string): string;
|
|
29
|
+
/** Lifetime of a bridge assertion: it is exchanged immediately, once. */
|
|
30
|
+
export declare const BRIDGE_ASSERTION_TTL_SECONDS = 120;
|
|
31
|
+
export interface BridgeAssertion {
|
|
32
|
+
source: string;
|
|
33
|
+
/** The source user id (the `user.id` your export wrote). */
|
|
34
|
+
sub: string;
|
|
35
|
+
/** The old session's own id, so the session exchanges once (single-use ledger). */
|
|
36
|
+
sessionKey: string;
|
|
37
|
+
email?: string | null;
|
|
38
|
+
name?: string | null;
|
|
39
|
+
/** The old session had already passed a second factor. */
|
|
40
|
+
mfa?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/** Sign a bridge assertion with the bridge secret (HS256). */
|
|
43
|
+
export declare function signBridgeAssertion(assertion: BridgeAssertion, bridgeSecret: string, now?: Date): Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Auth.js / NextAuth, either session strategy. A database-session cookie is
|
|
46
|
+
* returned as it is (preset `authjs`); a JWT-strategy cookie is decrypted with
|
|
47
|
+
* `secret` (AUTH_SECRET / NEXTAUTH_SECRET, or the rotation list) and turned
|
|
48
|
+
* into a bridge assertion (preset `authjs_jwt`, needs `bridgeSecret`).
|
|
49
|
+
*/
|
|
50
|
+
export declare function authJsExtractor(options: {
|
|
51
|
+
secret?: string | readonly string[];
|
|
52
|
+
bridgeSecret?: string;
|
|
53
|
+
cookieName?: string;
|
|
54
|
+
}): MigrationTokenExtractor;
|
|
55
|
+
/**
|
|
56
|
+
* Passport / express-session: the session id out of the signed `connect.sid`
|
|
57
|
+
* cookie (preset `passport`). Pass `secrets` (your `session({ secret })`) to
|
|
58
|
+
* check the signature as express-session does.
|
|
59
|
+
*/
|
|
60
|
+
export declare function expressSessionExtractor(options?: {
|
|
61
|
+
cookieName?: string;
|
|
62
|
+
secrets?: string | readonly string[];
|
|
63
|
+
}): MigrationTokenExtractor;
|
|
64
|
+
/**
|
|
65
|
+
* iron-session: unseal the cookie with your session password and assert the
|
|
66
|
+
* user at `userIdPath` (default: `userId`, then `user.id`, then `id`).
|
|
67
|
+
*/
|
|
68
|
+
export declare function ironSessionExtractor(options: {
|
|
69
|
+
cookieName: string;
|
|
70
|
+
password: string | Readonly<Record<string, string>>;
|
|
71
|
+
bridgeSecret: string;
|
|
72
|
+
userIdPath?: string;
|
|
73
|
+
emailPath?: string;
|
|
74
|
+
}): MigrationTokenExtractor;
|
|
75
|
+
/**
|
|
76
|
+
* Devise on Rails' cookie store: decrypt `_<app>_session` with
|
|
77
|
+
* `secret_key_base` and assert the Warden user (`scope`, default `user`).
|
|
78
|
+
*/
|
|
79
|
+
export declare function deviseExtractor(options: {
|
|
80
|
+
cookieName: string;
|
|
81
|
+
secretKeyBase: string | readonly string[];
|
|
82
|
+
bridgeSecret: string;
|
|
83
|
+
scope?: string;
|
|
84
|
+
keyDigest?: 'SHA-256' | 'SHA-1';
|
|
85
|
+
}): MigrationTokenExtractor;
|
|
86
|
+
/**
|
|
87
|
+
* Django's signed-cookie session backend: verify the cookie with SECRET_KEY
|
|
88
|
+
* (then SECRET_KEY_FALLBACKS) and assert `_auth_user_id`.
|
|
89
|
+
*/
|
|
90
|
+
export declare function djangoSignedCookieExtractor(options: {
|
|
91
|
+
secretKey: string | readonly string[];
|
|
92
|
+
bridgeSecret: string;
|
|
93
|
+
cookieName?: string;
|
|
94
|
+
/** SESSION_COOKIE_AGE (default two weeks). */
|
|
95
|
+
maxAgeSeconds?: number;
|
|
96
|
+
}): MigrationTokenExtractor;
|
|
97
|
+
/** The preset ids this module registers (for docs and the settings UI). */
|
|
98
|
+
export declare const FRAMEWORK_BRIDGE_PRESETS: string[];
|