@atlasauth/backend 0.1.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/actions.d.ts +86 -0
- package/dist/client/actions.js +40 -0
- package/dist/client/actions.js.map +1 -0
- package/dist/client/actor-tokens.d.ts +28 -0
- package/dist/client/actor-tokens.js +15 -0
- package/dist/client/actor-tokens.js.map +1 -0
- package/dist/client/api-keys.d.ts +77 -0
- package/dist/client/api-keys.js +31 -0
- package/dist/client/api-keys.js.map +1 -0
- package/dist/client/attack-protection.d.ts +41 -0
- package/dist/client/attack-protection.js +14 -0
- package/dist/client/attack-protection.js.map +1 -0
- package/dist/client/audit-logs.d.ts +20 -0
- package/dist/client/audit-logs.js +11 -0
- package/dist/client/audit-logs.js.map +1 -0
- package/dist/client/billing-plans.d.ts +81 -0
- package/dist/client/billing-plans.js +27 -0
- package/dist/client/billing-plans.js.map +1 -0
- package/dist/client/bot-signals.d.ts +88 -0
- package/dist/client/bot-signals.js +24 -0
- package/dist/client/bot-signals.js.map +1 -0
- package/dist/client/branding.d.ts +140 -0
- package/dist/client/branding.js +19 -0
- package/dist/client/branding.js.map +1 -0
- package/dist/client/data-subject-requests.d.ts +40 -0
- package/dist/client/data-subject-requests.js +32 -0
- package/dist/client/data-subject-requests.js.map +1 -0
- package/dist/client/domains.d.ts +45 -0
- package/dist/client/domains.js +21 -0
- package/dist/client/domains.js.map +1 -0
- package/dist/client/email-templates.d.ts +51 -0
- package/dist/client/email-templates.js +24 -0
- package/dist/client/email-templates.js.map +1 -0
- package/dist/client/error.d.ts +31 -0
- package/dist/client/error.js +28 -0
- package/dist/client/error.js.map +1 -0
- package/dist/client/fga.d.ts +191 -0
- package/dist/client/fga.js +91 -0
- package/dist/client/fga.js.map +1 -0
- package/dist/client/import-export.d.ts +88 -0
- package/dist/client/import-export.js +28 -0
- package/dist/client/import-export.js.map +1 -0
- package/dist/client/index.d.ts +796 -0
- package/dist/client/index.js +174 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/instance-security.d.ts +79 -0
- package/dist/client/instance-security.js +44 -0
- package/dist/client/instance-security.js.map +1 -0
- package/dist/client/instance.d.ts +34 -0
- package/dist/client/instance.js +14 -0
- package/dist/client/instance.js.map +1 -0
- package/dist/client/invitations.d.ts +21 -0
- package/dist/client/invitations.js +18 -0
- package/dist/client/invitations.js.map +1 -0
- package/dist/client/jwt-templates.d.ts +26 -0
- package/dist/client/jwt-templates.js +26 -0
- package/dist/client/jwt-templates.js.map +1 -0
- package/dist/client/localizations.d.ts +43 -0
- package/dist/client/localizations.js +24 -0
- package/dist/client/localizations.js.map +1 -0
- package/dist/client/log-streams.d.ts +66 -0
- package/dist/client/log-streams.js +28 -0
- package/dist/client/log-streams.js.map +1 -0
- package/dist/client/lti-platforms.d.ts +49 -0
- package/dist/client/lti-platforms.js +24 -0
- package/dist/client/lti-platforms.js.map +1 -0
- package/dist/client/managed-waf.d.ts +100 -0
- package/dist/client/managed-waf.js +33 -0
- package/dist/client/managed-waf.js.map +1 -0
- package/dist/client/messaging.d.ts +56 -0
- package/dist/client/messaging.js +30 -0
- package/dist/client/messaging.js.map +1 -0
- package/dist/client/network-acls.d.ts +50 -0
- package/dist/client/network-acls.js +29 -0
- package/dist/client/network-acls.js.map +1 -0
- package/dist/client/oauth-clients.d.ts +75 -0
- package/dist/client/oauth-clients.js +45 -0
- package/dist/client/oauth-clients.js.map +1 -0
- package/dist/client/oauth-providers.d.ts +109 -0
- package/dist/client/oauth-providers.js +48 -0
- package/dist/client/oauth-providers.js.map +1 -0
- package/dist/client/organizations.d.ts +211 -0
- package/dist/client/organizations.js +136 -0
- package/dist/client/organizations.js.map +1 -0
- package/dist/client/paginate.d.ts +16 -0
- package/dist/client/paginate.js +35 -0
- package/dist/client/paginate.js.map +1 -0
- package/dist/client/radius-clients.d.ts +52 -0
- package/dist/client/radius-clients.js +24 -0
- package/dist/client/radius-clients.js.map +1 -0
- package/dist/client/rate-limit.d.ts +37 -0
- package/dist/client/rate-limit.js +20 -0
- package/dist/client/rate-limit.js.map +1 -0
- package/dist/client/request.d.ts +52 -0
- package/dist/client/request.js +102 -0
- package/dist/client/request.js.map +1 -0
- package/dist/client/resource-servers.d.ts +44 -0
- package/dist/client/resource-servers.js +24 -0
- package/dist/client/resource-servers.js.map +1 -0
- package/dist/client/restrictions.d.ts +39 -0
- package/dist/client/restrictions.js +29 -0
- package/dist/client/restrictions.js.map +1 -0
- package/dist/client/risk-based-mfa.d.ts +51 -0
- package/dist/client/risk-based-mfa.js +20 -0
- package/dist/client/risk-based-mfa.js.map +1 -0
- package/dist/client/roles.d.ts +84 -0
- package/dist/client/roles.js +57 -0
- package/dist/client/roles.js.map +1 -0
- package/dist/client/scim-provisioning.d.ts +94 -0
- package/dist/client/scim-provisioning.js +49 -0
- package/dist/client/scim-provisioning.js.map +1 -0
- package/dist/client/scim-tokens.d.ts +34 -0
- package/dist/client/scim-tokens.js +18 -0
- package/dist/client/scim-tokens.js.map +1 -0
- package/dist/client/sessions.d.ts +58 -0
- package/dist/client/sessions.js +26 -0
- package/dist/client/sessions.js.map +1 -0
- package/dist/client/sign-in-tokens.d.ts +18 -0
- package/dist/client/sign-in-tokens.js +11 -0
- package/dist/client/sign-in-tokens.js.map +1 -0
- package/dist/client/sms-templates.d.ts +46 -0
- package/dist/client/sms-templates.js +30 -0
- package/dist/client/sms-templates.js.map +1 -0
- package/dist/client/sso-connections.d.ts +76 -0
- package/dist/client/sso-connections.js +28 -0
- package/dist/client/sso-connections.js.map +1 -0
- package/dist/client/sso-onboarding.d.ts +76 -0
- package/dist/client/sso-onboarding.js +42 -0
- package/dist/client/sso-onboarding.js.map +1 -0
- package/dist/client/tokens.d.ts +37 -0
- package/dist/client/tokens.js +11 -0
- package/dist/client/tokens.js.map +1 -0
- package/dist/client/types.d.ts +41 -0
- package/dist/client/types.js +10 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/users.d.ts +204 -0
- package/dist/client/users.js +135 -0
- package/dist/client/users.js.map +1 -0
- package/dist/client/waitlist.d.ts +31 -0
- package/dist/client/waitlist.js +16 -0
- package/dist/client/waitlist.js.map +1 -0
- package/dist/client/webhooks.d.ts +50 -0
- package/dist/client/webhooks.js +24 -0
- package/dist/client/webhooks.js.map +1 -0
- package/dist/handshake.d.ts +76 -0
- package/dist/handshake.js +96 -0
- package/dist/handshake.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/jwks-cache.d.ts +62 -0
- package/dist/jwks-cache.js +114 -0
- package/dist/jwks-cache.js.map +1 -0
- package/dist/verify.d.ts +162 -0
- package/dist/verify.js +226 -0
- package/dist/verify.js.map +1 -0
- package/package.json +26 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.oauthProvidersResource = oauthProvidersResource;
|
|
4
|
+
const request_1 = require("./request");
|
|
5
|
+
function oauthProvidersResource(request) {
|
|
6
|
+
return {
|
|
7
|
+
/** The whole catalog, configured or not — a not-yet-set-up provider is exactly the one a setup agent wants. */
|
|
8
|
+
list() {
|
|
9
|
+
return request({ method: 'GET', path: '/v1/oauth_providers' });
|
|
10
|
+
},
|
|
11
|
+
get(provider) {
|
|
12
|
+
return request({ method: 'GET', path: `/v1/oauth_providers/${(0, request_1.enc)(provider)}` });
|
|
13
|
+
},
|
|
14
|
+
/** Set (or replace) this instance's own credentials for a provider. */
|
|
15
|
+
upsert(provider, body, idempotencyKey) {
|
|
16
|
+
return request({
|
|
17
|
+
method: 'PUT',
|
|
18
|
+
path: `/v1/oauth_providers/${(0, request_1.enc)(provider)}`,
|
|
19
|
+
body,
|
|
20
|
+
idempotencyKey,
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
delete(provider) {
|
|
24
|
+
return request({ method: 'DELETE', path: `/v1/oauth_providers/${(0, request_1.enc)(provider)}` });
|
|
25
|
+
},
|
|
26
|
+
/** Turn a configured provider on or off. Refused if it has no usable credentials. */
|
|
27
|
+
setEnabled(provider, enabled) {
|
|
28
|
+
return request({
|
|
29
|
+
method: 'POST',
|
|
30
|
+
path: `/v1/oauth_providers/${(0, request_1.enc)(provider)}/enabled`,
|
|
31
|
+
body: { enabled },
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
/** §6.5 which screens this provider serves. At least one must be true. */
|
|
35
|
+
setScope(provider, body) {
|
|
36
|
+
return request({
|
|
37
|
+
method: 'POST',
|
|
38
|
+
path: `/v1/oauth_providers/${(0, request_1.enc)(provider)}/scope`,
|
|
39
|
+
body,
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
/** Verify the stored credentials against the provider's token endpoint, without enabling it. */
|
|
43
|
+
test(provider) {
|
|
44
|
+
return request({ method: 'POST', path: `/v1/oauth_providers/${(0, request_1.enc)(provider)}/test` });
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=oauth-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-providers.js","sourceRoot":"","sources":["../../src/client/oauth-providers.ts"],"names":[],"mappings":";;AAgFA,wDA2DC;AA3ID,uCAAgD;AAgFhD,SAAgB,sBAAsB,CAAC,OAAkB;IACvD,OAAO;QACL,+GAA+G;QAC/G,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,GAAG,CAAC,QAAgB;YAClB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,uEAAuE;QACvE,MAAM,CACJ,QAAgB,EAChB,IAA6B,EAC7B,cAAuB;YAEvB,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,QAAQ,CAAC,EAAE;gBAC5C,IAAI;gBACJ,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CACJ,QAAgB;YAEhB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,qFAAqF;QACrF,UAAU,CACR,QAAgB,EAChB,OAAgB;YAEhB,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,QAAQ,CAAC,UAAU;gBACpD,IAAI,EAAE,EAAE,OAAO,EAAE;aAClB,CAAC,CAAC;QACL,CAAC;QACD,0EAA0E;QAC1E,QAAQ,CACN,QAAgB,EAChB,IAAwD;YAOxD,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,QAAQ,CAAC,QAAQ;gBAClD,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QACD,gGAAgG;QAChG,IAAI,CAAC,QAAgB;YACnB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACxF,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { type RequestFn } from './request';
|
|
2
|
+
import type { CursorPage, CursorParams, DataList, DeletedObject, ListPage, Metadata } from './types';
|
|
3
|
+
export interface Organization {
|
|
4
|
+
object: 'organization';
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
slug: string;
|
|
8
|
+
image_url: string | null;
|
|
9
|
+
public_metadata: Metadata;
|
|
10
|
+
max_allowed_memberships: number;
|
|
11
|
+
created_by: string;
|
|
12
|
+
created_at: number;
|
|
13
|
+
updated_at: number;
|
|
14
|
+
}
|
|
15
|
+
export interface OrganizationMembership {
|
|
16
|
+
object: 'organization_membership';
|
|
17
|
+
id: string;
|
|
18
|
+
organization_id: string;
|
|
19
|
+
user_id: string;
|
|
20
|
+
role: string;
|
|
21
|
+
created_at: number;
|
|
22
|
+
}
|
|
23
|
+
export interface OrganizationInvitation {
|
|
24
|
+
object: 'organization_invitation';
|
|
25
|
+
id: string;
|
|
26
|
+
organization_id: string;
|
|
27
|
+
email: string;
|
|
28
|
+
role: string;
|
|
29
|
+
status: string;
|
|
30
|
+
inviter_user_id: string;
|
|
31
|
+
expires_at: number;
|
|
32
|
+
created_at: number;
|
|
33
|
+
}
|
|
34
|
+
export interface OrgDomain {
|
|
35
|
+
object: 'org_domain';
|
|
36
|
+
id: string;
|
|
37
|
+
organization_id: string;
|
|
38
|
+
domain: string;
|
|
39
|
+
status: string;
|
|
40
|
+
auto_join: boolean;
|
|
41
|
+
default_role_id: string | null;
|
|
42
|
+
verification: {
|
|
43
|
+
record_name: string;
|
|
44
|
+
record_type: 'TXT';
|
|
45
|
+
record_value: string;
|
|
46
|
+
};
|
|
47
|
+
verified_at: number | null;
|
|
48
|
+
last_checked_at: number | null;
|
|
49
|
+
created_at: number;
|
|
50
|
+
}
|
|
51
|
+
export interface OrganizationPolicy {
|
|
52
|
+
object: 'organization_policy';
|
|
53
|
+
organization_id: string;
|
|
54
|
+
policy: Record<string, unknown>;
|
|
55
|
+
}
|
|
56
|
+
export interface OrganizationHierarchy {
|
|
57
|
+
object: 'organization_hierarchy';
|
|
58
|
+
organization_id: string;
|
|
59
|
+
ancestors: Array<{
|
|
60
|
+
id: string;
|
|
61
|
+
name: string;
|
|
62
|
+
slug: string;
|
|
63
|
+
}>;
|
|
64
|
+
children: Array<{
|
|
65
|
+
id: string;
|
|
66
|
+
name: string;
|
|
67
|
+
slug: string;
|
|
68
|
+
}>;
|
|
69
|
+
}
|
|
70
|
+
export interface OrganizationEntitlements {
|
|
71
|
+
object: 'organization_entitlements';
|
|
72
|
+
organization_id: string;
|
|
73
|
+
plan: string | null;
|
|
74
|
+
features: Record<string, unknown>;
|
|
75
|
+
catalog: {
|
|
76
|
+
features: unknown;
|
|
77
|
+
plans: unknown;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export interface CreateOrganizationBody {
|
|
81
|
+
name: string;
|
|
82
|
+
slug: string;
|
|
83
|
+
created_by: string;
|
|
84
|
+
max_allowed_memberships?: number;
|
|
85
|
+
}
|
|
86
|
+
export interface UpdateOrganizationBody {
|
|
87
|
+
name?: string;
|
|
88
|
+
slug?: string;
|
|
89
|
+
image_url?: string;
|
|
90
|
+
max_allowed_memberships?: number;
|
|
91
|
+
public_metadata?: Metadata;
|
|
92
|
+
private_metadata?: Metadata;
|
|
93
|
+
}
|
|
94
|
+
export interface ReplaceOrganizationMetadataBody {
|
|
95
|
+
public_metadata?: Metadata;
|
|
96
|
+
private_metadata?: Metadata;
|
|
97
|
+
}
|
|
98
|
+
/** The org security policy patch (§4.4). Fields are camelCase on this route. */
|
|
99
|
+
export interface OrganizationPolicyPatch {
|
|
100
|
+
requireMfa?: boolean;
|
|
101
|
+
ssoRequired?: boolean;
|
|
102
|
+
sessionIdleOverrideMs?: number | null;
|
|
103
|
+
[key: string]: unknown;
|
|
104
|
+
}
|
|
105
|
+
export declare function organizationsResource(request: RequestFn): {
|
|
106
|
+
list(params?: CursorParams): Promise<CursorPage<Organization>>;
|
|
107
|
+
get(id: string): Promise<Organization>;
|
|
108
|
+
create(body: CreateOrganizationBody, idempotencyKey?: string): Promise<Organization>;
|
|
109
|
+
update(id: string, body: UpdateOrganizationBody): Promise<Organization>;
|
|
110
|
+
delete(id: string): Promise<DeletedObject>;
|
|
111
|
+
/** `PUT /v1/organizations/:id/metadata` — replaces the named bags wholesale. */
|
|
112
|
+
updateMetadata(id: string, body: ReplaceOrganizationMetadataBody): Promise<Organization>;
|
|
113
|
+
/** `PATCH /v1/organizations/:id/policy`. */
|
|
114
|
+
updatePolicy(id: string, body: OrganizationPolicyPatch): Promise<OrganizationPolicy>;
|
|
115
|
+
/**
|
|
116
|
+
* `PUT /v1/organizations/:id/parent` — set (or clear, with null) the org's
|
|
117
|
+
* parent in the B2B2B hierarchy. A cycle is refused; clearing re-parents to
|
|
118
|
+
* top level.
|
|
119
|
+
*/
|
|
120
|
+
setParent(id: string, body: {
|
|
121
|
+
parent_organization_id: string | null;
|
|
122
|
+
}): Promise<Organization>;
|
|
123
|
+
/** `GET /v1/organizations/:id/hierarchy` — ancestor chain (nearest first) + direct children. */
|
|
124
|
+
hierarchy(id: string): Promise<OrganizationHierarchy>;
|
|
125
|
+
/**
|
|
126
|
+
* `GET /v1/organizations/:id/entitlements` — the org's active feature set,
|
|
127
|
+
* resolved from its assigned plan + overrides against the instance catalog.
|
|
128
|
+
*/
|
|
129
|
+
entitlements(id: string): Promise<OrganizationEntitlements>;
|
|
130
|
+
memberships: {
|
|
131
|
+
list(orgId: string): Promise<{
|
|
132
|
+
data: OrganizationMembership[];
|
|
133
|
+
has_more: boolean;
|
|
134
|
+
}>;
|
|
135
|
+
add(orgId: string, body: {
|
|
136
|
+
user_id: string;
|
|
137
|
+
role?: string;
|
|
138
|
+
}, idempotencyKey?: string): Promise<{
|
|
139
|
+
object: "organization_membership";
|
|
140
|
+
organization_id: string;
|
|
141
|
+
user_id: string;
|
|
142
|
+
role: string;
|
|
143
|
+
}>;
|
|
144
|
+
update(orgId: string, userId: string, body: {
|
|
145
|
+
role: string;
|
|
146
|
+
}): Promise<{
|
|
147
|
+
object: "organization_membership";
|
|
148
|
+
role: string;
|
|
149
|
+
updated: true;
|
|
150
|
+
}>;
|
|
151
|
+
remove(orgId: string, userId: string): Promise<{
|
|
152
|
+
object: "organization_membership";
|
|
153
|
+
deleted: true;
|
|
154
|
+
}>;
|
|
155
|
+
};
|
|
156
|
+
invitations: {
|
|
157
|
+
list(orgId: string): Promise<ListPage<OrganizationInvitation>>;
|
|
158
|
+
create(orgId: string, body: {
|
|
159
|
+
email: string;
|
|
160
|
+
role: string;
|
|
161
|
+
inviter_user_id: string;
|
|
162
|
+
}, idempotencyKey?: string): Promise<{
|
|
163
|
+
object: "organization_invitation";
|
|
164
|
+
id: string;
|
|
165
|
+
organization_id: string;
|
|
166
|
+
email: string;
|
|
167
|
+
status: string;
|
|
168
|
+
expires_at: number;
|
|
169
|
+
}>;
|
|
170
|
+
revoke(orgId: string, invitationId: string): Promise<{
|
|
171
|
+
object: "organization_invitation";
|
|
172
|
+
id: string;
|
|
173
|
+
status: "revoked";
|
|
174
|
+
}>;
|
|
175
|
+
};
|
|
176
|
+
domains: {
|
|
177
|
+
list(orgId: string): Promise<DataList<OrgDomain> & {
|
|
178
|
+
object: "list";
|
|
179
|
+
}>;
|
|
180
|
+
create(orgId: string, body: {
|
|
181
|
+
domain: string;
|
|
182
|
+
auto_join?: boolean;
|
|
183
|
+
default_role_id?: string | null;
|
|
184
|
+
}, idempotencyKey?: string): Promise<OrgDomain>;
|
|
185
|
+
verify(orgId: string, domainId: string): Promise<OrgDomain & {
|
|
186
|
+
verified: boolean;
|
|
187
|
+
}>;
|
|
188
|
+
delete(orgId: string, domainId: string): Promise<{
|
|
189
|
+
object: "org_domain";
|
|
190
|
+
id: string;
|
|
191
|
+
deleted: true;
|
|
192
|
+
}>;
|
|
193
|
+
};
|
|
194
|
+
/** Directory-group → role grants that augment members' permissions. */
|
|
195
|
+
groupRoles: {
|
|
196
|
+
grant(orgId: string, groupId: string, roleId: string): Promise<{
|
|
197
|
+
object: "group_role_grant";
|
|
198
|
+
organization_id: string;
|
|
199
|
+
group_id: string;
|
|
200
|
+
role_id: string;
|
|
201
|
+
granted: true;
|
|
202
|
+
}>;
|
|
203
|
+
revoke(orgId: string, groupId: string, roleId: string): Promise<{
|
|
204
|
+
object: "group_role_grant";
|
|
205
|
+
organization_id: string;
|
|
206
|
+
group_id: string;
|
|
207
|
+
role_id: string;
|
|
208
|
+
deleted: boolean;
|
|
209
|
+
}>;
|
|
210
|
+
};
|
|
211
|
+
};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.organizationsResource = organizationsResource;
|
|
4
|
+
const request_1 = require("./request");
|
|
5
|
+
function organizationsResource(request) {
|
|
6
|
+
return {
|
|
7
|
+
list(params = {}) {
|
|
8
|
+
return request({ method: 'GET', path: '/v1/organizations', query: { ...params } });
|
|
9
|
+
},
|
|
10
|
+
get(id) {
|
|
11
|
+
return request({ method: 'GET', path: `/v1/organizations/${(0, request_1.enc)(id)}` });
|
|
12
|
+
},
|
|
13
|
+
create(body, idempotencyKey) {
|
|
14
|
+
return request({ method: 'POST', path: '/v1/organizations', body, idempotencyKey });
|
|
15
|
+
},
|
|
16
|
+
update(id, body) {
|
|
17
|
+
return request({ method: 'PATCH', path: `/v1/organizations/${(0, request_1.enc)(id)}`, body });
|
|
18
|
+
},
|
|
19
|
+
delete(id) {
|
|
20
|
+
return request({ method: 'DELETE', path: `/v1/organizations/${(0, request_1.enc)(id)}` });
|
|
21
|
+
},
|
|
22
|
+
/** `PUT /v1/organizations/:id/metadata` — replaces the named bags wholesale. */
|
|
23
|
+
updateMetadata(id, body) {
|
|
24
|
+
return request({ method: 'PUT', path: `/v1/organizations/${(0, request_1.enc)(id)}/metadata`, body });
|
|
25
|
+
},
|
|
26
|
+
/** `PATCH /v1/organizations/:id/policy`. */
|
|
27
|
+
updatePolicy(id, body) {
|
|
28
|
+
return request({ method: 'PATCH', path: `/v1/organizations/${(0, request_1.enc)(id)}/policy`, body });
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* `PUT /v1/organizations/:id/parent` — set (or clear, with null) the org's
|
|
32
|
+
* parent in the B2B2B hierarchy. A cycle is refused; clearing re-parents to
|
|
33
|
+
* top level.
|
|
34
|
+
*/
|
|
35
|
+
setParent(id, body) {
|
|
36
|
+
return request({ method: 'PUT', path: `/v1/organizations/${(0, request_1.enc)(id)}/parent`, body });
|
|
37
|
+
},
|
|
38
|
+
/** `GET /v1/organizations/:id/hierarchy` — ancestor chain (nearest first) + direct children. */
|
|
39
|
+
hierarchy(id) {
|
|
40
|
+
return request({ method: 'GET', path: `/v1/organizations/${(0, request_1.enc)(id)}/hierarchy` });
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* `GET /v1/organizations/:id/entitlements` — the org's active feature set,
|
|
44
|
+
* resolved from its assigned plan + overrides against the instance catalog.
|
|
45
|
+
*/
|
|
46
|
+
entitlements(id) {
|
|
47
|
+
return request({ method: 'GET', path: `/v1/organizations/${(0, request_1.enc)(id)}/entitlements` });
|
|
48
|
+
},
|
|
49
|
+
memberships: {
|
|
50
|
+
list(orgId) {
|
|
51
|
+
return request({ method: 'GET', path: `/v1/organizations/${(0, request_1.enc)(orgId)}/memberships` });
|
|
52
|
+
},
|
|
53
|
+
add(orgId, body, idempotencyKey) {
|
|
54
|
+
return request({
|
|
55
|
+
method: 'POST',
|
|
56
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/memberships`,
|
|
57
|
+
body,
|
|
58
|
+
idempotencyKey,
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
update(orgId, userId, body) {
|
|
62
|
+
return request({
|
|
63
|
+
method: 'PATCH',
|
|
64
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/memberships/${(0, request_1.enc)(userId)}`,
|
|
65
|
+
body,
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
remove(orgId, userId) {
|
|
69
|
+
return request({
|
|
70
|
+
method: 'DELETE',
|
|
71
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/memberships/${(0, request_1.enc)(userId)}`,
|
|
72
|
+
});
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
invitations: {
|
|
76
|
+
list(orgId) {
|
|
77
|
+
return request({ method: 'GET', path: `/v1/organizations/${(0, request_1.enc)(orgId)}/invitations` });
|
|
78
|
+
},
|
|
79
|
+
create(orgId, body, idempotencyKey) {
|
|
80
|
+
return request({
|
|
81
|
+
method: 'POST',
|
|
82
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/invitations`,
|
|
83
|
+
body,
|
|
84
|
+
idempotencyKey,
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
revoke(orgId, invitationId) {
|
|
88
|
+
return request({
|
|
89
|
+
method: 'POST',
|
|
90
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/invitations/${(0, request_1.enc)(invitationId)}/revoke`,
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
domains: {
|
|
95
|
+
list(orgId) {
|
|
96
|
+
return request({ method: 'GET', path: `/v1/organizations/${(0, request_1.enc)(orgId)}/domains` });
|
|
97
|
+
},
|
|
98
|
+
create(orgId, body, idempotencyKey) {
|
|
99
|
+
return request({
|
|
100
|
+
method: 'POST',
|
|
101
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/domains`,
|
|
102
|
+
body,
|
|
103
|
+
idempotencyKey,
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
verify(orgId, domainId) {
|
|
107
|
+
return request({
|
|
108
|
+
method: 'POST',
|
|
109
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/domains/${(0, request_1.enc)(domainId)}/verify`,
|
|
110
|
+
});
|
|
111
|
+
},
|
|
112
|
+
delete(orgId, domainId) {
|
|
113
|
+
return request({
|
|
114
|
+
method: 'DELETE',
|
|
115
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/domains/${(0, request_1.enc)(domainId)}`,
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
/** Directory-group → role grants that augment members' permissions. */
|
|
120
|
+
groupRoles: {
|
|
121
|
+
grant(orgId, groupId, roleId) {
|
|
122
|
+
return request({
|
|
123
|
+
method: 'PUT',
|
|
124
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/groups/${(0, request_1.enc)(groupId)}/roles/${(0, request_1.enc)(roleId)}`,
|
|
125
|
+
});
|
|
126
|
+
},
|
|
127
|
+
revoke(orgId, groupId, roleId) {
|
|
128
|
+
return request({
|
|
129
|
+
method: 'DELETE',
|
|
130
|
+
path: `/v1/organizations/${(0, request_1.enc)(orgId)}/groups/${(0, request_1.enc)(groupId)}/roles/${(0, request_1.enc)(roleId)}`,
|
|
131
|
+
});
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=organizations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../src/client/organizations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CursorPage, CursorParams } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Walk every page of a cursor-paginated BAPI list, yielding items one at a
|
|
4
|
+
* time. Works with any resource `list` that takes `{ limit?, starting_after? }`
|
|
5
|
+
* and returns a `{ data, has_more, next_cursor }` page — `users.list`,
|
|
6
|
+
* `organizations.list`, `invitations.list`, `auditLogs.list`, `waitlist.list`.
|
|
7
|
+
*
|
|
8
|
+
* for await (const user of paginate(atlas.users.list)) { ... }
|
|
9
|
+
*
|
|
10
|
+
* Kept as a free function rather than bolted onto every return value: the page
|
|
11
|
+
* is the primitive most callers want, and a caller who needs the whole set
|
|
12
|
+
* opts into the extra round trips explicitly.
|
|
13
|
+
*/
|
|
14
|
+
export declare function paginate<T, P extends CursorParams>(list: (params: P) => Promise<CursorPage<T>>, params?: P): AsyncGenerator<T, void, void>;
|
|
15
|
+
/** Collect every page of a cursor-paginated list into a single array. */
|
|
16
|
+
export declare function collect<T, P extends CursorParams>(list: (params: P) => Promise<CursorPage<T>>, params?: P): Promise<T[]>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.paginate = paginate;
|
|
4
|
+
exports.collect = collect;
|
|
5
|
+
/**
|
|
6
|
+
* Walk every page of a cursor-paginated BAPI list, yielding items one at a
|
|
7
|
+
* time. Works with any resource `list` that takes `{ limit?, starting_after? }`
|
|
8
|
+
* and returns a `{ data, has_more, next_cursor }` page — `users.list`,
|
|
9
|
+
* `organizations.list`, `invitations.list`, `auditLogs.list`, `waitlist.list`.
|
|
10
|
+
*
|
|
11
|
+
* for await (const user of paginate(atlas.users.list)) { ... }
|
|
12
|
+
*
|
|
13
|
+
* Kept as a free function rather than bolted onto every return value: the page
|
|
14
|
+
* is the primitive most callers want, and a caller who needs the whole set
|
|
15
|
+
* opts into the extra round trips explicitly.
|
|
16
|
+
*/
|
|
17
|
+
async function* paginate(list, params = {}) {
|
|
18
|
+
let cursor = params.starting_after;
|
|
19
|
+
for (;;) {
|
|
20
|
+
const page = await list({ ...params, starting_after: cursor });
|
|
21
|
+
for (const item of page.data)
|
|
22
|
+
yield item;
|
|
23
|
+
if (!page.has_more || !page.next_cursor)
|
|
24
|
+
return;
|
|
25
|
+
cursor = page.next_cursor;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Collect every page of a cursor-paginated list into a single array. */
|
|
29
|
+
async function collect(list, params = {}) {
|
|
30
|
+
const out = [];
|
|
31
|
+
for await (const item of paginate(list, params))
|
|
32
|
+
out.push(item);
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=paginate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paginate.js","sourceRoot":"","sources":["../../src/client/paginate.ts"],"names":[],"mappings":";;AAcA,4BAWC;AAGD,0BAOC;AAjCD;;;;;;;;;;;GAWG;AACI,KAAK,SAAS,CAAC,CAAC,QAAQ,CAC7B,IAA2C,EAC3C,SAAY,EAAO;IAEnB,IAAI,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;IACnC,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAChD,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,yEAAyE;AAClE,KAAK,UAAU,OAAO,CAC3B,IAA2C,EAC3C,SAAY,EAAO;IAEnB,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type RequestFn } from './request';
|
|
2
|
+
import type { ListPage } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* A RADIUS NAS client — a VPN concentrator, WiFi controller, or firewall allowed
|
|
5
|
+
* to authenticate this instance's users against the shared Atlas RADIUS listener.
|
|
6
|
+
*
|
|
7
|
+
* The per-NAS `shared_secret` is WRITE-ONLY: it is sent on create/update but no
|
|
8
|
+
* read ever returns it — a view reports only `has_secret`.
|
|
9
|
+
*/
|
|
10
|
+
export interface RadiusClient {
|
|
11
|
+
object: 'radius_client';
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
nas_identifier: string;
|
|
15
|
+
ip_address: string | null;
|
|
16
|
+
/** Whether a shared secret is stored — never the secret itself. */
|
|
17
|
+
has_secret: boolean;
|
|
18
|
+
/** Blast-RADIUS (CVE-2024-3596) hardening: require attr 80 on Access-Requests. */
|
|
19
|
+
require_message_authenticator: boolean;
|
|
20
|
+
enabled: boolean;
|
|
21
|
+
created_at: number;
|
|
22
|
+
updated_at: number;
|
|
23
|
+
}
|
|
24
|
+
export interface CreateRadiusClientBody {
|
|
25
|
+
name: string;
|
|
26
|
+
nas_identifier: string;
|
|
27
|
+
shared_secret: string;
|
|
28
|
+
/** An optional exact source-IP match — a single address, not a CIDR range. */
|
|
29
|
+
ip_address?: string | null;
|
|
30
|
+
require_message_authenticator?: boolean;
|
|
31
|
+
enabled?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface UpdateRadiusClientBody {
|
|
34
|
+
name?: string;
|
|
35
|
+
nas_identifier?: string;
|
|
36
|
+
/** Omit or send empty to keep the stored secret (write-only edit). */
|
|
37
|
+
shared_secret?: string;
|
|
38
|
+
ip_address?: string | null;
|
|
39
|
+
require_message_authenticator?: boolean;
|
|
40
|
+
enabled?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare function radiusClientsResource(request: RequestFn): {
|
|
43
|
+
list(): Promise<ListPage<RadiusClient>>;
|
|
44
|
+
create(body: CreateRadiusClientBody, idempotencyKey?: string): Promise<RadiusClient>;
|
|
45
|
+
get(id: string): Promise<RadiusClient>;
|
|
46
|
+
update(id: string, body: UpdateRadiusClientBody): Promise<RadiusClient>;
|
|
47
|
+
delete(id: string): Promise<{
|
|
48
|
+
object: "radius_client";
|
|
49
|
+
id: string;
|
|
50
|
+
deleted: true;
|
|
51
|
+
}>;
|
|
52
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.radiusClientsResource = radiusClientsResource;
|
|
4
|
+
const request_1 = require("./request");
|
|
5
|
+
function radiusClientsResource(request) {
|
|
6
|
+
return {
|
|
7
|
+
list() {
|
|
8
|
+
return request({ method: 'GET', path: '/v1/radius_clients' });
|
|
9
|
+
},
|
|
10
|
+
create(body, idempotencyKey) {
|
|
11
|
+
return request({ method: 'POST', path: '/v1/radius_clients', body, idempotencyKey });
|
|
12
|
+
},
|
|
13
|
+
get(id) {
|
|
14
|
+
return request({ method: 'GET', path: `/v1/radius_clients/${(0, request_1.enc)(id)}` });
|
|
15
|
+
},
|
|
16
|
+
update(id, body) {
|
|
17
|
+
return request({ method: 'PATCH', path: `/v1/radius_clients/${(0, request_1.enc)(id)}`, body });
|
|
18
|
+
},
|
|
19
|
+
delete(id) {
|
|
20
|
+
return request({ method: 'DELETE', path: `/v1/radius_clients/${(0, request_1.enc)(id)}` });
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=radius-clients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radius-clients.js","sourceRoot":"","sources":["../../src/client/radius-clients.ts"],"names":[],"mappings":";;AA6CA,sDAkBC;AA/DD,uCAAgD;AA6ChD,SAAgB,qBAAqB,CAAC,OAAkB;IACtD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,CAAC,IAA4B,EAAE,cAAuB;YAC1D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAA4B;YAC7C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,sBAAsB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type RequestFn } from './request';
|
|
2
|
+
/** The min/max a single knob is clamped to on write. */
|
|
3
|
+
export interface RateLimitBound {
|
|
4
|
+
min: number;
|
|
5
|
+
max: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* §9.1 per-instance rate-limit policy — tunable budgets over the built-in
|
|
9
|
+
* request limiter. Both knobs default to the built-in fixed values, so an unset
|
|
10
|
+
* policy changes nothing.
|
|
11
|
+
*/
|
|
12
|
+
export interface RateLimitPolicy {
|
|
13
|
+
object: 'rate_limit_policy';
|
|
14
|
+
/** Sign-in / sign-up CREATE budget, per IP. Sign-in and sign-up share it. */
|
|
15
|
+
fapi_create_per_min: number;
|
|
16
|
+
/** Backend-API budget, per secret key. */
|
|
17
|
+
bapi_per_min: number;
|
|
18
|
+
/** The floor/ceiling each knob is bounded to when written. */
|
|
19
|
+
bounds: {
|
|
20
|
+
fapi_create_per_min: RateLimitBound;
|
|
21
|
+
bapi_per_min: RateLimitBound;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface UpdateRateLimitPolicyBody {
|
|
25
|
+
fapi_create_per_min?: number;
|
|
26
|
+
bapi_per_min?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Read and tune the instance's rate-limit policy — the two budgets layered over
|
|
30
|
+
* the built-in limiter's fixed buckets.
|
|
31
|
+
*/
|
|
32
|
+
export declare function rateLimitPolicyResource(request: RequestFn): {
|
|
33
|
+
/** Read the current policy and the bounds each knob is clamped to. */
|
|
34
|
+
get(): Promise<RateLimitPolicy>;
|
|
35
|
+
/** Adjust either budget; omitted knobs are left unchanged. */
|
|
36
|
+
update(body: UpdateRateLimitPolicyBody): Promise<RateLimitPolicy>;
|
|
37
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rateLimitPolicyResource = rateLimitPolicyResource;
|
|
4
|
+
/**
|
|
5
|
+
* Read and tune the instance's rate-limit policy — the two budgets layered over
|
|
6
|
+
* the built-in limiter's fixed buckets.
|
|
7
|
+
*/
|
|
8
|
+
function rateLimitPolicyResource(request) {
|
|
9
|
+
return {
|
|
10
|
+
/** Read the current policy and the bounds each knob is clamped to. */
|
|
11
|
+
get() {
|
|
12
|
+
return request({ method: 'GET', path: '/v1/rate_limit_policy' });
|
|
13
|
+
},
|
|
14
|
+
/** Adjust either budget; omitted knobs are left unchanged. */
|
|
15
|
+
update(body) {
|
|
16
|
+
return request({ method: 'PATCH', path: '/v1/rate_limit_policy', body });
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=rate-limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/client/rate-limit.ts"],"names":[],"mappings":";;AAmCA,0DAWC;AAfD;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,OAAkB;IACxD,OAAO;QACL,sEAAsE;QACtE,GAAG;YACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,8DAA8D;QAC9D,MAAM,CAAC,IAA+B;YACpC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shared HTTP core every resource namespace calls. One place decides how a
|
|
3
|
+
* BAPI request is authenticated, serialized, and how a failure becomes an
|
|
4
|
+
* {@link AtlasApiError} — so a namespace method is a one-liner naming a method,
|
|
5
|
+
* a path, and its shapes.
|
|
6
|
+
*
|
|
7
|
+
* Deliberately built on nothing but `fetch`. `@atlasauth/backend` verifies tokens
|
|
8
|
+
* on customers' hot paths — Node servers, edge workers, serverless — and a
|
|
9
|
+
* management client that dragged in a Node-only HTTP stack would not run in
|
|
10
|
+
* half of them. `fetch` is the one primitive present everywhere (Node 18+,
|
|
11
|
+
* Deno, Bun, browsers, edge) and is injectable so tests need no network.
|
|
12
|
+
*/
|
|
13
|
+
export interface AtlasClientConfig {
|
|
14
|
+
/**
|
|
15
|
+
* The instance secret key (`sk_...`). Sent as `Authorization: Bearer <key>`
|
|
16
|
+
* on every request and never logged, never placed in a URL.
|
|
17
|
+
*/
|
|
18
|
+
secretKey: string;
|
|
19
|
+
/**
|
|
20
|
+
* Base URL of the instance's Backend API, e.g. `https://api.atlas.dev`. The
|
|
21
|
+
* `/v1/...` path is appended by each method. Trailing slashes are tolerated.
|
|
22
|
+
*/
|
|
23
|
+
apiUrl?: string;
|
|
24
|
+
/** Injectable `fetch`, for tests and non-global-fetch runtimes. */
|
|
25
|
+
fetch?: typeof fetch;
|
|
26
|
+
}
|
|
27
|
+
/** The default BAPI origin, overridable per instance via `apiUrl`. */
|
|
28
|
+
export declare const DEFAULT_API_URL = "https://api.atlas.dev";
|
|
29
|
+
export type QueryValue = string | number | boolean | undefined | null;
|
|
30
|
+
export type QueryParams = Record<string, QueryValue | QueryValue[]>;
|
|
31
|
+
export interface RequestOptions {
|
|
32
|
+
method: 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE';
|
|
33
|
+
/** Path beginning with `/v1/...`; already interpolated (no `:params`). */
|
|
34
|
+
path: string;
|
|
35
|
+
query?: QueryParams;
|
|
36
|
+
/** JSON body; omitted entirely when undefined. */
|
|
37
|
+
body?: unknown;
|
|
38
|
+
/** Idempotency-Key header (§9.1), when a caller supplies one. */
|
|
39
|
+
idempotencyKey?: string;
|
|
40
|
+
/** When true, the raw text body is returned instead of parsed JSON (SAML XML). */
|
|
41
|
+
raw?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/** Serialize a query object to a string, dropping null/undefined, spreading arrays. */
|
|
44
|
+
export declare function serializeQuery(query: QueryParams | undefined): string;
|
|
45
|
+
/** Percent-encode a single path segment (an id, slug, provider name). */
|
|
46
|
+
export declare function enc(segment: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* The bound request function each namespace receives. Resolves the config once
|
|
49
|
+
* (base URL, fetch impl) so per-call sites stay declarative.
|
|
50
|
+
*/
|
|
51
|
+
export type RequestFn = <T>(options: RequestOptions) => Promise<T>;
|
|
52
|
+
export declare function createRequest(config: AtlasClientConfig): RequestFn;
|