@sylphx/management 0.1.0 → 0.2.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.
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 +141 -0
  5. package/dist/admin.d.ts.map +1 -0
  6. package/dist/admin.js +96 -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 +28 -0
  107. package/dist/http.d.ts.map +1 -0
  108. package/dist/http.js +71 -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,22 @@
1
+ /**
2
+ * Projects — create / list / delete.
3
+ *
4
+ * Wire shape sourced from `@sylphx/contract` (ADR-084). Paths + methods
5
+ * come from `projectsEndpoints`; hand-written types are forbidden here.
6
+ */
7
+ import { projectsEndpoints } from '@sylphx/contract';
8
+ import { interpolatePath, request } from './http.js';
9
+ export const list = async (client) => {
10
+ const { method, path } = projectsEndpoints.list;
11
+ const res = await request(client, method, path);
12
+ return Array.isArray(res) ? res : (res.data ?? []);
13
+ };
14
+ export const create = (client, input) => {
15
+ const { method, path } = projectsEndpoints.create;
16
+ return request(client, method, path, { body: input });
17
+ };
18
+ const _delete = (client, id) => {
19
+ const { method, path } = projectsEndpoints.delete;
20
+ return request(client, method, interpolatePath(path, { id }));
21
+ };
22
+ export { _delete as delete };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Realtime pub/sub — per-project Redis Streams backing SSE channels.
3
+ *
4
+ * GET /realtime/status?projectId= — availability + provider
5
+ * GET /realtime/channels?projectId= — list active channels
6
+ * POST /realtime/channels — reserve a channel name
7
+ * DELETE /realtime/channels/:channelName — free a channel
8
+ *
9
+ * Channels are Redis-backed per-project streams; no external Soketi/Pusher
10
+ * service. Consumers open SSE connections to the runtime directly — this
11
+ * SDK module only manages the channel registry (create / list / delete).
12
+ */
13
+ import type { Client } from './client.js';
14
+ export interface RealtimeStatus {
15
+ readonly available: boolean;
16
+ readonly provider: string;
17
+ }
18
+ export declare const status: (client: Client, projectId: string) => Promise<RealtimeStatus>;
19
+ export interface RealtimeChannel {
20
+ readonly name: string;
21
+ readonly activeConnections: number;
22
+ readonly messagesPerHour: number;
23
+ readonly status: 'active' | 'empty';
24
+ }
25
+ export declare const listChannels: (client: Client, projectId: string) => Promise<{
26
+ channels: readonly RealtimeChannel[];
27
+ count: number;
28
+ }>;
29
+ export declare const createChannel: (client: Client, projectId: string, name: string) => Promise<{
30
+ name: string;
31
+ }>;
32
+ export declare const deleteChannel: (client: Client, projectId: string, channelName: string) => Promise<void>;
33
+ //# sourceMappingURL=realtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,cAAc,CACZ,CAAA;AAErE,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAA;CACnC;AAED,eAAO,MAAM,YAAY,GACxB,QAAQ,MAAM,EACd,WAAW,MAAM,KACf,OAAO,CAAC;IAAE,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CACK,CAAA;AAEvE,eAAO,MAAM,aAAa,GACzB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,KACV,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CACkD,CAAA;AAE7E,eAAO,MAAM,aAAa,GACzB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,aAAa,MAAM,KACjB,OAAO,CAAC,IAAI,CAGZ,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Realtime pub/sub — per-project Redis Streams backing SSE channels.
3
+ *
4
+ * GET /realtime/status?projectId= — availability + provider
5
+ * GET /realtime/channels?projectId= — list active channels
6
+ * POST /realtime/channels — reserve a channel name
7
+ * DELETE /realtime/channels/:channelName — free a channel
8
+ *
9
+ * Channels are Redis-backed per-project streams; no external Soketi/Pusher
10
+ * service. Consumers open SSE connections to the runtime directly — this
11
+ * SDK module only manages the channel registry (create / list / delete).
12
+ */
13
+ import { request } from './http.js';
14
+ export const status = (client, projectId) => request(client, 'GET', '/realtime/status', { query: { projectId } });
15
+ export const listChannels = (client, projectId) => request(client, 'GET', '/realtime/channels', { query: { projectId } });
16
+ export const createChannel = (client, projectId, name) => request(client, 'POST', '/realtime/channels', { body: { projectId, name } });
17
+ export const deleteChannel = (client, projectId, channelName) => request(client, 'DELETE', `/realtime/channels/${encodeURIComponent(channelName)}`, {
18
+ query: { projectId },
19
+ });
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Referrals — per-project referral codes + conversion tracking.
3
+ *
4
+ * GET /referrals — list (projectId required)
5
+ * GET /referrals/stats — aggregated conversion stats
6
+ * GET /referrals/:id — detail (projectId required as query)
7
+ * POST /referrals — create (optional custom code)
8
+ * POST /referrals/:id/expire — mark pending referral expired
9
+ *
10
+ * Referral data is sharded into per-project databases; the `projectId`
11
+ * routes the request to the correct shard and is required on every call.
12
+ */
13
+ import type { Client } from './client.js';
14
+ export type ReferralStatus = 'pending' | 'completed' | 'expired' | 'cancelled';
15
+ export type RewardType = 'points' | 'credit' | 'discount' | 'custom';
16
+ export interface UserRef {
17
+ readonly id: string;
18
+ readonly email: string;
19
+ readonly name: string | null;
20
+ }
21
+ export interface Referral {
22
+ readonly id: string;
23
+ readonly projectId: string;
24
+ readonly projectName: string;
25
+ readonly code: string;
26
+ readonly referrer: UserRef | null;
27
+ readonly referredUser: UserRef | null;
28
+ readonly status: ReferralStatus;
29
+ readonly rewardType: RewardType;
30
+ readonly createdAt: string;
31
+ readonly completedAt: string | null;
32
+ }
33
+ export interface ReferralDetail extends Referral {
34
+ readonly metadata: Readonly<Record<string, unknown>> | null;
35
+ }
36
+ export interface ListOptions {
37
+ readonly environmentId?: string;
38
+ readonly limit?: number;
39
+ readonly offset?: number;
40
+ }
41
+ export declare const list: (client: Client, projectId: string, options?: ListOptions) => Promise<readonly Referral[]>;
42
+ export declare const get: (client: Client, id: string, projectId: string) => Promise<ReferralDetail>;
43
+ export interface CreateInput {
44
+ readonly projectId: string;
45
+ readonly referrerId: string;
46
+ readonly code?: string;
47
+ readonly rewardType?: RewardType;
48
+ }
49
+ export interface CreateResult {
50
+ readonly id: string;
51
+ readonly code: string;
52
+ }
53
+ export declare const create: (client: Client, input: CreateInput) => Promise<CreateResult>;
54
+ export interface StatsOptions {
55
+ readonly environmentId?: string;
56
+ readonly days?: number;
57
+ }
58
+ export interface ReferralStats {
59
+ readonly overall: {
60
+ readonly total: number;
61
+ readonly completed: number;
62
+ readonly pending: number;
63
+ readonly expired: number;
64
+ readonly conversionRate: number;
65
+ };
66
+ readonly period: {
67
+ readonly days: number;
68
+ readonly since: string;
69
+ readonly created: number;
70
+ readonly completed: number;
71
+ readonly conversionRate: number;
72
+ };
73
+ readonly byRewardType: readonly {
74
+ readonly rewardType: RewardType;
75
+ readonly total: number;
76
+ readonly completed: number;
77
+ readonly conversionRate: number;
78
+ }[];
79
+ readonly byProject: readonly {
80
+ readonly projectId: string;
81
+ readonly total: number;
82
+ readonly completed: number;
83
+ readonly conversionRate: number;
84
+ }[];
85
+ readonly dailyTrend: readonly {
86
+ readonly date: string;
87
+ readonly created: number;
88
+ readonly completed: number;
89
+ }[];
90
+ readonly topReferrers: readonly {
91
+ readonly referrerId: string;
92
+ readonly totalReferrals: number;
93
+ readonly completedReferrals: number;
94
+ }[];
95
+ }
96
+ export declare const stats: (client: Client, projectId: string, options?: StatsOptions) => Promise<ReferralStats>;
97
+ export declare const expire: (client: Client, id: string, projectId: string) => Promise<{
98
+ success: boolean;
99
+ }>;
100
+ //# sourceMappingURL=referrals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referrals.d.ts","sourceRoot":"","sources":["../src/referrals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Referrals — per-project referral codes + conversion tracking.
3
+ *
4
+ * GET /referrals — list (projectId required)
5
+ * GET /referrals/stats — aggregated conversion stats
6
+ * GET /referrals/:id — detail (projectId required as query)
7
+ * POST /referrals — create (optional custom code)
8
+ * POST /referrals/:id/expire — mark pending referral expired
9
+ *
10
+ * Referral data is sharded into per-project databases; the `projectId`
11
+ * routes the request to the correct shard and is required on every call.
12
+ */
13
+ import { request } from './http.js';
14
+ export const list = (client, projectId, options) => request(client, 'GET', '/referrals', {
15
+ query: {
16
+ projectId,
17
+ environmentId: options?.environmentId,
18
+ limit: options?.limit !== undefined ? String(options.limit) : undefined,
19
+ offset: options?.offset !== undefined ? String(options.offset) : undefined,
20
+ },
21
+ });
22
+ export const get = (client, id, projectId) => request(client, 'GET', `/referrals/${encodeURIComponent(id)}`, { query: { projectId } });
23
+ export const create = (client, input) => request(client, 'POST', '/referrals', { body: input });
24
+ export const stats = (client, projectId, options) => request(client, 'GET', '/referrals/stats', {
25
+ query: {
26
+ projectId,
27
+ environmentId: options?.environmentId,
28
+ days: options?.days !== undefined ? String(options.days) : undefined,
29
+ },
30
+ });
31
+ export const expire = (client, id, projectId) => request(client, 'POST', `/referrals/${encodeURIComponent(id)}/expire`, {
32
+ body: { projectId },
33
+ });
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Refresh token lifecycle (Platform-audience OAuth rotation).
3
+ *
4
+ * POST /auth/refresh — rotate a refresh token and mint a new access JWT
5
+ * POST /auth/logout — revoke the presented refresh token (sign out)
6
+ *
7
+ * The refresh endpoint is PUBLIC (no platformAuth middleware) because it
8
+ * authenticates via the refresh token itself in the JSON body.
9
+ *
10
+ * Note (ADR-089 Phase 5.1): these endpoints currently live on the
11
+ * Platform host but authenticate BaaS-issued refresh tokens. When Phase
12
+ * 5.1 consolidates the full OAuth AS on the runtime/BaaS plane, these
13
+ * methods will move to `@sylphx/sdk.auth.oauth`. Until then, Management
14
+ * exposes them so Console / CLI have a single type-safe surface.
15
+ *
16
+ * @see docs/adr/ADR-059-unified-credentials.md §1.1
17
+ * @see docs/adr/ADR-089-platform-as-first-customer-of-baas.md
18
+ */
19
+ import type { Client } from './client.js';
20
+ export interface RefreshResult {
21
+ readonly accessToken: string;
22
+ readonly refreshToken: string;
23
+ readonly expiresIn: number;
24
+ readonly tokenType: 'Bearer';
25
+ }
26
+ /**
27
+ * Rotate a refresh token. Returns a fresh access+refresh pair; the
28
+ * presented refresh token is invalidated server-side (single-use
29
+ * rotation per ADR-059 §1.1).
30
+ */
31
+ export declare const rotate: (client: Client, refreshToken: string) => Promise<RefreshResult>;
32
+ /**
33
+ * Revoke a refresh token (sign out). Idempotent — revoking an already-
34
+ * revoked or unknown token still returns success to prevent side-channel
35
+ * token-existence probing.
36
+ */
37
+ export declare const signOut: (client: Client, refreshToken: string) => Promise<{
38
+ success: boolean;
39
+ }>;
40
+ /** Backwards-compat alias used by some Console flows. */
41
+ export declare const revoke: (client: Client, refreshToken: string) => Promise<{
42
+ success: boolean;
43
+ }>;
44
+ //# sourceMappingURL=refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../src/refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAA;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,aAAa,CACd,CAAA;AAErE;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CACvB,CAAA;AAEpE,yDAAyD;AACzD,eAAO,MAAM,MAAM,WAJa,MAAM,gBAAgB,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAI9D,CAAA"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Refresh token lifecycle (Platform-audience OAuth rotation).
3
+ *
4
+ * POST /auth/refresh — rotate a refresh token and mint a new access JWT
5
+ * POST /auth/logout — revoke the presented refresh token (sign out)
6
+ *
7
+ * The refresh endpoint is PUBLIC (no platformAuth middleware) because it
8
+ * authenticates via the refresh token itself in the JSON body.
9
+ *
10
+ * Note (ADR-089 Phase 5.1): these endpoints currently live on the
11
+ * Platform host but authenticate BaaS-issued refresh tokens. When Phase
12
+ * 5.1 consolidates the full OAuth AS on the runtime/BaaS plane, these
13
+ * methods will move to `@sylphx/sdk.auth.oauth`. Until then, Management
14
+ * exposes them so Console / CLI have a single type-safe surface.
15
+ *
16
+ * @see docs/adr/ADR-059-unified-credentials.md §1.1
17
+ * @see docs/adr/ADR-089-platform-as-first-customer-of-baas.md
18
+ */
19
+ import { request } from './http.js';
20
+ /**
21
+ * Rotate a refresh token. Returns a fresh access+refresh pair; the
22
+ * presented refresh token is invalidated server-side (single-use
23
+ * rotation per ADR-059 §1.1).
24
+ */
25
+ export const rotate = (client, refreshToken) => request(client, 'POST', '/auth/refresh', { body: { refreshToken } });
26
+ /**
27
+ * Revoke a refresh token (sign out). Idempotent — revoking an already-
28
+ * revoked or unknown token still returns success to prevent side-channel
29
+ * token-existence probing.
30
+ */
31
+ export const signOut = (client, refreshToken) => request(client, 'POST', '/auth/logout', { body: { refreshToken } });
32
+ /** Backwards-compat alias used by some Console flows. */
33
+ export const revoke = signOut;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Remote config — server-persisted non-secret key-value store per env.
3
+ *
4
+ * Renamed from `config.ts` in the old OOP SDK to `remoteConfig.ts` (ADR-077
5
+ * Rule D) — disambiguates from the CLI-side local JSON store (`config.ts`)
6
+ * and the billing `plan`/`subscription` surface.
7
+ */
8
+ import type { Client } from './client.js';
9
+ import type { ConfigEntry } from './types.js';
10
+ export declare const list: (client: Client, projectId: string, envType?: string) => Promise<ConfigEntry[]>;
11
+ export declare const get: (client: Client, projectId: string, key: string, envType?: string) => Promise<ConfigEntry>;
12
+ export declare const set: (client: Client, projectId: string, key: string, value: string, envType?: string) => Promise<ConfigEntry>;
13
+ declare const _delete: (client: Client, projectId: string, key: string, envType?: string) => Promise<void>;
14
+ export { _delete as delete };
15
+ //# sourceMappingURL=remoteConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteConfig.d.ts","sourceRoot":"","sources":["../src/remoteConfig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAY7C,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,UAAU,MAAM,KACd,OAAO,CAAC,WAAW,EAAE,CASvB,CAAA;AAED,eAAO,MAAM,GAAG,GACf,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,KAAK,MAAM,EACX,UAAU,MAAM,KACd,OAAO,CAAC,WAAW,CAQrB,CAAA;AAED,eAAO,MAAM,GAAG,GACf,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,KAAK,MAAM,EACX,OAAO,MAAM,EACb,UAAU,MAAM,KACd,OAAO,CAAC,WAAW,CAKrB,CAAA;AAED,QAAA,MAAM,OAAO,GACZ,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,KAAK,MAAM,EACX,UAAU,MAAM,KACd,OAAO,CAAC,IAAI,CAQd,CAAA;AACD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Remote config — server-persisted non-secret key-value store per env.
3
+ *
4
+ * Renamed from `config.ts` in the old OOP SDK to `remoteConfig.ts` (ADR-077
5
+ * Rule D) — disambiguates from the CLI-side local JSON store (`config.ts`)
6
+ * and the billing `plan`/`subscription` surface.
7
+ */
8
+ import { resolveId as resolveEnvId } from './environments.js';
9
+ import { request } from './http.js';
10
+ const resolveEnv = async (client, projectId, envType) => {
11
+ if (!envType)
12
+ return undefined;
13
+ const envId = await resolveEnvId(client, projectId, envType);
14
+ return envId ?? undefined;
15
+ };
16
+ export const list = async (client, projectId, envType) => {
17
+ const env = await resolveEnv(client, projectId, envType);
18
+ const res = await request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/config`, { query: { env } });
19
+ return Array.isArray(res) ? res : (res.data ?? []);
20
+ };
21
+ export const get = async (client, projectId, key, envType) => {
22
+ const env = await resolveEnv(client, projectId, envType);
23
+ return request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/config/${encodeURIComponent(key)}`, { query: { env } });
24
+ };
25
+ export const set = async (client, projectId, key, value, envType) => {
26
+ const environmentId = envType ? await resolveEnvId(client, projectId, envType) : null;
27
+ return request(client, 'POST', `/projects/${encodeURIComponent(projectId)}/config`, {
28
+ body: { key, value, environmentId },
29
+ });
30
+ };
31
+ const _delete = async (client, projectId, key, envType) => {
32
+ const env = await resolveEnv(client, projectId, envType);
33
+ return request(client, 'DELETE', `/projects/${encodeURIComponent(projectId)}/config/${encodeURIComponent(key)}`, { query: { env } });
34
+ };
35
+ export { _delete as delete };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Resource bindings — link a managed resource (DB / storage / volume) to a
3
+ * project environment.
4
+ *
5
+ * Renamed from `resources.ts` (class: `ResourceBindingsResource`) in the old
6
+ * OOP SDK — the module name now matches the capability (ADR-077 Rule D).
7
+ */
8
+ import type { Client } from './client.js';
9
+ import type { ResourceBinding } from './types.js';
10
+ export declare const list: (client: Client, resourceId: string) => Promise<ResourceBinding[]>;
11
+ export interface BindInput {
12
+ readonly projectId: string;
13
+ readonly envType: string;
14
+ readonly role?: string;
15
+ }
16
+ export declare const create: (client: Client, resourceId: string, input: BindInput) => Promise<ResourceBinding>;
17
+ declare const _delete: (client: Client, resourceId: string, bindingId: string) => Promise<void>;
18
+ export { _delete as delete };
19
+ //# sourceMappingURL=resourceBindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceBindings.d.ts","sourceRoot":"","sources":["../src/resourceBindings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,IAAI,GAAU,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,eAAe,EAAE,CAOxF,CAAA;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,OAAO,SAAS,KACd,OAAO,CAAC,eAAe,CAQzB,CAAA;AAED,QAAA,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,YAAY,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,CAKnF,CAAA;AACF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Resource bindings — link a managed resource (DB / storage / volume) to a
3
+ * project environment.
4
+ *
5
+ * Renamed from `resources.ts` (class: `ResourceBindingsResource`) in the old
6
+ * OOP SDK — the module name now matches the capability (ADR-077 Rule D).
7
+ */
8
+ import { resolveId as resolveEnvId } from './environments.js';
9
+ import { request } from './http.js';
10
+ export const list = async (client, resourceId) => {
11
+ const res = await request(client, 'GET', `/resources/${encodeURIComponent(resourceId)}/bindings`);
12
+ return res.bindings ?? [];
13
+ };
14
+ export const create = async (client, resourceId, input) => {
15
+ const projectEnvironmentId = await resolveEnvId(client, input.projectId, input.envType);
16
+ if (!projectEnvironmentId) {
17
+ throw new Error(`Environment '${input.envType}' not found for project '${input.projectId}'`);
18
+ }
19
+ return request(client, 'POST', `/resources/${encodeURIComponent(resourceId)}/bindings`, {
20
+ body: { projectEnvironmentId, role: input.role ?? 'primary' },
21
+ });
22
+ };
23
+ const _delete = (client, resourceId, bindingId) => request(client, 'DELETE', `/resources/${encodeURIComponent(resourceId)}/bindings/${encodeURIComponent(bindingId)}`);
24
+ export { _delete as delete };
@@ -0,0 +1,60 @@
1
+ /**
2
+ * CI runners — self-hosted machines that execute build / deploy jobs.
3
+ *
4
+ * POST /runners — register (returns one-time install token)
5
+ * GET /runners — list
6
+ * GET /runners/:id/jobs — recent jobs for a runner
7
+ * DELETE /runners/:id — unregister
8
+ *
9
+ * The `registrationToken` returned by `register()` is shown ONCE — the
10
+ * server only keeps a hash. Runners exchange it for a long-lived
11
+ * credential during bootstrap.
12
+ */
13
+ import type { Client } from './client.js';
14
+ export type RunnerPlatform = 'linux' | 'macos' | 'windows';
15
+ export type RunnerArch = 'x64' | 'arm64';
16
+ export interface RunnerView {
17
+ readonly id: string;
18
+ readonly name: string;
19
+ readonly platform: RunnerPlatform;
20
+ readonly arch: RunnerArch;
21
+ readonly version: string | null;
22
+ readonly status: string;
23
+ readonly lastSeenAt: string | null;
24
+ readonly createdAt: string;
25
+ readonly labels?: readonly string[];
26
+ readonly maxJobs?: number;
27
+ }
28
+ export interface RunnerJob {
29
+ readonly id: string;
30
+ readonly runnerId: string | null;
31
+ readonly status: string;
32
+ readonly gitRepo: string;
33
+ readonly gitBranch: string;
34
+ readonly gitCommit: string | null;
35
+ readonly startedAt: string | null;
36
+ readonly finishedAt: string | null;
37
+ }
38
+ export interface RegisterInput {
39
+ readonly name: string;
40
+ readonly platform: RunnerPlatform;
41
+ readonly arch: RunnerArch;
42
+ readonly labels?: readonly string[];
43
+ readonly maxJobs?: number;
44
+ }
45
+ export interface RegisterResult {
46
+ readonly runnerId: string;
47
+ /** One-time install token — shown ONCE. */
48
+ readonly registrationToken: string;
49
+ }
50
+ export declare const register: (client: Client, input: RegisterInput) => Promise<RegisterResult>;
51
+ export declare const list: (client: Client) => Promise<{
52
+ runners: readonly RunnerView[];
53
+ }>;
54
+ export declare const listJobs: (client: Client, runnerId: string) => Promise<{
55
+ jobs: readonly RunnerJob[];
56
+ }>;
57
+ export declare const unregister: (client: Client, runnerId: string) => Promise<{
58
+ success: boolean;
59
+ }>;
60
+ //# sourceMappingURL=runners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;AAC1D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,CAAA;AAExC,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;CAClC;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,OAAO,aAAa,KAAG,OAAO,CAAC,cAAc,CACjC,CAAA;AAErD,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAC7C,CAAA;AAEnC,eAAO,MAAM,QAAQ,GACpB,QAAQ,MAAM,EACd,UAAU,MAAM,KACd,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,CAC+B,CAAA;AAExE,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CACpB,CAAA"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CI runners — self-hosted machines that execute build / deploy jobs.
3
+ *
4
+ * POST /runners — register (returns one-time install token)
5
+ * GET /runners — list
6
+ * GET /runners/:id/jobs — recent jobs for a runner
7
+ * DELETE /runners/:id — unregister
8
+ *
9
+ * The `registrationToken` returned by `register()` is shown ONCE — the
10
+ * server only keeps a hash. Runners exchange it for a long-lived
11
+ * credential during bootstrap.
12
+ */
13
+ import { request } from './http.js';
14
+ export const register = (client, input) => request(client, 'POST', '/runners', { body: input });
15
+ export const list = (client) => request(client, 'GET', '/runners');
16
+ export const listJobs = (client, runnerId) => request(client, 'GET', `/runners/${encodeURIComponent(runnerId)}/jobs`);
17
+ export const unregister = (client, runnerId) => request(client, 'DELETE', `/runners/${encodeURIComponent(runnerId)}`);
package/dist/saml.d.ts ADDED
@@ -0,0 +1,44 @@
1
+ /**
2
+ * SAML SSO — enterprise Identity Provider configuration per organization.
3
+ *
4
+ * GET /saml — provider for org (null if unconfigured)
5
+ * POST /saml — create provider
6
+ * PATCH /saml — update provider
7
+ * POST /saml/status — enable / disable
8
+ * DELETE /saml — delete provider + accounts
9
+ * GET /saml/metadata — SP metadata XML (for IdP wiring)
10
+ * GET /saml/logs — authentication logs
11
+ * POST /saml/test — validate cert + reach SSO URL
12
+ * GET /saml/templates — IdP setup templates (Okta/Azure/...)
13
+ * GET /saml/name-id-formats — enum options + URIs
14
+ * GET /saml/signature-algorithms — enum options + URIs
15
+ *
16
+ * Wire shape sourced from `@sylphx/contract` (ADR-084). Paths + methods
17
+ * come from `samlEndpoints`; types come from the matching schemas.
18
+ * Hand-written types are forbidden here.
19
+ *
20
+ * Admin-only. Certificate is PEM — `create()` / `update()` accept it as-is;
21
+ * the server validates the chain and stores the fingerprint. The raw IdP
22
+ * metadata XML returned by `metadata()` is feed-ready for the IdP's
23
+ * "Add Service Provider" flow — no post-processing required.
24
+ */
25
+ import type { CreateSAMLProviderInput, CreateSAMLProviderResult, DeleteSAMLProviderResult, GetSAMLLogsResult, GetSAMLMetadataResult, GetSAMLProviderResult, ListSAMLIdPTemplatesResult, ListSAMLNameIdFormatsResult, ListSAMLSignatureAlgorithmsResult, SAMLAttributeMapping, SAMLAuthLog, SAMLIdPTemplate, SAMLNameIdFormat, SAMLNameIdFormatOption, SAMLProvider, SAMLProviderStatus, SAMLProviderType, SAMLSignatureAlgorithm, SAMLSignatureAlgorithmOption, SetSAMLProviderStatusResult, TestSAMLConfigInput, TestSAMLConfigResult, UpdateSAMLProviderInput, UpdateSAMLProviderResult } from '@sylphx/contract';
26
+ import type { Client } from './client.js';
27
+ export type { CreateSAMLProviderInput, CreateSAMLProviderResult, GetSAMLMetadataResult as MetadataResult, SAMLAttributeMapping, SAMLAuthLog as AuthLog, SAMLIdPTemplate as IdPTemplate, SAMLNameIdFormat, SAMLNameIdFormatOption as NameIdFormatOption, SAMLProvider, SAMLProviderStatus, SAMLProviderType, SAMLSignatureAlgorithm, SAMLSignatureAlgorithmOption as SignatureAlgorithmOption, TestSAMLConfigInput as TestConfigInput, TestSAMLConfigResult as TestConfigResult, UpdateSAMLProviderInput, };
28
+ /**
29
+ * `Promise`-typed CRUD wrappers. Each routes through the contract endpoint
30
+ * descriptor so the path / method live in `@sylphx/contract` only.
31
+ */
32
+ export declare const get: (client: Client, organizationId: string) => Promise<GetSAMLProviderResult>;
33
+ export declare const create: (client: Client, input: CreateSAMLProviderInput) => Promise<CreateSAMLProviderResult>;
34
+ export declare const update: (client: Client, input: UpdateSAMLProviderInput) => Promise<UpdateSAMLProviderResult>;
35
+ export declare const setStatus: (client: Client, providerId: string, enabled: boolean) => Promise<SetSAMLProviderStatusResult>;
36
+ declare const _delete: (client: Client, providerId: string) => Promise<DeleteSAMLProviderResult>;
37
+ export { _delete as delete };
38
+ export declare const metadata: (client: Client, organizationId: string) => Promise<GetSAMLMetadataResult>;
39
+ export declare const logs: (client: Client, providerId: string, limit?: number) => Promise<GetSAMLLogsResult>;
40
+ export declare const testConfig: (client: Client, input: TestSAMLConfigInput) => Promise<TestSAMLConfigResult>;
41
+ export declare const templates: (client: Client) => Promise<ListSAMLIdPTemplatesResult>;
42
+ export declare const nameIdFormats: (client: Client) => Promise<ListSAMLNameIdFormatsResult>;
43
+ export declare const signatureAlgorithms: (client: Client) => Promise<ListSAMLSignatureAlgorithmsResult>;
44
+ //# sourceMappingURL=saml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saml.d.ts","sourceRoot":"","sources":["../src/saml.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EACX,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAMzC,YAAY,EACX,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,IAAI,cAAc,EACvC,oBAAoB,EACpB,WAAW,IAAI,OAAO,EACtB,eAAe,IAAI,WAAW,EAC9B,gBAAgB,EAChB,sBAAsB,IAAI,kBAAkB,EAC5C,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,IAAI,wBAAwB,EACxD,mBAAmB,IAAI,eAAe,EACtC,oBAAoB,IAAI,gBAAgB,EACxC,uBAAuB,GACvB,CAAA;AAED;;;GAGG;AAEH,eAAO,MAAM,GAAG,GAAI,QAAQ,MAAM,EAAE,gBAAgB,MAAM,KAAG,OAAO,CAAC,qBAAqB,CAGzF,CAAA;AAED,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,OAAO,uBAAuB,KAC5B,OAAO,CAAC,wBAAwB,CAGlC,CAAA;AAED,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,OAAO,uBAAuB,KAC5B,OAAO,CAAC,wBAAwB,CAGlC,CAAA;AAED,eAAO,MAAM,SAAS,GACrB,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,SAAS,OAAO,KACd,OAAO,CAAC,2BAA2B,CAGrC,CAAA;AAED,QAAA,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,wBAAwB,CAGrF,CAAA;AACD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA;AAE5B,eAAO,MAAM,QAAQ,GACpB,QAAQ,MAAM,EACd,gBAAgB,MAAM,KACpB,OAAO,CAAC,qBAAqB,CAG/B,CAAA;AAED,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,QAAQ,MAAM,KACZ,OAAO,CAAC,iBAAiB,CAK3B,CAAA;AAED,eAAO,MAAM,UAAU,GACtB,QAAQ,MAAM,EACd,OAAO,mBAAmB,KACxB,OAAO,CAAC,oBAAoB,CAG9B,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,0BAA0B,CAG5E,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,2BAA2B,CAGjF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,iCAAiC,CAG7F,CAAA"}
package/dist/saml.js ADDED
@@ -0,0 +1,77 @@
1
+ /**
2
+ * SAML SSO — enterprise Identity Provider configuration per organization.
3
+ *
4
+ * GET /saml — provider for org (null if unconfigured)
5
+ * POST /saml — create provider
6
+ * PATCH /saml — update provider
7
+ * POST /saml/status — enable / disable
8
+ * DELETE /saml — delete provider + accounts
9
+ * GET /saml/metadata — SP metadata XML (for IdP wiring)
10
+ * GET /saml/logs — authentication logs
11
+ * POST /saml/test — validate cert + reach SSO URL
12
+ * GET /saml/templates — IdP setup templates (Okta/Azure/...)
13
+ * GET /saml/name-id-formats — enum options + URIs
14
+ * GET /saml/signature-algorithms — enum options + URIs
15
+ *
16
+ * Wire shape sourced from `@sylphx/contract` (ADR-084). Paths + methods
17
+ * come from `samlEndpoints`; types come from the matching schemas.
18
+ * Hand-written types are forbidden here.
19
+ *
20
+ * Admin-only. Certificate is PEM — `create()` / `update()` accept it as-is;
21
+ * the server validates the chain and stores the fingerprint. The raw IdP
22
+ * metadata XML returned by `metadata()` is feed-ready for the IdP's
23
+ * "Add Service Provider" flow — no post-processing required.
24
+ */
25
+ import { samlEndpoints } from '@sylphx/contract';
26
+ import { request } from './http.js';
27
+ /**
28
+ * `Promise`-typed CRUD wrappers. Each routes through the contract endpoint
29
+ * descriptor so the path / method live in `@sylphx/contract` only.
30
+ */
31
+ export const get = (client, organizationId) => {
32
+ const { method, path } = samlEndpoints.getProvider;
33
+ return request(client, method, path, { query: { organizationId } });
34
+ };
35
+ export const create = (client, input) => {
36
+ const { method, path } = samlEndpoints.createProvider;
37
+ return request(client, method, path, { body: input });
38
+ };
39
+ export const update = (client, input) => {
40
+ const { method, path } = samlEndpoints.updateProvider;
41
+ return request(client, method, path, { body: input });
42
+ };
43
+ export const setStatus = (client, providerId, enabled) => {
44
+ const { method, path } = samlEndpoints.setProviderStatus;
45
+ return request(client, method, path, { body: { providerId, enabled } });
46
+ };
47
+ const _delete = (client, providerId) => {
48
+ const { method, path } = samlEndpoints.deleteProvider;
49
+ return request(client, method, path, { body: { providerId } });
50
+ };
51
+ export { _delete as delete };
52
+ export const metadata = (client, organizationId) => {
53
+ const { method, path } = samlEndpoints.getMetadata;
54
+ return request(client, method, path, { query: { organizationId } });
55
+ };
56
+ export const logs = (client, providerId, limit) => {
57
+ const { method, path } = samlEndpoints.getLogs;
58
+ return request(client, method, path, {
59
+ query: { providerId, limit: limit !== undefined ? String(limit) : undefined },
60
+ });
61
+ };
62
+ export const testConfig = (client, input) => {
63
+ const { method, path } = samlEndpoints.testConfig;
64
+ return request(client, method, path, { body: input });
65
+ };
66
+ export const templates = (client) => {
67
+ const { method, path } = samlEndpoints.listTemplates;
68
+ return request(client, method, path);
69
+ };
70
+ export const nameIdFormats = (client) => {
71
+ const { method, path } = samlEndpoints.listNameIdFormats;
72
+ return request(client, method, path);
73
+ };
74
+ export const signatureAlgorithms = (client) => {
75
+ const { method, path } = samlEndpoints.listSignatureAlgorithms;
76
+ return request(client, method, path);
77
+ };