@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.
Files changed (259) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/LICENSE +21 -0
  3. package/README.md +157 -101
  4. package/dist/admin.d.ts +168 -0
  5. package/dist/admin.d.ts.map +1 -0
  6. package/dist/admin.js +123 -0
  7. package/dist/adminBootstrap.d.ts +46 -0
  8. package/dist/adminBootstrap.d.ts.map +1 -0
  9. package/dist/adminBootstrap.js +33 -0
  10. package/dist/adminBuilds.d.ts +72 -0
  11. package/dist/adminBuilds.d.ts.map +1 -0
  12. package/dist/adminBuilds.js +29 -0
  13. package/dist/adminEnvServices.d.ts +41 -0
  14. package/dist/adminEnvServices.d.ts.map +1 -0
  15. package/dist/adminEnvServices.js +22 -0
  16. package/dist/adminRateLimits.d.ts +61 -0
  17. package/dist/adminRateLimits.d.ts.map +1 -0
  18. package/dist/adminRateLimits.js +44 -0
  19. package/dist/adminReconcile.d.ts +45 -0
  20. package/dist/adminReconcile.d.ts.map +1 -0
  21. package/dist/adminReconcile.js +20 -0
  22. package/dist/adminResources.d.ts +97 -0
  23. package/dist/adminResources.d.ts.map +1 -0
  24. package/dist/adminResources.js +40 -0
  25. package/dist/adminSecrets.d.ts +60 -0
  26. package/dist/adminSecrets.d.ts.map +1 -0
  27. package/dist/adminSecrets.js +43 -0
  28. package/dist/adminTenants.d.ts +41 -0
  29. package/dist/adminTenants.d.ts.map +1 -0
  30. package/dist/adminTenants.js +29 -0
  31. package/dist/ai.d.ts +148 -0
  32. package/dist/ai.d.ts.map +1 -0
  33. package/dist/ai.js +29 -0
  34. package/dist/analytics.d.ts +49 -0
  35. package/dist/analytics.d.ts.map +1 -0
  36. package/dist/analytics.js +23 -0
  37. package/dist/auth.d.ts +39 -0
  38. package/dist/auth.d.ts.map +1 -0
  39. package/dist/auth.js +27 -0
  40. package/dist/authSettings.d.ts +71 -0
  41. package/dist/authSettings.d.ts.map +1 -0
  42. package/dist/authSettings.js +39 -0
  43. package/dist/backups.d.ts +66 -0
  44. package/dist/backups.d.ts.map +1 -0
  45. package/dist/backups.js +32 -0
  46. package/dist/billing.d.ts +105 -0
  47. package/dist/billing.d.ts.map +1 -0
  48. package/dist/billing.js +42 -0
  49. package/dist/billingSettings.d.ts +78 -0
  50. package/dist/billingSettings.d.ts.map +1 -0
  51. package/dist/billingSettings.js +54 -0
  52. package/dist/branchDatabases.d.ts +53 -0
  53. package/dist/branchDatabases.d.ts.map +1 -0
  54. package/dist/branchDatabases.js +38 -0
  55. package/dist/certs.d.ts +63 -0
  56. package/dist/certs.d.ts.map +1 -0
  57. package/dist/certs.js +28 -0
  58. package/dist/ciSettings.d.ts +77 -0
  59. package/dist/ciSettings.d.ts.map +1 -0
  60. package/dist/ciSettings.js +41 -0
  61. package/dist/client.d.ts +36 -38
  62. package/dist/client.d.ts.map +1 -1
  63. package/dist/client.js +32 -90
  64. package/dist/consent.d.ts +111 -0
  65. package/dist/consent.d.ts.map +1 -0
  66. package/dist/consent.js +35 -0
  67. package/dist/databases.d.ts +17 -0
  68. package/dist/databases.d.ts.map +1 -0
  69. package/dist/databases.js +32 -0
  70. package/dist/deployments.d.ts +22 -0
  71. package/dist/deployments.d.ts.map +1 -0
  72. package/dist/deployments.js +39 -0
  73. package/dist/domains.d.ts +26 -0
  74. package/dist/domains.d.ts.map +1 -0
  75. package/dist/domains.js +39 -0
  76. package/dist/edgeDeployments.d.ts +43 -0
  77. package/dist/edgeDeployments.d.ts.map +1 -0
  78. package/dist/edgeDeployments.js +32 -0
  79. package/dist/email.d.ts +45 -0
  80. package/dist/email.d.ts.map +1 -0
  81. package/dist/email.js +21 -0
  82. package/dist/engagement.d.ts +100 -0
  83. package/dist/engagement.d.ts.map +1 -0
  84. package/dist/engagement.js +28 -0
  85. package/dist/envVars.d.ts +17 -0
  86. package/dist/envVars.d.ts.map +1 -0
  87. package/dist/envVars.js +34 -0
  88. package/dist/environments.d.ts +41 -0
  89. package/dist/environments.d.ts.map +1 -0
  90. package/dist/environments.js +54 -0
  91. package/dist/errors.d.ts +8 -3
  92. package/dist/errors.d.ts.map +1 -1
  93. package/dist/errors.js +8 -2
  94. package/dist/experiments.d.ts +80 -0
  95. package/dist/experiments.d.ts.map +1 -0
  96. package/dist/experiments.js +23 -0
  97. package/dist/flags.d.ts +85 -0
  98. package/dist/flags.d.ts.map +1 -0
  99. package/dist/flags.js +25 -0
  100. package/dist/functions.d.ts +39 -0
  101. package/dist/functions.d.ts.map +1 -0
  102. package/dist/functions.js +40 -0
  103. package/dist/github.d.ts +33 -0
  104. package/dist/github.d.ts.map +1 -0
  105. package/dist/github.js +22 -0
  106. package/dist/http.d.ts +49 -0
  107. package/dist/http.d.ts.map +1 -0
  108. package/dist/http.js +97 -0
  109. package/dist/index.d.ts +85 -20
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +86 -20
  112. package/dist/kv.d.ts +66 -0
  113. package/dist/kv.d.ts.map +1 -0
  114. package/dist/kv.js +36 -0
  115. package/dist/logs.d.ts +14 -0
  116. package/dist/logs.d.ts.map +1 -0
  117. package/dist/logs.js +17 -0
  118. package/dist/management.d.ts +55 -0
  119. package/dist/management.d.ts.map +1 -0
  120. package/dist/management.js +31 -0
  121. package/dist/monitoring.d.ts +65 -0
  122. package/dist/monitoring.d.ts.map +1 -0
  123. package/dist/monitoring.js +29 -0
  124. package/dist/newsletter.d.ts +279 -0
  125. package/dist/newsletter.d.ts.map +1 -0
  126. package/dist/newsletter.js +98 -0
  127. package/dist/notifications.d.ts +30 -0
  128. package/dist/notifications.d.ts.map +1 -0
  129. package/dist/notifications.js +19 -0
  130. package/dist/oidc.d.ts +46 -0
  131. package/dist/oidc.d.ts.map +1 -0
  132. package/dist/oidc.js +25 -0
  133. package/dist/organizations.d.ts +24 -0
  134. package/dist/organizations.d.ts.map +1 -0
  135. package/dist/organizations.js +42 -0
  136. package/dist/plans.d.ts +66 -0
  137. package/dist/plans.d.ts.map +1 -0
  138. package/dist/plans.js +42 -0
  139. package/dist/privacy.d.ts +138 -0
  140. package/dist/privacy.d.ts.map +1 -0
  141. package/dist/privacy.js +41 -0
  142. package/dist/projects.d.ts +14 -0
  143. package/dist/projects.d.ts.map +1 -0
  144. package/dist/projects.js +22 -0
  145. package/dist/realtime.d.ts +33 -0
  146. package/dist/realtime.d.ts.map +1 -0
  147. package/dist/realtime.js +19 -0
  148. package/dist/referrals.d.ts +100 -0
  149. package/dist/referrals.d.ts.map +1 -0
  150. package/dist/referrals.js +33 -0
  151. package/dist/refresh.d.ts +44 -0
  152. package/dist/refresh.d.ts.map +1 -0
  153. package/dist/refresh.js +33 -0
  154. package/dist/remoteConfig.d.ts +15 -0
  155. package/dist/remoteConfig.d.ts.map +1 -0
  156. package/dist/remoteConfig.js +35 -0
  157. package/dist/resourceBindings.d.ts +19 -0
  158. package/dist/resourceBindings.d.ts.map +1 -0
  159. package/dist/resourceBindings.js +24 -0
  160. package/dist/runners.d.ts +60 -0
  161. package/dist/runners.d.ts.map +1 -0
  162. package/dist/runners.js +17 -0
  163. package/dist/saml.d.ts +44 -0
  164. package/dist/saml.d.ts.map +1 -0
  165. package/dist/saml.js +77 -0
  166. package/dist/sandboxes.d.ts +15 -0
  167. package/dist/sandboxes.d.ts.map +1 -0
  168. package/dist/sandboxes.js +18 -0
  169. package/dist/search.d.ts +66 -0
  170. package/dist/search.d.ts.map +1 -0
  171. package/dist/search.js +29 -0
  172. package/dist/secrets.d.ts +50 -0
  173. package/dist/secrets.d.ts.map +1 -0
  174. package/dist/secrets.js +61 -0
  175. package/dist/security.d.ts +58 -0
  176. package/dist/security.d.ts.map +1 -0
  177. package/dist/security.js +49 -0
  178. package/dist/serviceTokenRequests.d.ts +71 -0
  179. package/dist/serviceTokenRequests.d.ts.map +1 -0
  180. package/dist/serviceTokenRequests.js +43 -0
  181. package/dist/serviceTokens.d.ts +65 -0
  182. package/dist/serviceTokens.d.ts.map +1 -0
  183. package/dist/serviceTokens.js +22 -0
  184. package/dist/services.d.ts +10 -0
  185. package/dist/services.d.ts.map +1 -0
  186. package/dist/services.js +15 -0
  187. package/dist/sessionReplay.d.ts +116 -0
  188. package/dist/sessionReplay.d.ts.map +1 -0
  189. package/dist/sessionReplay.js +29 -0
  190. package/dist/storage.d.ts +12 -0
  191. package/dist/storage.d.ts.map +1 -0
  192. package/dist/storage.js +10 -0
  193. package/dist/tasks.d.ts +29 -0
  194. package/dist/tasks.d.ts.map +1 -0
  195. package/dist/tasks.js +29 -0
  196. package/dist/types.d.ts +59 -155
  197. package/dist/types.d.ts.map +1 -1
  198. package/dist/types.js +17 -3
  199. package/dist/user.d.ts +99 -0
  200. package/dist/user.d.ts.map +1 -0
  201. package/dist/user.js +58 -0
  202. package/dist/users.d.ts +9 -0
  203. package/dist/users.d.ts.map +1 -0
  204. package/dist/users.js +11 -0
  205. package/dist/volumes.d.ts +16 -0
  206. package/dist/volumes.d.ts.map +1 -0
  207. package/dist/volumes.js +9 -0
  208. package/dist/webhooks.d.ts +77 -0
  209. package/dist/webhooks.d.ts.map +1 -0
  210. package/dist/webhooks.js +27 -0
  211. package/package.json +194 -5
  212. package/dist/request.d.ts +0 -5
  213. package/dist/request.d.ts.map +0 -1
  214. package/dist/request.js +0 -1
  215. package/dist/resources/config.d.ts +0 -30
  216. package/dist/resources/config.d.ts.map +0 -1
  217. package/dist/resources/config.js +0 -62
  218. package/dist/resources/databases.d.ts +0 -26
  219. package/dist/resources/databases.d.ts.map +0 -1
  220. package/dist/resources/databases.js +0 -29
  221. package/dist/resources/deployments.d.ts +0 -24
  222. package/dist/resources/deployments.d.ts.map +0 -1
  223. package/dist/resources/deployments.js +0 -30
  224. package/dist/resources/domains.d.ts +0 -30
  225. package/dist/resources/domains.d.ts.map +0 -1
  226. package/dist/resources/domains.js +0 -46
  227. package/dist/resources/env-vars.d.ts +0 -19
  228. package/dist/resources/env-vars.d.ts.map +0 -1
  229. package/dist/resources/env-vars.js +0 -30
  230. package/dist/resources/environments.d.ts +0 -16
  231. package/dist/resources/environments.d.ts.map +0 -1
  232. package/dist/resources/environments.js +0 -24
  233. package/dist/resources/logs.d.ts +0 -13
  234. package/dist/resources/logs.d.ts.map +0 -1
  235. package/dist/resources/logs.js +0 -20
  236. package/dist/resources/org.d.ts +0 -15
  237. package/dist/resources/org.d.ts.map +0 -1
  238. package/dist/resources/org.js +0 -25
  239. package/dist/resources/projects.d.ts +0 -19
  240. package/dist/resources/projects.d.ts.map +0 -1
  241. package/dist/resources/projects.js +0 -19
  242. package/dist/resources/resources.d.ts +0 -26
  243. package/dist/resources/resources.d.ts.map +0 -1
  244. package/dist/resources/resources.js +0 -32
  245. package/dist/resources/services.d.ts +0 -21
  246. package/dist/resources/services.d.ts.map +0 -1
  247. package/dist/resources/services.js +0 -30
  248. package/dist/resources/storage.d.ts +0 -21
  249. package/dist/resources/storage.d.ts.map +0 -1
  250. package/dist/resources/storage.js +0 -25
  251. package/dist/resources/tasks.d.ts +0 -42
  252. package/dist/resources/tasks.d.ts.map +0 -1
  253. package/dist/resources/tasks.js +0 -49
  254. package/dist/resources/user.d.ts +0 -9
  255. package/dist/resources/user.d.ts.map +0 -1
  256. package/dist/resources/user.js +0 -10
  257. package/dist/resources/volumes.d.ts +0 -20
  258. package/dist/resources/volumes.d.ts.map +0 -1
  259. 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
+ };