@sylphx/management 0.1.0 → 0.2.1
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 +88 -0
- package/LICENSE +21 -0
- package/README.md +157 -101
- package/dist/admin.d.ts +168 -0
- package/dist/admin.d.ts.map +1 -0
- package/dist/admin.js +123 -0
- package/dist/adminBootstrap.d.ts +46 -0
- package/dist/adminBootstrap.d.ts.map +1 -0
- package/dist/adminBootstrap.js +33 -0
- package/dist/adminBuilds.d.ts +72 -0
- package/dist/adminBuilds.d.ts.map +1 -0
- package/dist/adminBuilds.js +29 -0
- package/dist/adminEnvServices.d.ts +41 -0
- package/dist/adminEnvServices.d.ts.map +1 -0
- package/dist/adminEnvServices.js +22 -0
- package/dist/adminRateLimits.d.ts +61 -0
- package/dist/adminRateLimits.d.ts.map +1 -0
- package/dist/adminRateLimits.js +44 -0
- package/dist/adminReconcile.d.ts +45 -0
- package/dist/adminReconcile.d.ts.map +1 -0
- package/dist/adminReconcile.js +20 -0
- package/dist/adminResources.d.ts +97 -0
- package/dist/adminResources.d.ts.map +1 -0
- package/dist/adminResources.js +40 -0
- package/dist/adminSecrets.d.ts +60 -0
- package/dist/adminSecrets.d.ts.map +1 -0
- package/dist/adminSecrets.js +43 -0
- package/dist/adminTenants.d.ts +41 -0
- package/dist/adminTenants.d.ts.map +1 -0
- package/dist/adminTenants.js +29 -0
- package/dist/ai.d.ts +148 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +29 -0
- package/dist/analytics.d.ts +49 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +23 -0
- package/dist/auth.d.ts +39 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +27 -0
- package/dist/authSettings.d.ts +71 -0
- package/dist/authSettings.d.ts.map +1 -0
- package/dist/authSettings.js +39 -0
- package/dist/backups.d.ts +66 -0
- package/dist/backups.d.ts.map +1 -0
- package/dist/backups.js +32 -0
- package/dist/billing.d.ts +105 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +42 -0
- package/dist/billingSettings.d.ts +78 -0
- package/dist/billingSettings.d.ts.map +1 -0
- package/dist/billingSettings.js +54 -0
- package/dist/branchDatabases.d.ts +53 -0
- package/dist/branchDatabases.d.ts.map +1 -0
- package/dist/branchDatabases.js +38 -0
- package/dist/certs.d.ts +63 -0
- package/dist/certs.d.ts.map +1 -0
- package/dist/certs.js +28 -0
- package/dist/ciSettings.d.ts +77 -0
- package/dist/ciSettings.d.ts.map +1 -0
- package/dist/ciSettings.js +41 -0
- package/dist/client.d.ts +36 -38
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +32 -90
- package/dist/consent.d.ts +111 -0
- package/dist/consent.d.ts.map +1 -0
- package/dist/consent.js +35 -0
- package/dist/databases.d.ts +17 -0
- package/dist/databases.d.ts.map +1 -0
- package/dist/databases.js +32 -0
- package/dist/deployments.d.ts +22 -0
- package/dist/deployments.d.ts.map +1 -0
- package/dist/deployments.js +39 -0
- package/dist/domains.d.ts +26 -0
- package/dist/domains.d.ts.map +1 -0
- package/dist/domains.js +39 -0
- package/dist/edgeDeployments.d.ts +43 -0
- package/dist/edgeDeployments.d.ts.map +1 -0
- package/dist/edgeDeployments.js +32 -0
- package/dist/email.d.ts +45 -0
- package/dist/email.d.ts.map +1 -0
- package/dist/email.js +21 -0
- package/dist/engagement.d.ts +100 -0
- package/dist/engagement.d.ts.map +1 -0
- package/dist/engagement.js +28 -0
- package/dist/envVars.d.ts +17 -0
- package/dist/envVars.d.ts.map +1 -0
- package/dist/envVars.js +34 -0
- package/dist/environments.d.ts +41 -0
- package/dist/environments.d.ts.map +1 -0
- package/dist/environments.js +54 -0
- package/dist/errors.d.ts +8 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -2
- package/dist/experiments.d.ts +80 -0
- package/dist/experiments.d.ts.map +1 -0
- package/dist/experiments.js +23 -0
- package/dist/flags.d.ts +85 -0
- package/dist/flags.d.ts.map +1 -0
- package/dist/flags.js +25 -0
- package/dist/functions.d.ts +39 -0
- package/dist/functions.d.ts.map +1 -0
- package/dist/functions.js +40 -0
- package/dist/github.d.ts +33 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +22 -0
- package/dist/http.d.ts +49 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +97 -0
- package/dist/index.d.ts +85 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -20
- package/dist/kv.d.ts +66 -0
- package/dist/kv.d.ts.map +1 -0
- package/dist/kv.js +36 -0
- package/dist/logs.d.ts +14 -0
- package/dist/logs.d.ts.map +1 -0
- package/dist/logs.js +17 -0
- package/dist/management.d.ts +55 -0
- package/dist/management.d.ts.map +1 -0
- package/dist/management.js +31 -0
- package/dist/monitoring.d.ts +65 -0
- package/dist/monitoring.d.ts.map +1 -0
- package/dist/monitoring.js +29 -0
- package/dist/newsletter.d.ts +279 -0
- package/dist/newsletter.d.ts.map +1 -0
- package/dist/newsletter.js +98 -0
- package/dist/notifications.d.ts +30 -0
- package/dist/notifications.d.ts.map +1 -0
- package/dist/notifications.js +19 -0
- package/dist/oidc.d.ts +46 -0
- package/dist/oidc.d.ts.map +1 -0
- package/dist/oidc.js +25 -0
- package/dist/organizations.d.ts +24 -0
- package/dist/organizations.d.ts.map +1 -0
- package/dist/organizations.js +42 -0
- package/dist/plans.d.ts +66 -0
- package/dist/plans.d.ts.map +1 -0
- package/dist/plans.js +42 -0
- package/dist/privacy.d.ts +138 -0
- package/dist/privacy.d.ts.map +1 -0
- package/dist/privacy.js +41 -0
- package/dist/projects.d.ts +14 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +22 -0
- package/dist/realtime.d.ts +33 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +19 -0
- package/dist/referrals.d.ts +100 -0
- package/dist/referrals.d.ts.map +1 -0
- package/dist/referrals.js +33 -0
- package/dist/refresh.d.ts +44 -0
- package/dist/refresh.d.ts.map +1 -0
- package/dist/refresh.js +33 -0
- package/dist/remoteConfig.d.ts +15 -0
- package/dist/remoteConfig.d.ts.map +1 -0
- package/dist/remoteConfig.js +35 -0
- package/dist/resourceBindings.d.ts +19 -0
- package/dist/resourceBindings.d.ts.map +1 -0
- package/dist/resourceBindings.js +24 -0
- package/dist/runners.d.ts +60 -0
- package/dist/runners.d.ts.map +1 -0
- package/dist/runners.js +17 -0
- package/dist/saml.d.ts +44 -0
- package/dist/saml.d.ts.map +1 -0
- package/dist/saml.js +77 -0
- package/dist/sandboxes.d.ts +15 -0
- package/dist/sandboxes.d.ts.map +1 -0
- package/dist/sandboxes.js +18 -0
- package/dist/search.d.ts +66 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +29 -0
- package/dist/secrets.d.ts +50 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +61 -0
- package/dist/security.d.ts +58 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +49 -0
- package/dist/serviceTokenRequests.d.ts +71 -0
- package/dist/serviceTokenRequests.d.ts.map +1 -0
- package/dist/serviceTokenRequests.js +43 -0
- package/dist/serviceTokens.d.ts +65 -0
- package/dist/serviceTokens.d.ts.map +1 -0
- package/dist/serviceTokens.js +22 -0
- package/dist/services.d.ts +10 -0
- package/dist/services.d.ts.map +1 -0
- package/dist/services.js +15 -0
- package/dist/sessionReplay.d.ts +116 -0
- package/dist/sessionReplay.d.ts.map +1 -0
- package/dist/sessionReplay.js +29 -0
- package/dist/storage.d.ts +12 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +10 -0
- package/dist/tasks.d.ts +29 -0
- package/dist/tasks.d.ts.map +1 -0
- package/dist/tasks.js +29 -0
- package/dist/types.d.ts +59 -155
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +17 -3
- package/dist/user.d.ts +99 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +58 -0
- package/dist/users.d.ts +9 -0
- package/dist/users.d.ts.map +1 -0
- package/dist/users.js +11 -0
- package/dist/volumes.d.ts +16 -0
- package/dist/volumes.d.ts.map +1 -0
- package/dist/volumes.js +9 -0
- package/dist/webhooks.d.ts +77 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +27 -0
- package/package.json +194 -5
- package/dist/request.d.ts +0 -5
- package/dist/request.d.ts.map +0 -1
- package/dist/request.js +0 -1
- package/dist/resources/config.d.ts +0 -30
- package/dist/resources/config.d.ts.map +0 -1
- package/dist/resources/config.js +0 -62
- package/dist/resources/databases.d.ts +0 -26
- package/dist/resources/databases.d.ts.map +0 -1
- package/dist/resources/databases.js +0 -29
- package/dist/resources/deployments.d.ts +0 -24
- package/dist/resources/deployments.d.ts.map +0 -1
- package/dist/resources/deployments.js +0 -30
- package/dist/resources/domains.d.ts +0 -30
- package/dist/resources/domains.d.ts.map +0 -1
- package/dist/resources/domains.js +0 -46
- package/dist/resources/env-vars.d.ts +0 -19
- package/dist/resources/env-vars.d.ts.map +0 -1
- package/dist/resources/env-vars.js +0 -30
- package/dist/resources/environments.d.ts +0 -16
- package/dist/resources/environments.d.ts.map +0 -1
- package/dist/resources/environments.js +0 -24
- package/dist/resources/logs.d.ts +0 -13
- package/dist/resources/logs.d.ts.map +0 -1
- package/dist/resources/logs.js +0 -20
- package/dist/resources/org.d.ts +0 -15
- package/dist/resources/org.d.ts.map +0 -1
- package/dist/resources/org.js +0 -25
- package/dist/resources/projects.d.ts +0 -19
- package/dist/resources/projects.d.ts.map +0 -1
- package/dist/resources/projects.js +0 -19
- package/dist/resources/resources.d.ts +0 -26
- package/dist/resources/resources.d.ts.map +0 -1
- package/dist/resources/resources.js +0 -32
- package/dist/resources/services.d.ts +0 -21
- package/dist/resources/services.d.ts.map +0 -1
- package/dist/resources/services.js +0 -30
- package/dist/resources/storage.d.ts +0 -21
- package/dist/resources/storage.d.ts.map +0 -1
- package/dist/resources/storage.js +0 -25
- package/dist/resources/tasks.d.ts +0 -42
- package/dist/resources/tasks.d.ts.map +0 -1
- package/dist/resources/tasks.js +0 -49
- package/dist/resources/user.d.ts +0 -9
- package/dist/resources/user.d.ts.map +0 -1
- package/dist/resources/user.js +0 -10
- package/dist/resources/volumes.d.ts +0 -20
- package/dist/resources/volumes.d.ts.map +0 -1
- package/dist/resources/volumes.js +0 -19
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Newsletter — subscribers, automation sequences, steps, enrollments.
|
|
3
|
+
*
|
|
4
|
+
* All routes mount under `/newsletter` in the Platform API.
|
|
5
|
+
*
|
|
6
|
+
* Subscribers
|
|
7
|
+
* GET /newsletter/subscribers — list
|
|
8
|
+
* GET /newsletter/subscribers/by-email — by email
|
|
9
|
+
* GET /newsletter/subscribers/preferences — preferences by email
|
|
10
|
+
* GET /newsletter/subscribers/export — CSV export
|
|
11
|
+
* GET /newsletter/subscribers/stats — aggregate stats
|
|
12
|
+
* DELETE /newsletter/subscribers — GDPR delete
|
|
13
|
+
* POST /newsletter/subscribers/bulk-delete
|
|
14
|
+
* POST /newsletter/subscribers/resend-verification
|
|
15
|
+
*
|
|
16
|
+
* Sequences (automation workflows)
|
|
17
|
+
* GET /newsletter/sequences
|
|
18
|
+
* GET /newsletter/sequences/:sequenceId
|
|
19
|
+
* POST /newsletter/sequences
|
|
20
|
+
* PATCH /newsletter/sequences/:sequenceId
|
|
21
|
+
* DELETE /newsletter/sequences/:sequenceId
|
|
22
|
+
* GET /newsletter/sequences/:sequenceId/analytics
|
|
23
|
+
*
|
|
24
|
+
* Steps (inside sequences)
|
|
25
|
+
* POST /newsletter/steps
|
|
26
|
+
* PATCH /newsletter/steps/:stepId
|
|
27
|
+
* DELETE /newsletter/steps/:stepId
|
|
28
|
+
* POST /newsletter/steps/reorder
|
|
29
|
+
*
|
|
30
|
+
* Enrollments (subscribers inside sequences)
|
|
31
|
+
* GET /newsletter/enrollments
|
|
32
|
+
* GET /newsletter/enrollments/:enrollmentId
|
|
33
|
+
* POST /newsletter/enrollments
|
|
34
|
+
* POST /newsletter/enrollments/:enrollmentId/cancel
|
|
35
|
+
* POST /newsletter/enrollments/:enrollmentId/pause
|
|
36
|
+
* POST /newsletter/enrollments/:enrollmentId/resume
|
|
37
|
+
*
|
|
38
|
+
* `SubscriberPreferences` is returned as an object keyed on preference ID;
|
|
39
|
+
* the service stores the underlying rows as an array but flattens for wire.
|
|
40
|
+
*/
|
|
41
|
+
import type { Client } from './client.js';
|
|
42
|
+
export type SubscriberSource = 'website' | 'waitlist' | 'referral' | 'api' | 'import';
|
|
43
|
+
export type PreferenceKey = 'newsletter' | 'product_updates' | 'promotions' | 'changelog' | 'security_alerts';
|
|
44
|
+
export type SubscriberPreferences = Readonly<Partial<Record<PreferenceKey, boolean>>>;
|
|
45
|
+
export interface Subscriber {
|
|
46
|
+
readonly id: string;
|
|
47
|
+
readonly email: string;
|
|
48
|
+
readonly name: string | null;
|
|
49
|
+
readonly source: SubscriberSource;
|
|
50
|
+
readonly emailVerified: boolean;
|
|
51
|
+
readonly subscribedAt: string | null;
|
|
52
|
+
readonly unsubscribedAt: string | null;
|
|
53
|
+
readonly createdAt: string;
|
|
54
|
+
readonly preferences: SubscriberPreferences | null;
|
|
55
|
+
}
|
|
56
|
+
export interface SubscriberDetail extends Subscriber {
|
|
57
|
+
readonly metadata: Readonly<Record<string, unknown>> | null;
|
|
58
|
+
readonly updatedAt: string;
|
|
59
|
+
}
|
|
60
|
+
export interface ListSubscribersOptions {
|
|
61
|
+
readonly projectId?: string;
|
|
62
|
+
readonly verified?: boolean;
|
|
63
|
+
readonly source?: SubscriberSource;
|
|
64
|
+
readonly search?: string;
|
|
65
|
+
readonly includeUnsubscribed?: boolean;
|
|
66
|
+
readonly limit?: number;
|
|
67
|
+
readonly offset?: number;
|
|
68
|
+
}
|
|
69
|
+
export interface ListSubscribersResult {
|
|
70
|
+
readonly subscribers: readonly Subscriber[];
|
|
71
|
+
readonly total: number;
|
|
72
|
+
readonly hasMore: boolean;
|
|
73
|
+
}
|
|
74
|
+
export declare const listSubscribers: (client: Client, options?: ListSubscribersOptions) => Promise<ListSubscribersResult>;
|
|
75
|
+
export declare const getSubscriber: (client: Client, email: string) => Promise<SubscriberDetail>;
|
|
76
|
+
export declare const getPreferences: (client: Client, email: string) => Promise<SubscriberPreferences>;
|
|
77
|
+
export interface ExportSubscribersOptions {
|
|
78
|
+
readonly verified?: boolean;
|
|
79
|
+
readonly includeUnsubscribed?: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface ExportSubscribersResult {
|
|
82
|
+
readonly csv: string;
|
|
83
|
+
readonly filename: string;
|
|
84
|
+
}
|
|
85
|
+
export declare const exportSubscribers: (client: Client, options?: ExportSubscribersOptions) => Promise<ExportSubscribersResult>;
|
|
86
|
+
export interface SubscriberStats {
|
|
87
|
+
readonly total: number;
|
|
88
|
+
readonly verified: number;
|
|
89
|
+
readonly unsubscribed: number;
|
|
90
|
+
readonly bySource: Readonly<Record<string, number>>;
|
|
91
|
+
}
|
|
92
|
+
export declare const subscriberStats: (client: Client) => Promise<SubscriberStats>;
|
|
93
|
+
export declare const deleteSubscriber: (client: Client, email: string) => Promise<{
|
|
94
|
+
success: boolean;
|
|
95
|
+
message: string;
|
|
96
|
+
}>;
|
|
97
|
+
export interface BulkDeleteSubscribersInput {
|
|
98
|
+
readonly projectId: string;
|
|
99
|
+
readonly subscriberIds: readonly string[];
|
|
100
|
+
}
|
|
101
|
+
export interface BulkDeleteSubscribersResult {
|
|
102
|
+
readonly deleted: number;
|
|
103
|
+
readonly errors?: readonly {
|
|
104
|
+
readonly id: string;
|
|
105
|
+
readonly error: string;
|
|
106
|
+
}[];
|
|
107
|
+
}
|
|
108
|
+
export declare const bulkDeleteSubscribers: (client: Client, input: BulkDeleteSubscribersInput) => Promise<BulkDeleteSubscribersResult>;
|
|
109
|
+
export declare const resendVerification: (client: Client, email: string) => Promise<{
|
|
110
|
+
sent: boolean;
|
|
111
|
+
}>;
|
|
112
|
+
export type SequenceTrigger = 'subscribe' | 'verify_email' | 'tag_added' | 'manual' | 'event';
|
|
113
|
+
export type StepType = 'email' | 'delay' | 'condition' | 'tag' | 'webhook';
|
|
114
|
+
export type EnrollmentStatus = 'active' | 'completed' | 'paused' | 'cancelled' | 'unsubscribed';
|
|
115
|
+
export interface TriggerCondition {
|
|
116
|
+
readonly field: string;
|
|
117
|
+
readonly operator: 'eq' | 'neq' | 'contains' | 'exists';
|
|
118
|
+
readonly value?: string;
|
|
119
|
+
}
|
|
120
|
+
export interface TriggerConditions {
|
|
121
|
+
readonly tag?: string;
|
|
122
|
+
readonly event?: string;
|
|
123
|
+
readonly conditions?: readonly TriggerCondition[];
|
|
124
|
+
}
|
|
125
|
+
export type StepConfig = {
|
|
126
|
+
readonly type: 'email';
|
|
127
|
+
readonly templateId?: string;
|
|
128
|
+
readonly subject: string;
|
|
129
|
+
readonly body: string;
|
|
130
|
+
readonly fromName?: string;
|
|
131
|
+
} | {
|
|
132
|
+
readonly type: 'delay';
|
|
133
|
+
readonly duration: number;
|
|
134
|
+
readonly unit: 'minutes' | 'hours' | 'days' | 'weeks';
|
|
135
|
+
} | {
|
|
136
|
+
readonly type: 'condition';
|
|
137
|
+
readonly field: string;
|
|
138
|
+
readonly operator: 'eq' | 'neq' | 'contains' | 'exists' | 'opened_email' | 'clicked_link';
|
|
139
|
+
readonly value?: string;
|
|
140
|
+
readonly trueBranch?: string;
|
|
141
|
+
readonly falseBranch?: string;
|
|
142
|
+
} | {
|
|
143
|
+
readonly type: 'tag';
|
|
144
|
+
readonly action: 'add' | 'remove';
|
|
145
|
+
readonly tag: string;
|
|
146
|
+
} | {
|
|
147
|
+
readonly type: 'webhook';
|
|
148
|
+
readonly url: string;
|
|
149
|
+
readonly method: 'GET' | 'POST';
|
|
150
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
151
|
+
readonly body?: Readonly<Record<string, unknown>>;
|
|
152
|
+
};
|
|
153
|
+
export interface Sequence {
|
|
154
|
+
readonly id: string;
|
|
155
|
+
readonly projectId: string;
|
|
156
|
+
readonly name: string;
|
|
157
|
+
readonly description: string | null;
|
|
158
|
+
readonly trigger: SequenceTrigger;
|
|
159
|
+
readonly triggerConditions: TriggerConditions | null;
|
|
160
|
+
readonly isActive: boolean;
|
|
161
|
+
readonly allowReenrollment: boolean;
|
|
162
|
+
readonly exitOnUnsubscribe: boolean;
|
|
163
|
+
readonly createdAt: string;
|
|
164
|
+
readonly updatedAt: string;
|
|
165
|
+
}
|
|
166
|
+
export interface Step {
|
|
167
|
+
readonly id: string;
|
|
168
|
+
readonly sequenceId: string;
|
|
169
|
+
readonly stepNumber: number;
|
|
170
|
+
readonly type: StepType;
|
|
171
|
+
readonly name: string;
|
|
172
|
+
readonly config: StepConfig;
|
|
173
|
+
readonly isEnabled: boolean;
|
|
174
|
+
readonly createdAt: string;
|
|
175
|
+
readonly updatedAt: string;
|
|
176
|
+
}
|
|
177
|
+
export interface SequenceWithSteps extends Sequence {
|
|
178
|
+
readonly steps: readonly Step[];
|
|
179
|
+
}
|
|
180
|
+
export interface ListSequencesOptions {
|
|
181
|
+
readonly includeInactive?: boolean;
|
|
182
|
+
}
|
|
183
|
+
export declare const listSequences: (client: Client, projectId: string, options?: ListSequencesOptions) => Promise<readonly Sequence[]>;
|
|
184
|
+
export declare const getSequence: (client: Client, sequenceId: string) => Promise<SequenceWithSteps>;
|
|
185
|
+
export interface CreateSequenceInput {
|
|
186
|
+
readonly projectId: string;
|
|
187
|
+
readonly name: string;
|
|
188
|
+
readonly description?: string;
|
|
189
|
+
readonly trigger: SequenceTrigger;
|
|
190
|
+
readonly triggerConditions?: TriggerConditions;
|
|
191
|
+
readonly allowReenrollment?: boolean;
|
|
192
|
+
readonly exitOnUnsubscribe?: boolean;
|
|
193
|
+
}
|
|
194
|
+
export declare const createSequence: (client: Client, input: CreateSequenceInput) => Promise<SequenceWithSteps>;
|
|
195
|
+
export interface UpdateSequenceInput {
|
|
196
|
+
readonly name?: string;
|
|
197
|
+
readonly description?: string;
|
|
198
|
+
readonly trigger?: SequenceTrigger;
|
|
199
|
+
readonly triggerConditions?: TriggerConditions;
|
|
200
|
+
readonly isActive?: boolean;
|
|
201
|
+
readonly allowReenrollment?: boolean;
|
|
202
|
+
readonly exitOnUnsubscribe?: boolean;
|
|
203
|
+
}
|
|
204
|
+
export declare const updateSequence: (client: Client, sequenceId: string, input: UpdateSequenceInput) => Promise<SequenceWithSteps>;
|
|
205
|
+
export declare const deleteSequence: (client: Client, sequenceId: string) => Promise<{
|
|
206
|
+
success: boolean;
|
|
207
|
+
}>;
|
|
208
|
+
export interface StepAnalytics {
|
|
209
|
+
readonly stepId: string;
|
|
210
|
+
readonly stepName: string;
|
|
211
|
+
readonly reached: number;
|
|
212
|
+
readonly completed: number;
|
|
213
|
+
readonly avgDurationMs: number | null;
|
|
214
|
+
}
|
|
215
|
+
export interface SequenceAnalytics {
|
|
216
|
+
readonly sequenceId: string;
|
|
217
|
+
readonly totalEnrollments: number;
|
|
218
|
+
readonly activeEnrollments: number;
|
|
219
|
+
readonly completedEnrollments: number;
|
|
220
|
+
readonly cancelledEnrollments: number;
|
|
221
|
+
readonly unsubscribedEnrollments: number;
|
|
222
|
+
readonly stepAnalytics: readonly StepAnalytics[];
|
|
223
|
+
}
|
|
224
|
+
export declare const sequenceAnalytics: (client: Client, sequenceId: string) => Promise<SequenceAnalytics>;
|
|
225
|
+
export interface AddStepInput {
|
|
226
|
+
readonly sequenceId: string;
|
|
227
|
+
readonly stepNumber: number;
|
|
228
|
+
readonly type: StepType;
|
|
229
|
+
readonly name: string;
|
|
230
|
+
readonly config: StepConfig;
|
|
231
|
+
readonly isEnabled?: boolean;
|
|
232
|
+
}
|
|
233
|
+
export declare const addStep: (client: Client, input: AddStepInput) => Promise<Step>;
|
|
234
|
+
export interface UpdateStepInput {
|
|
235
|
+
readonly stepNumber?: number;
|
|
236
|
+
readonly name?: string;
|
|
237
|
+
readonly config?: StepConfig;
|
|
238
|
+
readonly isEnabled?: boolean;
|
|
239
|
+
}
|
|
240
|
+
export declare const updateStep: (client: Client, stepId: string, input: UpdateStepInput) => Promise<Step>;
|
|
241
|
+
export declare const deleteStep: (client: Client, stepId: string) => Promise<{
|
|
242
|
+
success: boolean;
|
|
243
|
+
}>;
|
|
244
|
+
export declare const reorderSteps: (client: Client, sequenceId: string, stepOrder: readonly string[]) => Promise<{
|
|
245
|
+
success: boolean;
|
|
246
|
+
}>;
|
|
247
|
+
export interface Enrollment {
|
|
248
|
+
readonly id: string;
|
|
249
|
+
readonly sequenceId: string;
|
|
250
|
+
readonly subscriberId: string;
|
|
251
|
+
readonly status: EnrollmentStatus;
|
|
252
|
+
readonly currentStep: number;
|
|
253
|
+
readonly context: Readonly<Record<string, unknown>> | null;
|
|
254
|
+
readonly enrolledAt: string;
|
|
255
|
+
readonly completedAt: string | null;
|
|
256
|
+
}
|
|
257
|
+
export interface ListEnrollmentsOptions {
|
|
258
|
+
readonly status?: EnrollmentStatus;
|
|
259
|
+
readonly limit?: number;
|
|
260
|
+
readonly offset?: number;
|
|
261
|
+
}
|
|
262
|
+
export declare const listEnrollments: (client: Client, sequenceId: string, options?: ListEnrollmentsOptions) => Promise<readonly Enrollment[]>;
|
|
263
|
+
export declare const getEnrollment: (client: Client, enrollmentId: string) => Promise<Enrollment>;
|
|
264
|
+
export interface EnrollSubscriberInput {
|
|
265
|
+
readonly sequenceId: string;
|
|
266
|
+
readonly subscriberId: string;
|
|
267
|
+
readonly context?: Readonly<Record<string, unknown>>;
|
|
268
|
+
}
|
|
269
|
+
export declare const enrollSubscriber: (client: Client, input: EnrollSubscriberInput) => Promise<Enrollment>;
|
|
270
|
+
export declare const cancelEnrollment: (client: Client, enrollmentId: string) => Promise<{
|
|
271
|
+
success: boolean;
|
|
272
|
+
}>;
|
|
273
|
+
export declare const pauseEnrollment: (client: Client, enrollmentId: string) => Promise<{
|
|
274
|
+
success: boolean;
|
|
275
|
+
}>;
|
|
276
|
+
export declare const resumeEnrollment: (client: Client, enrollmentId: string) => Promise<{
|
|
277
|
+
success: boolean;
|
|
278
|
+
}>;
|
|
279
|
+
//# sourceMappingURL=newsletter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newsletter.d.ts","sourceRoot":"","sources":["../src/newsletter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Newsletter — subscribers, automation sequences, steps, enrollments.
|
|
3
|
+
*
|
|
4
|
+
* All routes mount under `/newsletter` in the Platform API.
|
|
5
|
+
*
|
|
6
|
+
* Subscribers
|
|
7
|
+
* GET /newsletter/subscribers — list
|
|
8
|
+
* GET /newsletter/subscribers/by-email — by email
|
|
9
|
+
* GET /newsletter/subscribers/preferences — preferences by email
|
|
10
|
+
* GET /newsletter/subscribers/export — CSV export
|
|
11
|
+
* GET /newsletter/subscribers/stats — aggregate stats
|
|
12
|
+
* DELETE /newsletter/subscribers — GDPR delete
|
|
13
|
+
* POST /newsletter/subscribers/bulk-delete
|
|
14
|
+
* POST /newsletter/subscribers/resend-verification
|
|
15
|
+
*
|
|
16
|
+
* Sequences (automation workflows)
|
|
17
|
+
* GET /newsletter/sequences
|
|
18
|
+
* GET /newsletter/sequences/:sequenceId
|
|
19
|
+
* POST /newsletter/sequences
|
|
20
|
+
* PATCH /newsletter/sequences/:sequenceId
|
|
21
|
+
* DELETE /newsletter/sequences/:sequenceId
|
|
22
|
+
* GET /newsletter/sequences/:sequenceId/analytics
|
|
23
|
+
*
|
|
24
|
+
* Steps (inside sequences)
|
|
25
|
+
* POST /newsletter/steps
|
|
26
|
+
* PATCH /newsletter/steps/:stepId
|
|
27
|
+
* DELETE /newsletter/steps/:stepId
|
|
28
|
+
* POST /newsletter/steps/reorder
|
|
29
|
+
*
|
|
30
|
+
* Enrollments (subscribers inside sequences)
|
|
31
|
+
* GET /newsletter/enrollments
|
|
32
|
+
* GET /newsletter/enrollments/:enrollmentId
|
|
33
|
+
* POST /newsletter/enrollments
|
|
34
|
+
* POST /newsletter/enrollments/:enrollmentId/cancel
|
|
35
|
+
* POST /newsletter/enrollments/:enrollmentId/pause
|
|
36
|
+
* POST /newsletter/enrollments/:enrollmentId/resume
|
|
37
|
+
*
|
|
38
|
+
* `SubscriberPreferences` is returned as an object keyed on preference ID;
|
|
39
|
+
* the service stores the underlying rows as an array but flattens for wire.
|
|
40
|
+
*/
|
|
41
|
+
import { request } from './http.js';
|
|
42
|
+
export const listSubscribers = (client, options) => request(client, 'GET', '/newsletter/subscribers', {
|
|
43
|
+
query: {
|
|
44
|
+
projectId: options?.projectId,
|
|
45
|
+
verified: options?.verified !== undefined ? String(options.verified) : undefined,
|
|
46
|
+
source: options?.source,
|
|
47
|
+
search: options?.search,
|
|
48
|
+
includeUnsubscribed: options?.includeUnsubscribed !== undefined
|
|
49
|
+
? String(options.includeUnsubscribed)
|
|
50
|
+
: undefined,
|
|
51
|
+
limit: options?.limit !== undefined ? String(options.limit) : undefined,
|
|
52
|
+
offset: options?.offset !== undefined ? String(options.offset) : undefined,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
export const getSubscriber = (client, email) => request(client, 'GET', '/newsletter/subscribers/by-email', { query: { email } });
|
|
56
|
+
export const getPreferences = (client, email) => request(client, 'GET', '/newsletter/subscribers/preferences', { query: { email } });
|
|
57
|
+
export const exportSubscribers = (client, options) => request(client, 'GET', '/newsletter/subscribers/export', {
|
|
58
|
+
query: {
|
|
59
|
+
verified: options?.verified !== undefined ? String(options.verified) : undefined,
|
|
60
|
+
includeUnsubscribed: options?.includeUnsubscribed !== undefined
|
|
61
|
+
? String(options.includeUnsubscribed)
|
|
62
|
+
: undefined,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
export const subscriberStats = (client) => request(client, 'GET', '/newsletter/subscribers/stats');
|
|
66
|
+
export const deleteSubscriber = (client, email) => request(client, 'DELETE', '/newsletter/subscribers', { body: { email } });
|
|
67
|
+
export const bulkDeleteSubscribers = (client, input) => request(client, 'POST', '/newsletter/subscribers/bulk-delete', { body: input });
|
|
68
|
+
export const resendVerification = (client, email) => request(client, 'POST', '/newsletter/subscribers/resend-verification', { body: { email } });
|
|
69
|
+
export const listSequences = (client, projectId, options) => request(client, 'GET', '/newsletter/sequences', {
|
|
70
|
+
query: {
|
|
71
|
+
projectId,
|
|
72
|
+
includeInactive: options?.includeInactive !== undefined ? String(options.includeInactive) : undefined,
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
export const getSequence = (client, sequenceId) => request(client, 'GET', `/newsletter/sequences/${encodeURIComponent(sequenceId)}`);
|
|
76
|
+
export const createSequence = (client, input) => request(client, 'POST', '/newsletter/sequences', { body: input });
|
|
77
|
+
export const updateSequence = (client, sequenceId, input) => request(client, 'PATCH', `/newsletter/sequences/${encodeURIComponent(sequenceId)}`, {
|
|
78
|
+
body: input,
|
|
79
|
+
});
|
|
80
|
+
export const deleteSequence = (client, sequenceId) => request(client, 'DELETE', `/newsletter/sequences/${encodeURIComponent(sequenceId)}`);
|
|
81
|
+
export const sequenceAnalytics = (client, sequenceId) => request(client, 'GET', `/newsletter/sequences/${encodeURIComponent(sequenceId)}/analytics`);
|
|
82
|
+
export const addStep = (client, input) => request(client, 'POST', '/newsletter/steps', { body: input });
|
|
83
|
+
export const updateStep = (client, stepId, input) => request(client, 'PATCH', `/newsletter/steps/${encodeURIComponent(stepId)}`, { body: input });
|
|
84
|
+
export const deleteStep = (client, stepId) => request(client, 'DELETE', `/newsletter/steps/${encodeURIComponent(stepId)}`);
|
|
85
|
+
export const reorderSteps = (client, sequenceId, stepOrder) => request(client, 'POST', '/newsletter/steps/reorder', { body: { sequenceId, stepOrder } });
|
|
86
|
+
export const listEnrollments = (client, sequenceId, options) => request(client, 'GET', '/newsletter/enrollments', {
|
|
87
|
+
query: {
|
|
88
|
+
sequenceId,
|
|
89
|
+
status: options?.status,
|
|
90
|
+
limit: options?.limit !== undefined ? String(options.limit) : undefined,
|
|
91
|
+
offset: options?.offset !== undefined ? String(options.offset) : undefined,
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
export const getEnrollment = (client, enrollmentId) => request(client, 'GET', `/newsletter/enrollments/${encodeURIComponent(enrollmentId)}`);
|
|
95
|
+
export const enrollSubscriber = (client, input) => request(client, 'POST', '/newsletter/enrollments', { body: input });
|
|
96
|
+
export const cancelEnrollment = (client, enrollmentId) => request(client, 'POST', `/newsletter/enrollments/${encodeURIComponent(enrollmentId)}/cancel`);
|
|
97
|
+
export const pauseEnrollment = (client, enrollmentId) => request(client, 'POST', `/newsletter/enrollments/${encodeURIComponent(enrollmentId)}/pause`);
|
|
98
|
+
export const resumeEnrollment = (client, enrollmentId) => request(client, 'POST', `/newsletter/enrollments/${encodeURIComponent(enrollmentId)}/resume`);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* End-user notifications — admin surface (in-app inbox reader).
|
|
3
|
+
*
|
|
4
|
+
* GET /notifications/in-app/messages?appId=&userId=&channel=&limit=
|
|
5
|
+
*
|
|
6
|
+
* The runtime `send` verb (push / in-app / mobile dispatch) lives in
|
|
7
|
+
* `@sylphx/sdk` per ADR-083 (BaaS data plane). Push / mobile deliveries
|
|
8
|
+
* land on the device and are not mirrored in the platform store; this
|
|
9
|
+
* endpoint returns in-app inbox entries only.
|
|
10
|
+
*/
|
|
11
|
+
import type { Client } from './client.js';
|
|
12
|
+
export interface InboxEntry {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly userId: string | null;
|
|
15
|
+
readonly title: string | null;
|
|
16
|
+
readonly body: string | null;
|
|
17
|
+
readonly channel: string;
|
|
18
|
+
readonly status: string;
|
|
19
|
+
readonly createdAt: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ListInboxOptions {
|
|
22
|
+
readonly appId: string;
|
|
23
|
+
readonly userId?: string;
|
|
24
|
+
readonly channel?: string;
|
|
25
|
+
readonly limit?: number;
|
|
26
|
+
}
|
|
27
|
+
export declare const listInbox: (client: Client, options: ListInboxOptions) => Promise<{
|
|
28
|
+
notifications: readonly InboxEntry[];
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,SAAS,GACrB,QAAQ,MAAM,EACd,SAAS,gBAAgB,KACvB,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAQhD,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* End-user notifications — admin surface (in-app inbox reader).
|
|
3
|
+
*
|
|
4
|
+
* GET /notifications/in-app/messages?appId=&userId=&channel=&limit=
|
|
5
|
+
*
|
|
6
|
+
* The runtime `send` verb (push / in-app / mobile dispatch) lives in
|
|
7
|
+
* `@sylphx/sdk` per ADR-083 (BaaS data plane). Push / mobile deliveries
|
|
8
|
+
* land on the device and are not mirrored in the platform store; this
|
|
9
|
+
* endpoint returns in-app inbox entries only.
|
|
10
|
+
*/
|
|
11
|
+
import { request } from './http.js';
|
|
12
|
+
export const listInbox = (client, options) => request(client, 'GET', '/notifications/in-app/messages', {
|
|
13
|
+
query: {
|
|
14
|
+
appId: options.appId,
|
|
15
|
+
userId: options.userId,
|
|
16
|
+
channel: options.channel,
|
|
17
|
+
limit: options.limit !== undefined ? String(options.limit) : undefined,
|
|
18
|
+
},
|
|
19
|
+
});
|
package/dist/oidc.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OIDC trust policies (ADR-059 §4) — federate CI providers into Sylphx
|
|
3
|
+
* service-token minting without long-lived shared secrets.
|
|
4
|
+
*
|
|
5
|
+
* GET /projects/:id/oidc-policies
|
|
6
|
+
* POST /projects/:id/oidc-policies
|
|
7
|
+
* DELETE /projects/:id/oidc-policies/:policyId
|
|
8
|
+
*
|
|
9
|
+
* Supported providers: github-actions, gitlab-ci, bitbucket-pipelines,
|
|
10
|
+
* custom. Each policy pins an issuer + subject pattern + allowed scope
|
|
11
|
+
* set; tokens exchanged through the policy inherit exactly those scopes.
|
|
12
|
+
*/
|
|
13
|
+
import type { Client } from './client.js';
|
|
14
|
+
export type OidcProvider = 'github-actions' | 'gitlab-ci' | 'bitbucket-pipelines' | 'custom';
|
|
15
|
+
export declare const SUPPORTED_PROVIDERS: readonly OidcProvider[];
|
|
16
|
+
export interface OidcPolicy {
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly projectId: string;
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly provider: string;
|
|
21
|
+
readonly issuer: string;
|
|
22
|
+
readonly audience: string | null;
|
|
23
|
+
readonly subjectPattern: string;
|
|
24
|
+
readonly allowedScopes: readonly string[];
|
|
25
|
+
readonly isActive: boolean;
|
|
26
|
+
readonly createdBy: string | null;
|
|
27
|
+
readonly createdAt: string;
|
|
28
|
+
readonly updatedAt: string;
|
|
29
|
+
}
|
|
30
|
+
export declare const list: (client: Client, projectId: string) => Promise<{
|
|
31
|
+
policies: readonly OidcPolicy[];
|
|
32
|
+
}>;
|
|
33
|
+
export interface CreateInput {
|
|
34
|
+
readonly name: string;
|
|
35
|
+
readonly provider: OidcProvider;
|
|
36
|
+
readonly issuer: string;
|
|
37
|
+
readonly subjectPattern: string;
|
|
38
|
+
readonly allowedScopes: readonly string[];
|
|
39
|
+
readonly audience?: string | null;
|
|
40
|
+
}
|
|
41
|
+
export declare const create: (client: Client, projectId: string, input: CreateInput) => Promise<OidcPolicy>;
|
|
42
|
+
declare const _delete: (client: Client, projectId: string, policyId: string) => Promise<{
|
|
43
|
+
deleted: boolean;
|
|
44
|
+
}>;
|
|
45
|
+
export { _delete as delete };
|
|
46
|
+
//# sourceMappingURL=oidc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.d.ts","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,WAAW,GAAG,qBAAqB,GAAG,QAAQ,CAAA;AAE5F,eAAO,MAAM,mBAAmB,EAAE,SAAS,YAAY,EAK7C,CAAA;AAEV,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,WAAW,MAAM,KACf,OAAO,CAAC;IAAE,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CACqC,CAAA;AAEnF,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,OAAO,WAAW,KAChB,OAAO,CAAC,UAAU,CAGlB,CAAA;AAEH,QAAA,MAAM,OAAO,GACZ,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,UAAU,MAAM,KACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAK7B,CAAA;AACF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA"}
|
package/dist/oidc.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OIDC trust policies (ADR-059 §4) — federate CI providers into Sylphx
|
|
3
|
+
* service-token minting without long-lived shared secrets.
|
|
4
|
+
*
|
|
5
|
+
* GET /projects/:id/oidc-policies
|
|
6
|
+
* POST /projects/:id/oidc-policies
|
|
7
|
+
* DELETE /projects/:id/oidc-policies/:policyId
|
|
8
|
+
*
|
|
9
|
+
* Supported providers: github-actions, gitlab-ci, bitbucket-pipelines,
|
|
10
|
+
* custom. Each policy pins an issuer + subject pattern + allowed scope
|
|
11
|
+
* set; tokens exchanged through the policy inherit exactly those scopes.
|
|
12
|
+
*/
|
|
13
|
+
import { request } from './http.js';
|
|
14
|
+
export const SUPPORTED_PROVIDERS = [
|
|
15
|
+
'github-actions',
|
|
16
|
+
'gitlab-ci',
|
|
17
|
+
'bitbucket-pipelines',
|
|
18
|
+
'custom',
|
|
19
|
+
];
|
|
20
|
+
export const list = (client, projectId) => request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/oidc-policies`);
|
|
21
|
+
export const create = (client, projectId, input) => request(client, 'POST', `/projects/${encodeURIComponent(projectId)}/oidc-policies`, {
|
|
22
|
+
body: { audience: null, ...input },
|
|
23
|
+
});
|
|
24
|
+
const _delete = (client, projectId, policyId) => request(client, 'DELETE', `/projects/${encodeURIComponent(projectId)}/oidc-policies/${encodeURIComponent(policyId)}`);
|
|
25
|
+
export { _delete as delete };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Organizations — current org + members management.
|
|
3
|
+
*
|
|
4
|
+
* Wire shape sourced from `@sylphx/contract` (ADR-084).
|
|
5
|
+
*/
|
|
6
|
+
import type { Organization as Org, OrgMember, OrgMemberRole, UpdateMemberRoleResult } from '@sylphx/contract';
|
|
7
|
+
import type { Client } from './client.js';
|
|
8
|
+
export type { OrgMemberRole, UpdateMemberRoleResult };
|
|
9
|
+
export declare const current: (client: Client) => Promise<Org>;
|
|
10
|
+
export declare const listMembers: (client: Client, orgId: string) => Promise<OrgMember[]>;
|
|
11
|
+
export declare const inviteMember: (client: Client, orgId: string, email: string, role: "admin" | "member") => Promise<void>;
|
|
12
|
+
export declare const removeMember: (client: Client, orgId: string, userId: string) => Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Update an organization member's role. Caller must be `admin` or `super_admin`.
|
|
15
|
+
*
|
|
16
|
+
* Server enforces:
|
|
17
|
+
* - Cannot change your own role (use another admin) — 403
|
|
18
|
+
* - Only super_admins can promote to / change a super_admin — 403
|
|
19
|
+
* - Cannot demote the last admin (org must retain ≥1 admin/super_admin) — 403
|
|
20
|
+
*
|
|
21
|
+
* Idempotent: setting a member's current role returns success without an audit row.
|
|
22
|
+
*/
|
|
23
|
+
export declare const updateMemberRole: (client: Client, orgId: string, userId: string, role: OrgMemberRole) => Promise<UpdateMemberRoleResult>;
|
|
24
|
+
//# sourceMappingURL=organizations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../src/organizations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,YAAY,IAAI,GAAG,EACnB,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,CAAA;AAErD,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,GAAG,CAGnD,CAAA;AAED,eAAO,MAAM,WAAW,GAAU,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,SAAS,EAAE,CAQpF,CAAA;AAED,eAAO,MAAM,YAAY,GACxB,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,OAAO,MAAM,EACb,MAAM,OAAO,GAAG,QAAQ,KACtB,OAAO,CAAC,IAAI,CAKd,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAGxF,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAC5B,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,MAAM,aAAa,KACjB,OAAO,CAAC,sBAAsB,CAKhC,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Organizations — current org + members management.
|
|
3
|
+
*
|
|
4
|
+
* Wire shape sourced from `@sylphx/contract` (ADR-084).
|
|
5
|
+
*/
|
|
6
|
+
import { organizationsEndpoints } from '@sylphx/contract';
|
|
7
|
+
import { interpolatePath, request } from './http.js';
|
|
8
|
+
export const current = (client) => {
|
|
9
|
+
const { method, path } = organizationsEndpoints.current;
|
|
10
|
+
return request(client, method, path);
|
|
11
|
+
};
|
|
12
|
+
export const listMembers = async (client, orgId) => {
|
|
13
|
+
const { method, path } = organizationsEndpoints.listMembers;
|
|
14
|
+
const res = await request(client, method, interpolatePath(path, { orgId }));
|
|
15
|
+
return Array.isArray(res) ? res : (res.members ?? []);
|
|
16
|
+
};
|
|
17
|
+
export const inviteMember = async (client, orgId, email, role) => {
|
|
18
|
+
const { method, path } = organizationsEndpoints.inviteMember;
|
|
19
|
+
await request(client, method, interpolatePath(path, { orgId }), {
|
|
20
|
+
body: { email, role },
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
export const removeMember = (client, orgId, userId) => {
|
|
24
|
+
const { method, path } = organizationsEndpoints.removeMember;
|
|
25
|
+
return request(client, method, interpolatePath(path, { orgId, userId }));
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Update an organization member's role. Caller must be `admin` or `super_admin`.
|
|
29
|
+
*
|
|
30
|
+
* Server enforces:
|
|
31
|
+
* - Cannot change your own role (use another admin) — 403
|
|
32
|
+
* - Only super_admins can promote to / change a super_admin — 403
|
|
33
|
+
* - Cannot demote the last admin (org must retain ≥1 admin/super_admin) — 403
|
|
34
|
+
*
|
|
35
|
+
* Idempotent: setting a member's current role returns success without an audit row.
|
|
36
|
+
*/
|
|
37
|
+
export const updateMemberRole = (client, orgId, userId, role) => {
|
|
38
|
+
const { method, path } = organizationsEndpoints.updateMemberRole;
|
|
39
|
+
return request(client, method, interpolatePath(path, { orgId, userId }), {
|
|
40
|
+
body: { role },
|
|
41
|
+
});
|
|
42
|
+
};
|