@sylphx/contract 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 (571) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/LICENSE +21 -0
  3. package/README.md +164 -0
  4. package/dist/endpoint.d.ts +65 -0
  5. package/dist/endpoint.d.ts.map +1 -0
  6. package/dist/endpoint.js +22 -0
  7. package/dist/endpoints/admin-ai-playground.d.ts +93 -0
  8. package/dist/endpoints/admin-ai-playground.d.ts.map +1 -0
  9. package/dist/endpoints/admin-ai-playground.js +37 -0
  10. package/dist/endpoints/admin-anomalies.d.ts +108 -0
  11. package/dist/endpoints/admin-anomalies.d.ts.map +1 -0
  12. package/dist/endpoints/admin-anomalies.js +72 -0
  13. package/dist/endpoints/admin-apm.d.ts +102 -0
  14. package/dist/endpoints/admin-apm.d.ts.map +1 -0
  15. package/dist/endpoints/admin-apm.js +70 -0
  16. package/dist/endpoints/admin-audit.d.ts +714 -0
  17. package/dist/endpoints/admin-audit.d.ts.map +1 -0
  18. package/dist/endpoints/admin-audit.js +494 -0
  19. package/dist/endpoints/admin-billing.d.ts +82 -0
  20. package/dist/endpoints/admin-billing.d.ts.map +1 -0
  21. package/dist/endpoints/admin-billing.js +190 -0
  22. package/dist/endpoints/admin-bootstrap.d.ts +16 -0
  23. package/dist/endpoints/admin-bootstrap.d.ts.map +1 -0
  24. package/dist/endpoints/admin-bootstrap.js +28 -0
  25. package/dist/endpoints/admin-broadcasts.d.ts +105 -0
  26. package/dist/endpoints/admin-broadcasts.d.ts.map +1 -0
  27. package/dist/endpoints/admin-broadcasts.js +60 -0
  28. package/dist/endpoints/admin-builds.d.ts +33 -0
  29. package/dist/endpoints/admin-builds.d.ts.map +1 -0
  30. package/dist/endpoints/admin-builds.js +36 -0
  31. package/dist/endpoints/admin-config.d.ts +180 -0
  32. package/dist/endpoints/admin-config.d.ts.map +1 -0
  33. package/dist/endpoints/admin-config.js +108 -0
  34. package/dist/endpoints/admin-consent.d.ts +123 -0
  35. package/dist/endpoints/admin-consent.d.ts.map +1 -0
  36. package/dist/endpoints/admin-consent.js +126 -0
  37. package/dist/endpoints/admin-env-services.d.ts +28 -0
  38. package/dist/endpoints/admin-env-services.d.ts.map +1 -0
  39. package/dist/endpoints/admin-env-services.js +35 -0
  40. package/dist/endpoints/admin-impersonation.d.ts +105 -0
  41. package/dist/endpoints/admin-impersonation.d.ts.map +1 -0
  42. package/dist/endpoints/admin-impersonation.js +88 -0
  43. package/dist/endpoints/admin-invitations.d.ts +73 -0
  44. package/dist/endpoints/admin-invitations.d.ts.map +1 -0
  45. package/dist/endpoints/admin-invitations.js +55 -0
  46. package/dist/endpoints/admin-jwt-keys.d.ts +75 -0
  47. package/dist/endpoints/admin-jwt-keys.d.ts.map +1 -0
  48. package/dist/endpoints/admin-jwt-keys.js +63 -0
  49. package/dist/endpoints/admin-logs.d.ts +109 -0
  50. package/dist/endpoints/admin-logs.d.ts.map +1 -0
  51. package/dist/endpoints/admin-logs.js +78 -0
  52. package/dist/endpoints/admin-plans.d.ts +63 -0
  53. package/dist/endpoints/admin-plans.d.ts.map +1 -0
  54. package/dist/endpoints/admin-plans.js +47 -0
  55. package/dist/endpoints/admin-project-users.d.ts +148 -0
  56. package/dist/endpoints/admin-project-users.d.ts.map +1 -0
  57. package/dist/endpoints/admin-project-users.js +89 -0
  58. package/dist/endpoints/admin-projects.d.ts +124 -0
  59. package/dist/endpoints/admin-projects.d.ts.map +1 -0
  60. package/dist/endpoints/admin-projects.js +74 -0
  61. package/dist/endpoints/admin-quotas.d.ts +98 -0
  62. package/dist/endpoints/admin-quotas.d.ts.map +1 -0
  63. package/dist/endpoints/admin-quotas.js +67 -0
  64. package/dist/endpoints/admin-rate-limits.d.ts +50 -0
  65. package/dist/endpoints/admin-rate-limits.d.ts.map +1 -0
  66. package/dist/endpoints/admin-rate-limits.js +53 -0
  67. package/dist/endpoints/admin-reconcile.d.ts +28 -0
  68. package/dist/endpoints/admin-reconcile.d.ts.map +1 -0
  69. package/dist/endpoints/admin-reconcile.js +33 -0
  70. package/dist/endpoints/admin-resources.d.ts +51 -0
  71. package/dist/endpoints/admin-resources.d.ts.map +1 -0
  72. package/dist/endpoints/admin-resources.js +53 -0
  73. package/dist/endpoints/admin-secrets.d.ts +41 -0
  74. package/dist/endpoints/admin-secrets.d.ts.map +1 -0
  75. package/dist/endpoints/admin-secrets.js +33 -0
  76. package/dist/endpoints/admin-services.d.ts +29 -0
  77. package/dist/endpoints/admin-services.d.ts.map +1 -0
  78. package/dist/endpoints/admin-services.js +35 -0
  79. package/dist/endpoints/admin-tasks.d.ts +186 -0
  80. package/dist/endpoints/admin-tasks.d.ts.map +1 -0
  81. package/dist/endpoints/admin-tasks.js +67 -0
  82. package/dist/endpoints/admin-tenants.d.ts +26 -0
  83. package/dist/endpoints/admin-tenants.d.ts.map +1 -0
  84. package/dist/endpoints/admin-tenants.js +30 -0
  85. package/dist/endpoints/admin-traces.d.ts +124 -0
  86. package/dist/endpoints/admin-traces.d.ts.map +1 -0
  87. package/dist/endpoints/admin-traces.js +59 -0
  88. package/dist/endpoints/admin-users.d.ts +106 -0
  89. package/dist/endpoints/admin-users.d.ts.map +1 -0
  90. package/dist/endpoints/admin-users.js +83 -0
  91. package/dist/endpoints/admin-webhook-signature-versions.d.ts +59 -0
  92. package/dist/endpoints/admin-webhook-signature-versions.d.ts.map +1 -0
  93. package/dist/endpoints/admin-webhook-signature-versions.js +57 -0
  94. package/dist/endpoints/ai-admin.d.ts +30 -0
  95. package/dist/endpoints/ai-admin.d.ts.map +1 -0
  96. package/dist/endpoints/ai-admin.js +59 -0
  97. package/dist/endpoints/analytics-admin.d.ts +279 -0
  98. package/dist/endpoints/analytics-admin.d.ts.map +1 -0
  99. package/dist/endpoints/analytics-admin.js +308 -0
  100. package/dist/endpoints/analytics.d.ts +58 -0
  101. package/dist/endpoints/analytics.d.ts.map +1 -0
  102. package/dist/endpoints/analytics.js +43 -0
  103. package/dist/endpoints/audit-chain.d.ts +49 -0
  104. package/dist/endpoints/audit-chain.d.ts.map +1 -0
  105. package/dist/endpoints/audit-chain.js +29 -0
  106. package/dist/endpoints/audit.d.ts +50 -0
  107. package/dist/endpoints/audit.d.ts.map +1 -0
  108. package/dist/endpoints/audit.js +30 -0
  109. package/dist/endpoints/auth-admin.d.ts +65 -0
  110. package/dist/endpoints/auth-admin.d.ts.map +1 -0
  111. package/dist/endpoints/auth-admin.js +55 -0
  112. package/dist/endpoints/auth.d.ts +157 -0
  113. package/dist/endpoints/auth.d.ts.map +1 -0
  114. package/dist/endpoints/auth.js +214 -0
  115. package/dist/endpoints/backups.d.ts +51 -0
  116. package/dist/endpoints/backups.d.ts.map +1 -0
  117. package/dist/endpoints/backups.js +47 -0
  118. package/dist/endpoints/billing-console.d.ts +294 -0
  119. package/dist/endpoints/billing-console.d.ts.map +1 -0
  120. package/dist/endpoints/billing-console.js +167 -0
  121. package/dist/endpoints/billing-settings.d.ts +107 -0
  122. package/dist/endpoints/billing-settings.d.ts.map +1 -0
  123. package/dist/endpoints/billing-settings.js +117 -0
  124. package/dist/endpoints/branch-databases.d.ts +75 -0
  125. package/dist/endpoints/branch-databases.d.ts.map +1 -0
  126. package/dist/endpoints/branch-databases.js +61 -0
  127. package/dist/endpoints/challenge.d.ts +62 -0
  128. package/dist/endpoints/challenge.d.ts.map +1 -0
  129. package/dist/endpoints/challenge.js +52 -0
  130. package/dist/endpoints/ci-settings.d.ts +89 -0
  131. package/dist/endpoints/ci-settings.d.ts.map +1 -0
  132. package/dist/endpoints/ci-settings.js +78 -0
  133. package/dist/endpoints/consent-admin.d.ts +134 -0
  134. package/dist/endpoints/consent-admin.d.ts.map +1 -0
  135. package/dist/endpoints/consent-admin.js +83 -0
  136. package/dist/endpoints/databases.d.ts +251 -0
  137. package/dist/endpoints/databases.d.ts.map +1 -0
  138. package/dist/endpoints/databases.js +150 -0
  139. package/dist/endpoints/deployments.d.ts +280 -0
  140. package/dist/endpoints/deployments.d.ts.map +1 -0
  141. package/dist/endpoints/deployments.js +205 -0
  142. package/dist/endpoints/domains.d.ts +356 -0
  143. package/dist/endpoints/domains.d.ts.map +1 -0
  144. package/dist/endpoints/domains.js +149 -0
  145. package/dist/endpoints/edge-deployments.d.ts +92 -0
  146. package/dist/endpoints/edge-deployments.d.ts.map +1 -0
  147. package/dist/endpoints/edge-deployments.js +58 -0
  148. package/dist/endpoints/email-admin.d.ts +415 -0
  149. package/dist/endpoints/email-admin.d.ts.map +1 -0
  150. package/dist/endpoints/email-admin.js +253 -0
  151. package/dist/endpoints/email.d.ts +37 -0
  152. package/dist/endpoints/email.d.ts.map +1 -0
  153. package/dist/endpoints/email.js +42 -0
  154. package/dist/endpoints/engagement-admin.d.ts +98 -0
  155. package/dist/endpoints/engagement-admin.d.ts.map +1 -0
  156. package/dist/endpoints/engagement-admin.js +64 -0
  157. package/dist/endpoints/env-vars.d.ts +66 -0
  158. package/dist/endpoints/env-vars.d.ts.map +1 -0
  159. package/dist/endpoints/env-vars.js +47 -0
  160. package/dist/endpoints/environments.d.ts +456 -0
  161. package/dist/endpoints/environments.d.ts.map +1 -0
  162. package/dist/endpoints/environments.js +237 -0
  163. package/dist/endpoints/experiments.d.ts +500 -0
  164. package/dist/endpoints/experiments.d.ts.map +1 -0
  165. package/dist/endpoints/experiments.js +93 -0
  166. package/dist/endpoints/flags-admin.d.ts +74 -0
  167. package/dist/endpoints/flags-admin.d.ts.map +1 -0
  168. package/dist/endpoints/flags-admin.js +84 -0
  169. package/dist/endpoints/flags.d.ts +23 -0
  170. package/dist/endpoints/flags.d.ts.map +1 -0
  171. package/dist/endpoints/flags.js +17 -0
  172. package/dist/endpoints/github.d.ts +30 -0
  173. package/dist/endpoints/github.d.ts.map +1 -0
  174. package/dist/endpoints/github.js +37 -0
  175. package/dist/endpoints/image-opt.d.ts +43 -0
  176. package/dist/endpoints/image-opt.d.ts.map +1 -0
  177. package/dist/endpoints/image-opt.js +44 -0
  178. package/dist/endpoints/kv-admin.d.ts +58 -0
  179. package/dist/endpoints/kv-admin.d.ts.map +1 -0
  180. package/dist/endpoints/kv-admin.js +69 -0
  181. package/dist/endpoints/kv.d.ts +63 -0
  182. package/dist/endpoints/kv.d.ts.map +1 -0
  183. package/dist/endpoints/kv.js +82 -0
  184. package/dist/endpoints/monitoring-admin.d.ts +204 -0
  185. package/dist/endpoints/monitoring-admin.d.ts.map +1 -0
  186. package/dist/endpoints/monitoring-admin.js +119 -0
  187. package/dist/endpoints/monitoring.d.ts +63 -0
  188. package/dist/endpoints/monitoring.d.ts.map +1 -0
  189. package/dist/endpoints/monitoring.js +27 -0
  190. package/dist/endpoints/newsletter.d.ts +366 -0
  191. package/dist/endpoints/newsletter.d.ts.map +1 -0
  192. package/dist/endpoints/newsletter.js +232 -0
  193. package/dist/endpoints/notifications-admin.d.ts +268 -0
  194. package/dist/endpoints/notifications-admin.d.ts.map +1 -0
  195. package/dist/endpoints/notifications-admin.js +172 -0
  196. package/dist/endpoints/notifications.d.ts +225 -0
  197. package/dist/endpoints/notifications.d.ts.map +1 -0
  198. package/dist/endpoints/notifications.js +150 -0
  199. package/dist/endpoints/oidc.d.ts +67 -0
  200. package/dist/endpoints/oidc.d.ts.map +1 -0
  201. package/dist/endpoints/oidc.js +49 -0
  202. package/dist/endpoints/organizations.d.ts +702 -0
  203. package/dist/endpoints/organizations.d.ts.map +1 -0
  204. package/dist/endpoints/organizations.js +460 -0
  205. package/dist/endpoints/plans.d.ts +136 -0
  206. package/dist/endpoints/plans.d.ts.map +1 -0
  207. package/dist/endpoints/plans.js +83 -0
  208. package/dist/endpoints/privacy.d.ts +131 -0
  209. package/dist/endpoints/privacy.d.ts.map +1 -0
  210. package/dist/endpoints/privacy.js +98 -0
  211. package/dist/endpoints/project-manifest.d.ts +1044 -0
  212. package/dist/endpoints/project-manifest.d.ts.map +1 -0
  213. package/dist/endpoints/project-manifest.js +59 -0
  214. package/dist/endpoints/projects.d.ts +187 -0
  215. package/dist/endpoints/projects.d.ts.map +1 -0
  216. package/dist/endpoints/projects.js +58 -0
  217. package/dist/endpoints/rate-limits.d.ts +83 -0
  218. package/dist/endpoints/rate-limits.d.ts.map +1 -0
  219. package/dist/endpoints/rate-limits.js +54 -0
  220. package/dist/endpoints/realtime-admin.d.ts +42 -0
  221. package/dist/endpoints/realtime-admin.d.ts.map +1 -0
  222. package/dist/endpoints/realtime-admin.js +50 -0
  223. package/dist/endpoints/realtime.d.ts +35 -0
  224. package/dist/endpoints/realtime.d.ts.map +1 -0
  225. package/dist/endpoints/realtime.js +39 -0
  226. package/dist/endpoints/referrals-admin.d.ts +118 -0
  227. package/dist/endpoints/referrals-admin.d.ts.map +1 -0
  228. package/dist/endpoints/referrals-admin.js +59 -0
  229. package/dist/endpoints/refresh.d.ts +19 -0
  230. package/dist/endpoints/refresh.d.ts.map +1 -0
  231. package/dist/endpoints/refresh.js +25 -0
  232. package/dist/endpoints/regions.d.ts +41 -0
  233. package/dist/endpoints/regions.d.ts.map +1 -0
  234. package/dist/endpoints/regions.js +43 -0
  235. package/dist/endpoints/runners.d.ts +55 -0
  236. package/dist/endpoints/runners.d.ts.map +1 -0
  237. package/dist/endpoints/runners.js +45 -0
  238. package/dist/endpoints/saml.d.ts +147 -0
  239. package/dist/endpoints/saml.d.ts.map +1 -0
  240. package/dist/endpoints/saml.js +106 -0
  241. package/dist/endpoints/search.d.ts +62 -0
  242. package/dist/endpoints/search.d.ts.map +1 -0
  243. package/dist/endpoints/search.js +40 -0
  244. package/dist/endpoints/secrets.d.ts +95 -0
  245. package/dist/endpoints/secrets.d.ts.map +1 -0
  246. package/dist/endpoints/secrets.js +81 -0
  247. package/dist/endpoints/security.d.ts +231 -0
  248. package/dist/endpoints/security.d.ts.map +1 -0
  249. package/dist/endpoints/security.js +291 -0
  250. package/dist/endpoints/service-tokens.d.ts +392 -0
  251. package/dist/endpoints/service-tokens.d.ts.map +1 -0
  252. package/dist/endpoints/service-tokens.js +125 -0
  253. package/dist/endpoints/session-replay.d.ts +142 -0
  254. package/dist/endpoints/session-replay.d.ts.map +1 -0
  255. package/dist/endpoints/session-replay.js +53 -0
  256. package/dist/endpoints/storage-admin.d.ts +96 -0
  257. package/dist/endpoints/storage-admin.d.ts.map +1 -0
  258. package/dist/endpoints/storage-admin.js +113 -0
  259. package/dist/endpoints/storage.d.ts +167 -0
  260. package/dist/endpoints/storage.d.ts.map +1 -0
  261. package/dist/endpoints/storage.js +117 -0
  262. package/dist/endpoints/tasks.d.ts +141 -0
  263. package/dist/endpoints/tasks.d.ts.map +1 -0
  264. package/dist/endpoints/tasks.js +97 -0
  265. package/dist/endpoints/users.d.ts +103 -0
  266. package/dist/endpoints/users.d.ts.map +1 -0
  267. package/dist/endpoints/users.js +98 -0
  268. package/dist/endpoints/webhooks.d.ts +201 -0
  269. package/dist/endpoints/webhooks.d.ts.map +1 -0
  270. package/dist/endpoints/webhooks.js +120 -0
  271. package/dist/errors.d.ts +153 -0
  272. package/dist/errors.d.ts.map +1 -0
  273. package/dist/errors.js +73 -0
  274. package/dist/index.d.ts +12303 -0
  275. package/dist/index.d.ts.map +1 -0
  276. package/dist/index.js +390 -0
  277. package/dist/schemas/_primitives.d.ts +37 -0
  278. package/dist/schemas/_primitives.d.ts.map +1 -0
  279. package/dist/schemas/_primitives.js +38 -0
  280. package/dist/schemas/admin-ai-playground.d.ts +128 -0
  281. package/dist/schemas/admin-ai-playground.d.ts.map +1 -0
  282. package/dist/schemas/admin-ai-playground.js +84 -0
  283. package/dist/schemas/admin-anomalies.d.ts +131 -0
  284. package/dist/schemas/admin-anomalies.d.ts.map +1 -0
  285. package/dist/schemas/admin-anomalies.js +106 -0
  286. package/dist/schemas/admin-apm.d.ts +151 -0
  287. package/dist/schemas/admin-apm.d.ts.map +1 -0
  288. package/dist/schemas/admin-apm.js +96 -0
  289. package/dist/schemas/admin-audit.d.ts +625 -0
  290. package/dist/schemas/admin-audit.d.ts.map +1 -0
  291. package/dist/schemas/admin-audit.js +508 -0
  292. package/dist/schemas/admin-billing.d.ts +73 -0
  293. package/dist/schemas/admin-billing.d.ts.map +1 -0
  294. package/dist/schemas/admin-billing.js +60 -0
  295. package/dist/schemas/admin-bootstrap.d.ts +32 -0
  296. package/dist/schemas/admin-bootstrap.d.ts.map +1 -0
  297. package/dist/schemas/admin-bootstrap.js +37 -0
  298. package/dist/schemas/admin-broadcasts.d.ts +181 -0
  299. package/dist/schemas/admin-broadcasts.d.ts.map +1 -0
  300. package/dist/schemas/admin-broadcasts.js +93 -0
  301. package/dist/schemas/admin-builds.d.ts +108 -0
  302. package/dist/schemas/admin-builds.d.ts.map +1 -0
  303. package/dist/schemas/admin-builds.js +127 -0
  304. package/dist/schemas/admin-config.d.ts +248 -0
  305. package/dist/schemas/admin-config.d.ts.map +1 -0
  306. package/dist/schemas/admin-config.js +145 -0
  307. package/dist/schemas/admin-consent.d.ts +129 -0
  308. package/dist/schemas/admin-consent.d.ts.map +1 -0
  309. package/dist/schemas/admin-consent.js +76 -0
  310. package/dist/schemas/admin-env-services.d.ts +63 -0
  311. package/dist/schemas/admin-env-services.d.ts.map +1 -0
  312. package/dist/schemas/admin-env-services.js +81 -0
  313. package/dist/schemas/admin-impersonation.d.ts +150 -0
  314. package/dist/schemas/admin-impersonation.d.ts.map +1 -0
  315. package/dist/schemas/admin-impersonation.js +114 -0
  316. package/dist/schemas/admin-invitations.d.ts +119 -0
  317. package/dist/schemas/admin-invitations.d.ts.map +1 -0
  318. package/dist/schemas/admin-invitations.js +80 -0
  319. package/dist/schemas/admin-jwt-keys.d.ts +130 -0
  320. package/dist/schemas/admin-jwt-keys.d.ts.map +1 -0
  321. package/dist/schemas/admin-jwt-keys.js +83 -0
  322. package/dist/schemas/admin-logs.d.ts +170 -0
  323. package/dist/schemas/admin-logs.d.ts.map +1 -0
  324. package/dist/schemas/admin-logs.js +108 -0
  325. package/dist/schemas/admin-plans.d.ts +92 -0
  326. package/dist/schemas/admin-plans.d.ts.map +1 -0
  327. package/dist/schemas/admin-plans.js +62 -0
  328. package/dist/schemas/admin-project-users.d.ts +183 -0
  329. package/dist/schemas/admin-project-users.d.ts.map +1 -0
  330. package/dist/schemas/admin-project-users.js +108 -0
  331. package/dist/schemas/admin-projects.d.ts +237 -0
  332. package/dist/schemas/admin-projects.d.ts.map +1 -0
  333. package/dist/schemas/admin-projects.js +129 -0
  334. package/dist/schemas/admin-quotas.d.ts +161 -0
  335. package/dist/schemas/admin-quotas.d.ts.map +1 -0
  336. package/dist/schemas/admin-quotas.js +107 -0
  337. package/dist/schemas/admin-rate-limits.d.ts +90 -0
  338. package/dist/schemas/admin-rate-limits.d.ts.map +1 -0
  339. package/dist/schemas/admin-rate-limits.js +72 -0
  340. package/dist/schemas/admin-reconcile.d.ts +89 -0
  341. package/dist/schemas/admin-reconcile.d.ts.map +1 -0
  342. package/dist/schemas/admin-reconcile.js +86 -0
  343. package/dist/schemas/admin-resources.d.ts +129 -0
  344. package/dist/schemas/admin-resources.d.ts.map +1 -0
  345. package/dist/schemas/admin-resources.js +143 -0
  346. package/dist/schemas/admin-secrets.d.ts +113 -0
  347. package/dist/schemas/admin-secrets.d.ts.map +1 -0
  348. package/dist/schemas/admin-secrets.js +94 -0
  349. package/dist/schemas/admin-services.d.ts +71 -0
  350. package/dist/schemas/admin-services.d.ts.map +1 -0
  351. package/dist/schemas/admin-services.js +61 -0
  352. package/dist/schemas/admin-tasks.d.ts +239 -0
  353. package/dist/schemas/admin-tasks.d.ts.map +1 -0
  354. package/dist/schemas/admin-tasks.js +103 -0
  355. package/dist/schemas/admin-tenants.d.ts +45 -0
  356. package/dist/schemas/admin-tenants.d.ts.map +1 -0
  357. package/dist/schemas/admin-tenants.js +54 -0
  358. package/dist/schemas/admin-traces.d.ts +203 -0
  359. package/dist/schemas/admin-traces.d.ts.map +1 -0
  360. package/dist/schemas/admin-traces.js +128 -0
  361. package/dist/schemas/admin-users.d.ts +158 -0
  362. package/dist/schemas/admin-users.d.ts.map +1 -0
  363. package/dist/schemas/admin-users.js +110 -0
  364. package/dist/schemas/admin-webhook-signature-versions.d.ts +103 -0
  365. package/dist/schemas/admin-webhook-signature-versions.d.ts.map +1 -0
  366. package/dist/schemas/admin-webhook-signature-versions.js +73 -0
  367. package/dist/schemas/ai-admin.d.ts +39 -0
  368. package/dist/schemas/ai-admin.d.ts.map +1 -0
  369. package/dist/schemas/ai-admin.js +29 -0
  370. package/dist/schemas/ai.d.ts +120 -0
  371. package/dist/schemas/ai.d.ts.map +1 -0
  372. package/dist/schemas/ai.js +84 -0
  373. package/dist/schemas/analytics-admin.d.ts +104 -0
  374. package/dist/schemas/analytics-admin.d.ts.map +1 -0
  375. package/dist/schemas/analytics-admin.js +61 -0
  376. package/dist/schemas/analytics.d.ts +118 -0
  377. package/dist/schemas/analytics.d.ts.map +1 -0
  378. package/dist/schemas/analytics.js +80 -0
  379. package/dist/schemas/audit-chain.d.ts +81 -0
  380. package/dist/schemas/audit-chain.d.ts.map +1 -0
  381. package/dist/schemas/audit-chain.js +62 -0
  382. package/dist/schemas/auth-admin.d.ts +55 -0
  383. package/dist/schemas/auth-admin.d.ts.map +1 -0
  384. package/dist/schemas/auth-admin.js +48 -0
  385. package/dist/schemas/auth.d.ts +865 -0
  386. package/dist/schemas/auth.d.ts.map +1 -0
  387. package/dist/schemas/auth.js +815 -0
  388. package/dist/schemas/backups.d.ts +70 -0
  389. package/dist/schemas/backups.d.ts.map +1 -0
  390. package/dist/schemas/backups.js +38 -0
  391. package/dist/schemas/billing-console.d.ts +414 -0
  392. package/dist/schemas/billing-console.d.ts.map +1 -0
  393. package/dist/schemas/billing-console.js +298 -0
  394. package/dist/schemas/billing-settings.d.ts +156 -0
  395. package/dist/schemas/billing-settings.d.ts.map +1 -0
  396. package/dist/schemas/billing-settings.js +119 -0
  397. package/dist/schemas/billing.d.ts +211 -0
  398. package/dist/schemas/billing.d.ts.map +1 -0
  399. package/dist/schemas/billing.js +147 -0
  400. package/dist/schemas/branch-database.d.ts +98 -0
  401. package/dist/schemas/branch-database.d.ts.map +1 -0
  402. package/dist/schemas/branch-database.js +68 -0
  403. package/dist/schemas/challenge.d.ts +104 -0
  404. package/dist/schemas/challenge.d.ts.map +1 -0
  405. package/dist/schemas/challenge.js +74 -0
  406. package/dist/schemas/ci-settings.d.ts +122 -0
  407. package/dist/schemas/ci-settings.d.ts.map +1 -0
  408. package/dist/schemas/ci-settings.js +65 -0
  409. package/dist/schemas/consent-admin.d.ts +187 -0
  410. package/dist/schemas/consent-admin.d.ts.map +1 -0
  411. package/dist/schemas/consent-admin.js +114 -0
  412. package/dist/schemas/consent.d.ts +78 -0
  413. package/dist/schemas/consent.d.ts.map +1 -0
  414. package/dist/schemas/consent.js +68 -0
  415. package/dist/schemas/database.d.ts +104 -0
  416. package/dist/schemas/database.d.ts.map +1 -0
  417. package/dist/schemas/database.js +89 -0
  418. package/dist/schemas/deployment.d.ts +386 -0
  419. package/dist/schemas/deployment.d.ts.map +1 -0
  420. package/dist/schemas/deployment.js +282 -0
  421. package/dist/schemas/domain.d.ts +148 -0
  422. package/dist/schemas/domain.d.ts.map +1 -0
  423. package/dist/schemas/domain.js +86 -0
  424. package/dist/schemas/edge-deployments.d.ts +140 -0
  425. package/dist/schemas/edge-deployments.d.ts.map +1 -0
  426. package/dist/schemas/edge-deployments.js +87 -0
  427. package/dist/schemas/email-admin.d.ts +384 -0
  428. package/dist/schemas/email-admin.d.ts.map +1 -0
  429. package/dist/schemas/email-admin.js +313 -0
  430. package/dist/schemas/email.d.ts +46 -0
  431. package/dist/schemas/email.d.ts.map +1 -0
  432. package/dist/schemas/email.js +34 -0
  433. package/dist/schemas/engagement-admin.d.ts +148 -0
  434. package/dist/schemas/engagement-admin.d.ts.map +1 -0
  435. package/dist/schemas/engagement-admin.js +107 -0
  436. package/dist/schemas/env-var.d.ts +68 -0
  437. package/dist/schemas/env-var.d.ts.map +1 -0
  438. package/dist/schemas/env-var.js +52 -0
  439. package/dist/schemas/environment.d.ts +392 -0
  440. package/dist/schemas/environment.d.ts.map +1 -0
  441. package/dist/schemas/environment.js +211 -0
  442. package/dist/schemas/experiments.d.ts +540 -0
  443. package/dist/schemas/experiments.d.ts.map +1 -0
  444. package/dist/schemas/experiments.js +150 -0
  445. package/dist/schemas/flags-admin.d.ts +112 -0
  446. package/dist/schemas/flags-admin.d.ts.map +1 -0
  447. package/dist/schemas/flags-admin.js +84 -0
  448. package/dist/schemas/flags.d.ts +43 -0
  449. package/dist/schemas/flags.d.ts.map +1 -0
  450. package/dist/schemas/flags.js +27 -0
  451. package/dist/schemas/github.d.ts +34 -0
  452. package/dist/schemas/github.d.ts.map +1 -0
  453. package/dist/schemas/github.js +24 -0
  454. package/dist/schemas/ids.d.ts +39 -0
  455. package/dist/schemas/ids.d.ts.map +1 -0
  456. package/dist/schemas/ids.js +26 -0
  457. package/dist/schemas/image-opt.d.ts +70 -0
  458. package/dist/schemas/image-opt.d.ts.map +1 -0
  459. package/dist/schemas/image-opt.js +68 -0
  460. package/dist/schemas/kv-admin.d.ts +60 -0
  461. package/dist/schemas/kv-admin.d.ts.map +1 -0
  462. package/dist/schemas/kv-admin.js +43 -0
  463. package/dist/schemas/kv.d.ts +79 -0
  464. package/dist/schemas/kv.d.ts.map +1 -0
  465. package/dist/schemas/kv.js +54 -0
  466. package/dist/schemas/monitoring-admin.d.ts +314 -0
  467. package/dist/schemas/monitoring-admin.d.ts.map +1 -0
  468. package/dist/schemas/monitoring-admin.js +196 -0
  469. package/dist/schemas/monitoring.d.ts +143 -0
  470. package/dist/schemas/monitoring.d.ts.map +1 -0
  471. package/dist/schemas/monitoring.js +96 -0
  472. package/dist/schemas/newsletter.d.ts +366 -0
  473. package/dist/schemas/newsletter.d.ts.map +1 -0
  474. package/dist/schemas/newsletter.js +245 -0
  475. package/dist/schemas/notifications-admin.d.ts +337 -0
  476. package/dist/schemas/notifications-admin.d.ts.map +1 -0
  477. package/dist/schemas/notifications-admin.js +261 -0
  478. package/dist/schemas/notifications.d.ts +312 -0
  479. package/dist/schemas/notifications.d.ts.map +1 -0
  480. package/dist/schemas/notifications.js +235 -0
  481. package/dist/schemas/oidc.d.ts +74 -0
  482. package/dist/schemas/oidc.d.ts.map +1 -0
  483. package/dist/schemas/oidc.js +46 -0
  484. package/dist/schemas/organization-billing.d.ts +165 -0
  485. package/dist/schemas/organization-billing.d.ts.map +1 -0
  486. package/dist/schemas/organization-billing.js +156 -0
  487. package/dist/schemas/organization-project-users.d.ts +126 -0
  488. package/dist/schemas/organization-project-users.d.ts.map +1 -0
  489. package/dist/schemas/organization-project-users.js +88 -0
  490. package/dist/schemas/organization-projects.d.ts +129 -0
  491. package/dist/schemas/organization-projects.d.ts.map +1 -0
  492. package/dist/schemas/organization-projects.js +119 -0
  493. package/dist/schemas/organization-referrals.d.ts +129 -0
  494. package/dist/schemas/organization-referrals.d.ts.map +1 -0
  495. package/dist/schemas/organization-referrals.js +126 -0
  496. package/dist/schemas/organization-team.d.ts +123 -0
  497. package/dist/schemas/organization-team.d.ts.map +1 -0
  498. package/dist/schemas/organization-team.js +119 -0
  499. package/dist/schemas/organization.d.ts +210 -0
  500. package/dist/schemas/organization.d.ts.map +1 -0
  501. package/dist/schemas/organization.js +169 -0
  502. package/dist/schemas/plans.d.ts +211 -0
  503. package/dist/schemas/plans.d.ts.map +1 -0
  504. package/dist/schemas/plans.js +131 -0
  505. package/dist/schemas/privacy.d.ts +174 -0
  506. package/dist/schemas/privacy.d.ts.map +1 -0
  507. package/dist/schemas/privacy.js +132 -0
  508. package/dist/schemas/project-manifest.d.ts +1421 -0
  509. package/dist/schemas/project-manifest.d.ts.map +1 -0
  510. package/dist/schemas/project-manifest.js +318 -0
  511. package/dist/schemas/project.d.ts +132 -0
  512. package/dist/schemas/project.d.ts.map +1 -0
  513. package/dist/schemas/project.js +76 -0
  514. package/dist/schemas/realtime-admin.d.ts +51 -0
  515. package/dist/schemas/realtime-admin.d.ts.map +1 -0
  516. package/dist/schemas/realtime-admin.js +29 -0
  517. package/dist/schemas/realtime.d.ts +46 -0
  518. package/dist/schemas/realtime.d.ts.map +1 -0
  519. package/dist/schemas/realtime.js +32 -0
  520. package/dist/schemas/referrals-admin.d.ts +166 -0
  521. package/dist/schemas/referrals-admin.d.ts.map +1 -0
  522. package/dist/schemas/referrals-admin.js +123 -0
  523. package/dist/schemas/referrals.d.ts +148 -0
  524. package/dist/schemas/referrals.d.ts.map +1 -0
  525. package/dist/schemas/referrals.js +102 -0
  526. package/dist/schemas/refresh.d.ts +29 -0
  527. package/dist/schemas/refresh.d.ts.map +1 -0
  528. package/dist/schemas/refresh.js +18 -0
  529. package/dist/schemas/region.d.ts +118 -0
  530. package/dist/schemas/region.d.ts.map +1 -0
  531. package/dist/schemas/region.js +86 -0
  532. package/dist/schemas/resources.d.ts +345 -0
  533. package/dist/schemas/resources.d.ts.map +1 -0
  534. package/dist/schemas/resources.js +220 -0
  535. package/dist/schemas/runners.d.ts +93 -0
  536. package/dist/schemas/runners.d.ts.map +1 -0
  537. package/dist/schemas/runners.js +49 -0
  538. package/dist/schemas/saml.d.ts +254 -0
  539. package/dist/schemas/saml.d.ts.map +1 -0
  540. package/dist/schemas/saml.js +159 -0
  541. package/dist/schemas/search.d.ts +96 -0
  542. package/dist/schemas/search.d.ts.map +1 -0
  543. package/dist/schemas/search.js +57 -0
  544. package/dist/schemas/secret.d.ts +101 -0
  545. package/dist/schemas/secret.d.ts.map +1 -0
  546. package/dist/schemas/secret.js +79 -0
  547. package/dist/schemas/security.d.ts +345 -0
  548. package/dist/schemas/security.d.ts.map +1 -0
  549. package/dist/schemas/security.js +248 -0
  550. package/dist/schemas/service-tokens.d.ts +342 -0
  551. package/dist/schemas/service-tokens.d.ts.map +1 -0
  552. package/dist/schemas/service-tokens.js +101 -0
  553. package/dist/schemas/session-replay.d.ts +285 -0
  554. package/dist/schemas/session-replay.d.ts.map +1 -0
  555. package/dist/schemas/session-replay.js +145 -0
  556. package/dist/schemas/storage-admin.d.ts +351 -0
  557. package/dist/schemas/storage-admin.d.ts.map +1 -0
  558. package/dist/schemas/storage-admin.js +197 -0
  559. package/dist/schemas/storage.d.ts +257 -0
  560. package/dist/schemas/storage.d.ts.map +1 -0
  561. package/dist/schemas/storage.js +173 -0
  562. package/dist/schemas/tasks.d.ts +178 -0
  563. package/dist/schemas/tasks.d.ts.map +1 -0
  564. package/dist/schemas/tasks.js +102 -0
  565. package/dist/schemas/user.d.ts +103 -0
  566. package/dist/schemas/user.d.ts.map +1 -0
  567. package/dist/schemas/user.js +79 -0
  568. package/dist/schemas/webhooks.d.ts +259 -0
  569. package/dist/schemas/webhooks.d.ts.map +1 -0
  570. package/dist/schemas/webhooks.js +198 -0
  571. package/package.json +154 -0
@@ -0,0 +1,815 @@
1
+ /**
2
+ * Auth — BaaS plane primitives. Matches `@sylphx/sdk` `auth.ts` public
3
+ * surface (sign-in, sign-up, session, 2FA).
4
+ *
5
+ * Two layers coexist here (ADR-084):
6
+ *
7
+ * 1. **Lean primitives** (`SignInInput`, `SignUpInput`, `SessionResult`) —
8
+ * the minimal shape a generic OAuth/OIDC consumer needs. Stable;
9
+ * brand-safe; closed.
10
+ *
11
+ * 2. **SDK wire shapes** (`LoginRequest`, `LoginResponse`, `RegisterRequest`,
12
+ * `RegisterResponse`, `AuthTokensResponse`, `TwoFactorVerifyRequest`,
13
+ * `UserFullProfile`) — richer request/response envelopes the REST API
14
+ * actually returns. Mirror the OpenAPI schema previously consumed from
15
+ * `@sylphx/sdk/src/generated/api.d.ts`. Declared as plain `Struct`s with
16
+ * unbranded `Schema.String` ids so the SDK (which hands ids straight to
17
+ * URL builders, cookies, etc.) can accept them without casts.
18
+ */
19
+ import { Schema } from 'effect';
20
+ import { UserId } from './ids.js';
21
+ /** Tokens issued by `/auth/login` / `/auth/token`. */
22
+ export const AuthTokens = Schema.Struct({
23
+ accessToken: Schema.String,
24
+ refreshToken: Schema.optional(Schema.String),
25
+ tokenType: Schema.optional(Schema.String),
26
+ expiresIn: Schema.optional(Schema.Number),
27
+ });
28
+ export const SessionUser = Schema.Struct({
29
+ id: UserId,
30
+ email: Schema.String,
31
+ name: Schema.NullOr(Schema.String),
32
+ image: Schema.NullOr(Schema.String),
33
+ emailVerified: Schema.Boolean,
34
+ });
35
+ export const SignInInput = Schema.Struct({
36
+ email: Schema.String,
37
+ password: Schema.String,
38
+ });
39
+ /** Success path issues tokens; 2FA path redirects via `requiresTwoFactor`. */
40
+ export const SignInResult = Schema.Struct({
41
+ requiresTwoFactor: Schema.optional(Schema.Boolean),
42
+ userId: Schema.optional(UserId),
43
+ accessToken: Schema.optional(Schema.String),
44
+ refreshToken: Schema.optional(Schema.String),
45
+ tokenType: Schema.optional(Schema.String),
46
+ expiresIn: Schema.optional(Schema.Number),
47
+ });
48
+ export const SignUpInput = Schema.Struct({
49
+ email: Schema.String,
50
+ password: Schema.String,
51
+ name: Schema.optional(Schema.String),
52
+ });
53
+ export const SignUpResult = Schema.Struct({
54
+ userId: UserId,
55
+ email: Schema.String,
56
+ emailVerified: Schema.Boolean,
57
+ });
58
+ export const SessionResult = Schema.Struct({
59
+ user: Schema.NullOr(SessionUser),
60
+ });
61
+ // ── SDK wire shapes ────────────────────────────────────────────────────────
62
+ //
63
+ // These mirror the OpenAPI component schemas the REST API emits. Ids are
64
+ // plain strings (not `UserId`) because SDK callers pass them through to
65
+ // `URL`, cookies, and storage primitives that don't understand branded
66
+ // types — see `@sylphx/sdk/src/auth.ts` notes on the contract/SDK id-brand
67
+ // divide.
68
+ /** Minimal user returned inside login/token/register envelopes. */
69
+ export const AuthUser = Schema.Struct({
70
+ id: Schema.String,
71
+ email: Schema.String,
72
+ name: Schema.NullOr(Schema.String),
73
+ image: Schema.optional(Schema.NullOr(Schema.String)),
74
+ emailVerified: Schema.optional(Schema.Boolean),
75
+ role: Schema.optional(Schema.String),
76
+ createdAt: Schema.optional(Schema.String),
77
+ });
78
+ /** `POST /auth/login` request body. */
79
+ export const LoginRequest = Schema.Struct({
80
+ email: Schema.String,
81
+ password: Schema.String,
82
+ });
83
+ /**
84
+ * `POST /auth/login` response — discriminated on `requiresTwoFactor`.
85
+ *
86
+ * - `true`: caller must finish the 2FA flow via `POST /auth/verify-2fa`
87
+ * using the returned `userId`.
88
+ * - `false` / absent: tokens + user profile are returned directly.
89
+ */
90
+ export const LoginResponse = Schema.Union(Schema.Struct({
91
+ requiresTwoFactor: Schema.Literal(true),
92
+ userId: Schema.String,
93
+ email: Schema.optional(Schema.String),
94
+ }), Schema.Struct({
95
+ requiresTwoFactor: Schema.optional(Schema.Literal(false)),
96
+ accessToken: Schema.String,
97
+ refreshToken: Schema.optional(Schema.String),
98
+ expiresIn: Schema.optional(Schema.Number),
99
+ user: Schema.optional(AuthUser),
100
+ }));
101
+ /**
102
+ * `POST /auth/register` request body — a superset of `SignUpInput` that
103
+ * accepts caller metadata and an optional invitation token.
104
+ */
105
+ export const RegisterRequest = Schema.Struct({
106
+ email: Schema.String,
107
+ password: Schema.String,
108
+ name: Schema.optional(Schema.String),
109
+ metadata: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Unknown })),
110
+ invitationToken: Schema.optional(Schema.String),
111
+ });
112
+ /** `POST /auth/register` response — email-verification envelope. */
113
+ export const RegisterResponse = Schema.Struct({
114
+ requiresVerification: Schema.optional(Schema.Boolean),
115
+ message: Schema.optional(Schema.String),
116
+ user: Schema.Struct({
117
+ id: Schema.String,
118
+ email: Schema.String,
119
+ name: Schema.NullOr(Schema.String),
120
+ }),
121
+ });
122
+ /**
123
+ * Token-issuing response shared by `/auth/token`, `/auth/verify-2fa`,
124
+ * `/auth/switch-org`. `user` is surfaced for SDK convenience (hydrating the
125
+ * local session immediately after issuance).
126
+ */
127
+ export const AuthTokensResponse = Schema.Struct({
128
+ accessToken: Schema.String,
129
+ refreshToken: Schema.String,
130
+ expiresIn: Schema.optional(Schema.Number),
131
+ tokenType: Schema.optional(Schema.String),
132
+ user: Schema.optional(AuthUser),
133
+ });
134
+ /**
135
+ * `POST /auth/verify-2fa` request body.
136
+ *
137
+ * The OpenAPI spec lists `code` only (post-login flow where the server has
138
+ * the user bound to the challenge session). The SDK uses an extended shape
139
+ * including `userId` for the stateless public flow — both are accepted.
140
+ */
141
+ export const TwoFactorVerifyRequest = Schema.Struct({
142
+ userId: Schema.optional(Schema.String),
143
+ code: Schema.String,
144
+ });
145
+ /** `GET /auth/me` response — full profile with verification + timestamps. */
146
+ export const UserFullProfile = Schema.Struct({
147
+ id: Schema.String,
148
+ email: Schema.String,
149
+ name: Schema.NullOr(Schema.String),
150
+ image: Schema.NullOr(Schema.String),
151
+ emailVerified: Schema.optional(Schema.Boolean),
152
+ createdAt: Schema.optional(Schema.String),
153
+ });
154
+ // ─── OAuth Device Flow (RFC 8628) ──────────────────────────────────────────
155
+ //
156
+ // The RFC-8628 device authorization grant is the *client-agnostic*
157
+ // bootstrap surface BaaS issues to any headless client (CLI, TV apps,
158
+ // IoT). ADR-089 Phase 2a hoists the CLI device flow out of the
159
+ // Platform-layer bypass and into the BaaS `/v1/auth/device/*` surface
160
+ // where every consumer — customer and Platform-as-customer alike —
161
+ // speaks the same RFC-shaped protocol.
162
+ //
163
+ // Phase 5.1 will layer RFC 6749 + 7662 + 8414 on top (PKCE, token,
164
+ // revoke, introspect, metadata); Phase 2a ships the four device-flow
165
+ // endpoints that the CLI requires to dogfood.
166
+ /**
167
+ * `POST /auth/device` request body — initiate a device authorization
168
+ * grant per RFC 8628 §3.1.
169
+ */
170
+ export const DeviceInitRequest = Schema.Struct({
171
+ /**
172
+ * Client identifier — must match a well-known client registered on
173
+ * the BaaS plane. Phase 2a hard-codes `sylphx-cli` as the only
174
+ * allow-listed value; Phase 5.1 replaces the allow-list with the
175
+ * `oauth_clients` DB registry (ADR-086).
176
+ */
177
+ client_id: Schema.String,
178
+ /**
179
+ * Space- or array-delimited OAuth scopes the client is requesting.
180
+ * Phase 2a accepts any scope shape; Phase 5.1 will validate against
181
+ * the client's registered scope set.
182
+ */
183
+ scope: Schema.optional(Schema.Array(Schema.String)),
184
+ });
185
+ /**
186
+ * `POST /auth/device` response — grant issued per RFC 8628 §3.2.
187
+ *
188
+ * `device_code` is the CLI's private reference (opaque bearer);
189
+ * `user_code` is the short human-readable code the user enters on the
190
+ * verification page.
191
+ */
192
+ export const DeviceInitResponse = Schema.Struct({
193
+ device_code: Schema.String,
194
+ user_code: Schema.String,
195
+ verification_uri: Schema.String,
196
+ verification_uri_complete: Schema.String,
197
+ expires_in: Schema.Number,
198
+ interval: Schema.Number,
199
+ });
200
+ /**
201
+ * `GET /auth/device/poll?device_code=…` response.
202
+ *
203
+ * Mirrors the RFC 8628 §3.5 polling token-endpoint response but in a
204
+ * single envelope so the SDK can discriminate on `status` without
205
+ * needing a second round-trip to the RFC 6749 token endpoint. Phase
206
+ * 5.1 will add a strict RFC 6749 `/oauth/token` endpoint that callers
207
+ * MAY hit instead when they prefer the canonical shape.
208
+ */
209
+ export const DevicePollResponse = Schema.Union(Schema.Struct({ status: Schema.Literal('pending') }), Schema.Struct({
210
+ status: Schema.Literal('approved'),
211
+ access_token: Schema.String,
212
+ refresh_token: Schema.String,
213
+ token_type: Schema.Literal('Bearer'),
214
+ expires_in: Schema.Number,
215
+ refresh_expires_at: Schema.String,
216
+ }), Schema.Struct({ status: Schema.Literal('denied') }), Schema.Struct({ status: Schema.Literal('expired') }));
217
+ /**
218
+ * `POST /auth/device/approve` request body — browser leg, user-facing.
219
+ *
220
+ * Called from the Console's verification page after the user clicks
221
+ * Authorize. Cookie-session auth identifies the approving user;
222
+ * `user_code` is the short public code the user typed / confirmed on
223
+ * the verification page.
224
+ */
225
+ export const DeviceApproveRequest = Schema.Struct({
226
+ user_code: Schema.String,
227
+ });
228
+ /**
229
+ * `POST /auth/device/approve` response — confirmation envelope.
230
+ * The CLI picks up the tokens on its next `/auth/device/poll` call.
231
+ */
232
+ export const DeviceApproveResponse = Schema.Struct({
233
+ success: Schema.Literal(true),
234
+ });
235
+ /**
236
+ * `POST /auth/device/deny` request body — same shape as approve.
237
+ */
238
+ export const DeviceDenyRequest = Schema.Struct({
239
+ user_code: Schema.String,
240
+ });
241
+ /**
242
+ * `POST /auth/device/deny` response.
243
+ */
244
+ export const DeviceDenyResponse = Schema.Struct({
245
+ success: Schema.Literal(true),
246
+ });
247
+ // ─── OAuth /oauth/token (ADR-089 Phase 5.1b + 5.1c) ───────────────────────────
248
+ //
249
+ // RFC 6749 §3.2 token endpoint — the unified mint surface for every
250
+ // Platform-issued access/refresh bearer. Phase 5.1b shipped the
251
+ // authorization_code + refresh_token grants; Phase 5.1c extends the
252
+ // dispatcher with device_code (RFC 8628 §3.4) + client_credentials
253
+ // (RFC 6749 §4.4). The contract schemas here model the wire shape but the
254
+ // runtime still parses bodies as `Record<string, string>` for forward
255
+ // compatibility — unknown grant-type fields MUST not fail the dispatcher
256
+ // before the client auth check runs.
257
+ /**
258
+ * `authorization_code` grant body — RFC 6749 §4.1.3 + RFC 7636.
259
+ */
260
+ export const OAuthTokenAuthorizationCodeRequest = Schema.Struct({
261
+ grant_type: Schema.Literal('authorization_code'),
262
+ code: Schema.String,
263
+ redirect_uri: Schema.String,
264
+ client_id: Schema.String,
265
+ client_secret: Schema.optional(Schema.String),
266
+ code_verifier: Schema.String,
267
+ });
268
+ /**
269
+ * `refresh_token` grant body — RFC 6749 §6. Rotation is mandatory on the
270
+ * server side; clients simply present their current refresh_token.
271
+ */
272
+ export const OAuthTokenRefreshRequest = Schema.Struct({
273
+ grant_type: Schema.Literal('refresh_token'),
274
+ refresh_token: Schema.String,
275
+ client_id: Schema.String,
276
+ client_secret: Schema.optional(Schema.String),
277
+ scope: Schema.optional(Schema.String),
278
+ });
279
+ /**
280
+ * `device_code` grant body — RFC 8628 §3.4. Client auth is registry-driven;
281
+ * public clients present `client_id` only, confidential clients add
282
+ * `client_secret`.
283
+ */
284
+ export const OAuthTokenDeviceCodeRequest = Schema.Struct({
285
+ grant_type: Schema.Literal('urn:ietf:params:oauth:grant-type:device_code'),
286
+ device_code: Schema.String,
287
+ client_id: Schema.String,
288
+ client_secret: Schema.optional(Schema.String),
289
+ });
290
+ /**
291
+ * `client_credentials` grant body — RFC 6749 §4.4. Confidential clients
292
+ * only; `client_secret` is mandatory.
293
+ */
294
+ export const OAuthTokenClientCredentialsRequest = Schema.Struct({
295
+ grant_type: Schema.Literal('client_credentials'),
296
+ client_id: Schema.String,
297
+ client_secret: Schema.String,
298
+ scope: Schema.optional(Schema.String),
299
+ });
300
+ /**
301
+ * Union of every token-endpoint request shape. Discriminated by
302
+ * `grant_type` — new grants join the union, never replace an existing
303
+ * variant. Rejected grant types return an RFC 6749 §5.2 error envelope
304
+ * with `error='unsupported_grant_type'`.
305
+ */
306
+ export const OAuthTokenRequest = Schema.Union(OAuthTokenAuthorizationCodeRequest, OAuthTokenRefreshRequest, OAuthTokenDeviceCodeRequest, OAuthTokenClientCredentialsRequest);
307
+ /**
308
+ * Successful `/oauth/token` response carrying access + refresh token pair.
309
+ * Used by `authorization_code`, `refresh_token`, and `device_code` grants.
310
+ */
311
+ export const OAuthTokenResponse = Schema.Struct({
312
+ access_token: Schema.String,
313
+ token_type: Schema.Literal('Bearer'),
314
+ expires_in: Schema.Number,
315
+ refresh_token: Schema.String,
316
+ scope: Schema.String,
317
+ });
318
+ /**
319
+ * `client_credentials` success response — RFC 6749 §4.4.3 forbids refresh
320
+ * tokens on this grant, so the envelope is deliberately narrower.
321
+ */
322
+ export const OAuthClientCredentialsResponse = Schema.Struct({
323
+ access_token: Schema.String,
324
+ token_type: Schema.Literal('Bearer'),
325
+ expires_in: Schema.Number,
326
+ scope: Schema.String,
327
+ });
328
+ /**
329
+ * RFC 6749 §5.2 error codes + RFC 8628 §3.5 polling codes. One closed
330
+ * enumeration — SDK callers pattern-match on this value to choose the
331
+ * next action (retry / abort / re-auth).
332
+ */
333
+ export const OAuthTokenErrorCode = Schema.Literal(
334
+ // RFC 6749 §5.2
335
+ 'invalid_request', 'invalid_client', 'invalid_grant', 'unauthorized_client', 'unsupported_grant_type', 'invalid_scope',
336
+ // RFC 8628 §3.5 — device_code grant only.
337
+ 'authorization_pending', 'slow_down', 'access_denied', 'expired_token');
338
+ /**
339
+ * RFC 6749 §5.2 error envelope. Surfaced with HTTP 400 (or 401 when a
340
+ * Basic auth header was presented with bad credentials).
341
+ */
342
+ export const OAuthTokenErrorResponse = Schema.Struct({
343
+ error: OAuthTokenErrorCode,
344
+ error_description: Schema.optional(Schema.String),
345
+ error_uri: Schema.optional(Schema.String),
346
+ });
347
+ // ─── OAuth /oauth/revoke (RFC 7009, ADR-089 Phase 5.1d) ────────────────────
348
+ //
349
+ // Revocation is deliberately uniform across access + refresh tokens on the
350
+ // wire — the server disambiguates by `token_type_hint` OR by probing both
351
+ // stores. The response is always 200 with an empty body per §2.2; error
352
+ // envelopes (`OAuthTokenErrorResponse`) apply only on client-auth /
353
+ // malformed-request paths.
354
+ /**
355
+ * `/oauth/revoke` request body — RFC 7009 §2.1.
356
+ */
357
+ export const OAuthRevokeRequest = Schema.Struct({
358
+ token: Schema.String,
359
+ token_type_hint: Schema.optional(Schema.Literal('access_token', 'refresh_token')),
360
+ client_id: Schema.String,
361
+ client_secret: Schema.optional(Schema.String),
362
+ });
363
+ /**
364
+ * `/oauth/revoke` success response — per §2.2 an empty body. Modelled as
365
+ * an empty struct so the SDK has a typed `void`-equivalent to await.
366
+ */
367
+ export const OAuthRevokeResponse = Schema.Struct({});
368
+ // ─── OAuth /oauth/introspect (RFC 7662, ADR-089 Phase 5.1d) ────────────────
369
+ //
370
+ // Introspection returns either the full active-token envelope OR the
371
+ // `{ active: false }` sentinel. RFC 7662 §2.2 requires `active` to be
372
+ // present on every response; all other fields are optional. The schema
373
+ // reflects that — every claim is `optional` so a strict parser cannot
374
+ // reject the inactive sentinel.
375
+ /**
376
+ * `/oauth/introspect` request body — RFC 7662 §2.1. Same auth model as
377
+ * `/oauth/revoke` (client_id + optional client_secret, or Basic header).
378
+ */
379
+ export const OAuthIntrospectRequest = Schema.Struct({
380
+ token: Schema.String,
381
+ token_type_hint: Schema.optional(Schema.Literal('access_token', 'refresh_token')),
382
+ client_id: Schema.String,
383
+ client_secret: Schema.optional(Schema.String),
384
+ });
385
+ /**
386
+ * `/oauth/introspect` response — RFC 7662 §2.2. Only `active` is required.
387
+ * Inactive responses carry ONLY `{ active: false }` per §4; populated
388
+ * responses echo the token's claims (scope, client_id, username, etc.).
389
+ */
390
+ export const OAuthIntrospectResponse = Schema.Struct({
391
+ active: Schema.Boolean,
392
+ scope: Schema.optional(Schema.String),
393
+ client_id: Schema.optional(Schema.String),
394
+ username: Schema.optional(Schema.String),
395
+ token_type: Schema.optional(Schema.Literal('Bearer')),
396
+ exp: Schema.optional(Schema.Number),
397
+ iat: Schema.optional(Schema.Number),
398
+ nbf: Schema.optional(Schema.Number),
399
+ sub: Schema.optional(Schema.String),
400
+ aud: Schema.optional(Schema.Union(Schema.String, Schema.Array(Schema.String))),
401
+ iss: Schema.optional(Schema.String),
402
+ jti: Schema.optional(Schema.String),
403
+ });
404
+ // ─── Platform Sessions (ADR-089 Phase 2b) ──────────────────────────────────
405
+ //
406
+ // Session management for the Platform plane (Console / CLI operators).
407
+ // These schemas back the `/auth/platform-sessions/*` endpoints in
408
+ // `apps/runtime` that Phase 2b migrates off the Platform bypass (previously
409
+ // served by `apps/api/.../security/sessions.ts` + `user.ts` imports of
410
+ // `@sylphx/core/features/auth/lib/sessions`).
411
+ //
412
+ // Shapes deliberately mirror the Platform-side `SecuritySession` /
413
+ // `GetSessionsResult` / `RevokeOtherSessionsResult` etc. in
414
+ // `packages/contract/src/schemas/security.ts` so the SDK swap is a
415
+ // zero-diff pass-through on the Platform side.
416
+ /**
417
+ * A single platform-plane session row as surfaced to the client.
418
+ *
419
+ * `id` is the prefixed TypeID (`sess_*`) — the BaaS route encodes the
420
+ * underlying UUID on the way out. Consumers must pass this back
421
+ * verbatim on the revoke/rename endpoints; the BaaS side accepts both
422
+ * forms via `parseIdOrError` but the canonical wire representation is
423
+ * prefixed.
424
+ */
425
+ export const PlatformSession = Schema.Struct({
426
+ id: Schema.String,
427
+ name: Schema.NullOr(Schema.String),
428
+ ipAddress: Schema.NullOr(Schema.String),
429
+ userAgent: Schema.NullOr(Schema.String),
430
+ createdAt: Schema.String,
431
+ lastActiveAt: Schema.NullOr(Schema.String),
432
+ isCurrent: Schema.Boolean,
433
+ });
434
+ /**
435
+ * `GET /auth/platform-sessions` — list envelope.
436
+ *
437
+ * Ordering: most-recently-active first (descending `lastActiveAt`).
438
+ * Matches the pre-existing Platform `GetSessionsResult` shape so the
439
+ * migration is a drop-in on the caller side.
440
+ */
441
+ export const PlatformSessionsListResponse = Schema.Struct({
442
+ sessions: Schema.Array(PlatformSession),
443
+ });
444
+ /**
445
+ * `POST /auth/platform-sessions/revoke` — revoke one session.
446
+ *
447
+ * `sessionId` accepts either the prefixed TypeID (`sess_*`, preferred)
448
+ * or the raw UUID — the BaaS side normalises via `parseIdOrError`.
449
+ */
450
+ export const PlatformSessionRevokeRequest = Schema.Struct({
451
+ sessionId: Schema.String,
452
+ });
453
+ export const PlatformSessionRevokeResponse = Schema.Struct({
454
+ success: Schema.Literal(true),
455
+ });
456
+ /**
457
+ * `POST /auth/platform-sessions/revoke-other` — revoke every session
458
+ * except the one presenting the current access token.
459
+ *
460
+ * When the token carries no `sid` claim (pure-Bearer CLI/CI flows),
461
+ * every session for the user is revoked — equivalent to `revoke-all`.
462
+ */
463
+ export const PlatformSessionRevokeOtherResponse = Schema.Struct({
464
+ revokedCount: Schema.Number,
465
+ });
466
+ /**
467
+ * `POST /auth/platform-sessions/revoke-all` — revoke every session for
468
+ * the user, including the caller's own. Used by "sign me out
469
+ * everywhere" after a password change or a compromise scare.
470
+ */
471
+ export const PlatformSessionRevokeAllResponse = Schema.Struct({
472
+ success: Schema.Literal(true),
473
+ count: Schema.Number,
474
+ });
475
+ /**
476
+ * `POST /auth/platform-sessions/rename` — update the user-visible
477
+ * device label on a session row.
478
+ */
479
+ export const PlatformSessionRenameRequest = Schema.Struct({
480
+ sessionId: Schema.String,
481
+ name: Schema.String,
482
+ });
483
+ export const PlatformSessionRenameResponse = Schema.Struct({
484
+ success: Schema.Literal(true),
485
+ });
486
+ // ─── Platform Password (ADR-089 Phase 2c) ──────────────────────────────────
487
+ //
488
+ // Password management for the Platform plane (Console / CLI operators).
489
+ // These schemas back the `/auth/platform-password/*` endpoints in
490
+ // `apps/runtime` that Phase 2c migrates off the Platform bypass (previously
491
+ // served by `apps/api/.../security/password.ts` + `user.ts` imports of
492
+ // `@sylphx/core/features/auth/lib/password`).
493
+ //
494
+ // Shapes deliberately mirror the Platform-side `PasswordStatusResult` /
495
+ // `SetPasswordInput` / `ChangePasswordInput` in the contract's
496
+ // `schemas/security.ts` + `schemas/user.ts` so the SDK swap is a
497
+ // zero-diff pass-through on the Platform side. All primitive-hash work
498
+ // (bcrypt/argon2/scrypt) lives inside the BaaS route — Platform callers
499
+ // never touch the primitives directly (ADR-089 §5 S1–S4).
500
+ /**
501
+ * `GET /auth/platform-password/status` — whether the authenticated user
502
+ * has a password set. OAuth-only users return `{ hasPassword: false }`.
503
+ */
504
+ export const PlatformPasswordStatusResponse = Schema.Struct({
505
+ hasPassword: Schema.Boolean,
506
+ });
507
+ /**
508
+ * `POST /auth/platform-password/set` — initial password for users that
509
+ * don't have one (signed up via OAuth, never set a local password).
510
+ *
511
+ * BaaS enforces the 8-char minimum and the have-i-been-pwned breach check
512
+ * server-side; Platform callers just forward the plaintext.
513
+ */
514
+ export const PlatformPasswordSetRequest = Schema.Struct({
515
+ password: Schema.String,
516
+ });
517
+ export const PlatformPasswordSetResponse = Schema.Struct({
518
+ success: Schema.Literal(true),
519
+ });
520
+ /**
521
+ * `POST /auth/platform-password/change` — change an existing password.
522
+ *
523
+ * `currentPassword` verification happens server-side via
524
+ * `verifyPasswordEffect`; a mismatch returns 401 UNAUTHORIZED. Users
525
+ * that are OAuth-only (no `passwordHash`) receive a 400 so the UI can
526
+ * redirect them to `set`.
527
+ */
528
+ export const PlatformPasswordChangeRequest = Schema.Struct({
529
+ currentPassword: Schema.String,
530
+ newPassword: Schema.String,
531
+ });
532
+ export const PlatformPasswordChangeResponse = Schema.Struct({
533
+ success: Schema.Literal(true),
534
+ });
535
+ // ─── Platform User Data (ADR-089 Phase 2d) ─────────────────────────────────
536
+ //
537
+ // GDPR operations for the Platform plane (Console / CLI operators).
538
+ // These schemas back the `/auth/platform-user/*` endpoints in
539
+ // `apps/runtime` that Phase 2d migrates off the Platform bypass
540
+ // (previously served by `apps/api/.../user.ts` reaching directly into
541
+ // `@sylphx/core/lib/auth/index` for `exportUserData` + `deleteUserData`).
542
+ //
543
+ // Shapes deliberately mirror `UserDataExport` / `DeleteAccountResult` in
544
+ // `schemas/user.ts` so the SDK swap is a zero-diff pass-through on the
545
+ // Platform side. All cascading erasure work (per-project BaaS DBs,
546
+ // Stripe cleanup, S3 blob deletion, audit anonymisation) lives inside
547
+ // the BaaS route — Platform callers never touch the underlying stores
548
+ // directly, per ADR-089 Principle 2.
549
+ /**
550
+ * `GET /auth/platform-user/export` — GDPR data-portability envelope.
551
+ *
552
+ * Deliberately permissive — the export contains per-project data that
553
+ * varies by customer provisioning (storage files, project memberships,
554
+ * subscription rows). Platform callers pass the whole record through
555
+ * to the user verbatim; the Console renders it as a JSON download.
556
+ */
557
+ export const AuthUserExportResponse = Schema.Record({
558
+ key: Schema.String,
559
+ value: Schema.Unknown,
560
+ });
561
+ /**
562
+ * `DELETE /auth/platform-user/account` — GDPR right-to-erasure request.
563
+ *
564
+ * `reason` is optional operator context (`user_request` / `admin_action`
565
+ * / `account_violation`); the BaaS route defaults to `user_request`.
566
+ * Production hardening (WebAuthn step-up challenge) lands in Phase 5.11 —
567
+ * see the handler TODO.
568
+ */
569
+ export const AuthUserDeleteRequest = Schema.Struct({
570
+ reason: Schema.optional(Schema.String),
571
+ });
572
+ /**
573
+ * `DELETE /auth/platform-user/account` response.
574
+ *
575
+ * `deletedData` is the string list of resource kinds actually erased
576
+ * (sessions, oauthAccounts, projectUsers, storageFiles, …). Mirrors the
577
+ * `UserDeletionResult.deletedData` surface from the core helper but
578
+ * flattened to a string array — the per-kind counts are audit-log
579
+ * payload only.
580
+ */
581
+ export const AuthUserDeleteResponse = Schema.Struct({
582
+ success: Schema.Boolean,
583
+ deletedData: Schema.Array(Schema.String),
584
+ });
585
+ // ─── Platform Audit Query (ADR-089 Phase 5.3b) ─────────────────────────────
586
+ //
587
+ // Scope-filtered reader for the tamper-evident audit-log chain introduced
588
+ // by Phase 5.3 foundation. Backs the `/audit/query` endpoint in
589
+ // `apps/runtime/src/server/runtime/routes/audit.ts` (renamed out of
590
+ // `/auth/platform-audit/*` by Phase Σ1 SoC rename).
591
+ //
592
+ // Scope enforcement (server-side — `audit` handler in runtime):
593
+ // - `super_admin` / `admin` → all scopes, all rows.
594
+ // - project admin → `project-ops` + `app-events` for projects
595
+ // they admin (org-level role check).
596
+ // - regular user → `project-ops` for projects they're a member
597
+ // of, OR their own `app-events`.
598
+ // - scope escalation → 403 `audit_scope_forbidden`.
599
+ //
600
+ // Cursor is opaque, HMAC-signed: base64({ lastTs, lastId }) + sig. Clients
601
+ // MUST treat it as a black box — the shape is NOT a wire contract and can
602
+ // change without a version bump.
603
+ /** Scope taxonomy — matches `audit_logs.scope` CHECK on the DB side. */
604
+ export const AuditScopeLiteral = Schema.Literal('platform-ops', 'project-ops', 'app-events');
605
+ /**
606
+ * `GET /audit/query` — filter envelope. All fields optional
607
+ * except `limit` (default 100, max 500). `from` / `to` are ISO-8601 UTC;
608
+ * `cursor` paginates; `scope` narrows to one plane (caller role must
609
+ * include it — see scope enforcement notes above).
610
+ */
611
+ export const PlatformAuditQueryRequest = Schema.Struct({
612
+ scope: Schema.optional(AuditScopeLiteral),
613
+ actor: Schema.optional(Schema.String),
614
+ resourceType: Schema.optional(Schema.String),
615
+ resourceId: Schema.optional(Schema.String),
616
+ action: Schema.optional(Schema.String),
617
+ from: Schema.optional(Schema.String),
618
+ to: Schema.optional(Schema.String),
619
+ cursor: Schema.optional(Schema.String),
620
+ limit: Schema.optional(Schema.Number),
621
+ });
622
+ /** One audit row as surfaced to the query client. Hashes are hex-encoded. */
623
+ export const PlatformAuditEvent = Schema.Struct({
624
+ id: Schema.String,
625
+ ts: Schema.String,
626
+ scope: AuditScopeLiteral,
627
+ actor: Schema.NullOr(Schema.String),
628
+ user: Schema.NullOr(Schema.String),
629
+ orgId: Schema.NullOr(Schema.String),
630
+ projectId: Schema.NullOr(Schema.String),
631
+ resourceType: Schema.String,
632
+ resourceId: Schema.NullOr(Schema.String),
633
+ action: Schema.String,
634
+ metadata: Schema.NullOr(Schema.Record({ key: Schema.String, value: Schema.Unknown })),
635
+ prevHashHex: Schema.NullOr(Schema.String),
636
+ rowHashHex: Schema.NullOr(Schema.String),
637
+ });
638
+ /**
639
+ * Response envelope — paginated events + chain-verification flag.
640
+ *
641
+ * `chainVerified` is `true` when every returned row's `prev_hash` equals
642
+ * the preceding row's `row_hash` (rows returned in chain order). It MAY
643
+ * be `false` when a range query skips a row (rare; not corruption) —
644
+ * the field is advisory for the client, the ground-truth verifier is
645
+ * `scripts/check-audit-hash-chain.ts --nightly`.
646
+ */
647
+ export const PlatformAuditQueryResponse = Schema.Struct({
648
+ events: Schema.Array(PlatformAuditEvent),
649
+ nextCursor: Schema.NullOr(Schema.String),
650
+ chainVerified: Schema.Boolean,
651
+ });
652
+ // ─── Platform Rate-Limit API (ADR-089 Phase 5.2) ───────────────────────────
653
+ //
654
+ // BaaS surface that lets operators inspect live rate-limit counter state and
655
+ // manage per-(scope, scope_id, namespace) strategy overrides without a code
656
+ // deploy. Enforcement reads the override table through the resolver with a
657
+ // 60s in-process cache; upserts/deletes invalidate the cache in-band and
658
+ // the next read sees the new config. Missing overrides fall through to the
659
+ // hard-coded `RateLimitPresets` defaults in `@sylphx/core`.
660
+ //
661
+ // Scope enforcement (server-side — `authPlatformRateLimits` handler):
662
+ // - super_admin / admin → all scopes.
663
+ // - project admin → `project` + their project_id only.
664
+ // - regular user → `user` + their own user id only.
665
+ // - scope escalation → 403 `rate_limit_scope_forbidden`.
666
+ /** Scope taxonomy — mirrors `RATE_LIMIT_SCOPES` in the Drizzle schema. */
667
+ export const RateLimitScopeLiteral = Schema.Literal('global', 'project', 'user');
668
+ /** Strategy taxonomy — mirrors `RATE_LIMIT_STRATEGIES`. */
669
+ export const RateLimitStrategyLiteral = Schema.Literal('token-bucket', 'sliding-window', 'fixed-window');
670
+ const NamespaceString = Schema.String.pipe(Schema.pattern(/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/));
671
+ export const PlatformRateLimitStatusRequest = Schema.Struct({
672
+ scope: Schema.optional(RateLimitScopeLiteral),
673
+ scope_id: Schema.optional(Schema.String),
674
+ namespace: Schema.optional(NamespaceString),
675
+ });
676
+ export const PlatformRateLimitStatusRow = Schema.Struct({
677
+ namespace: Schema.String,
678
+ scope: RateLimitScopeLiteral,
679
+ scopeId: Schema.NullOr(Schema.String),
680
+ strategy: RateLimitStrategyLiteral,
681
+ limit: Schema.Number,
682
+ windowSeconds: Schema.Number,
683
+ burst: Schema.NullOr(Schema.Number),
684
+ source: Schema.Literal('default', 'global', 'project', 'user'),
685
+ });
686
+ export const PlatformRateLimitStatusResponse = Schema.Struct({
687
+ rows: Schema.Array(PlatformRateLimitStatusRow),
688
+ });
689
+ export const PlatformRateLimitStrategiesListRequest = Schema.Struct({
690
+ scope: Schema.optional(RateLimitScopeLiteral),
691
+ scope_id: Schema.optional(Schema.String),
692
+ });
693
+ export const PlatformRateLimitStrategyRow = Schema.Struct({
694
+ id: Schema.String,
695
+ scope: RateLimitScopeLiteral,
696
+ scopeId: Schema.NullOr(Schema.String),
697
+ namespace: Schema.String,
698
+ strategy: RateLimitStrategyLiteral,
699
+ limitCount: Schema.Number,
700
+ windowSeconds: Schema.Number,
701
+ burstCount: Schema.NullOr(Schema.Number),
702
+ updatedAt: Schema.String,
703
+ updatedBy: Schema.NullOr(Schema.String),
704
+ });
705
+ export const PlatformRateLimitStrategiesListResponse = Schema.Struct({
706
+ strategies: Schema.Array(PlatformRateLimitStrategyRow),
707
+ });
708
+ export const PlatformRateLimitNamespaceParams = Schema.Struct({
709
+ namespace: NamespaceString,
710
+ });
711
+ export const PlatformRateLimitStrategyUpsertRequest = Schema.Struct({
712
+ scope: RateLimitScopeLiteral,
713
+ scope_id: Schema.optional(Schema.String),
714
+ strategy: RateLimitStrategyLiteral,
715
+ limit: Schema.Number,
716
+ windowSeconds: Schema.Number,
717
+ burst: Schema.optional(Schema.NullOr(Schema.Number)),
718
+ });
719
+ export const PlatformRateLimitStrategyUpsertResponse = Schema.Struct({
720
+ strategy: PlatformRateLimitStrategyRow,
721
+ });
722
+ export const PlatformRateLimitStrategyDeleteRequest = Schema.Struct({
723
+ scope: RateLimitScopeLiteral,
724
+ scope_id: Schema.optional(Schema.String),
725
+ });
726
+ export const PlatformRateLimitStrategyDeleteResponse = Schema.Struct({
727
+ deleted: Schema.Boolean,
728
+ });
729
+ // ============================================================================
730
+ // Passkey-Primary Signup — ADR-089 Phase 5.11 / P14 + S26
731
+ // ============================================================================
732
+ /**
733
+ * Passkey signup-challenge request. `orgId` binds the ceremony to an org
734
+ * for policy enforcement (device-bound + AAGUID allow-list). Omit for
735
+ * personal signups.
736
+ */
737
+ export const PasskeySignupChallengeRequest = Schema.Struct({
738
+ email: Schema.String,
739
+ displayName: Schema.optional(Schema.String),
740
+ orgId: Schema.optional(Schema.String),
741
+ });
742
+ /**
743
+ * WebAuthn registration options + platform-issued `userHandle`. Caller
744
+ * feeds these to `navigator.credentials.create({ publicKey: options })`
745
+ * and echoes `userHandle` back to /signup-verify.
746
+ */
747
+ export const PasskeySignupChallengeResponse = Schema.Struct({
748
+ challenge: Schema.String,
749
+ rp: Schema.Struct({
750
+ name: Schema.String,
751
+ id: Schema.optional(Schema.String),
752
+ }),
753
+ user: Schema.Struct({
754
+ id: Schema.String,
755
+ name: Schema.String,
756
+ displayName: Schema.String,
757
+ }),
758
+ pubKeyCredParams: Schema.Array(Schema.Struct({ type: Schema.Literal('public-key'), alg: Schema.Number })),
759
+ timeout: Schema.optional(Schema.Number),
760
+ attestation: Schema.optional(Schema.String),
761
+ authenticatorSelection: Schema.optional(Schema.Struct({
762
+ authenticatorAttachment: Schema.optional(Schema.Literal('platform', 'cross-platform')),
763
+ residentKey: Schema.optional(Schema.Literal('discouraged', 'preferred', 'required')),
764
+ userVerification: Schema.optional(Schema.Literal('discouraged', 'preferred', 'required')),
765
+ })),
766
+ userHandle: Schema.String,
767
+ });
768
+ export const PasskeySignupVerifyRequest = Schema.Struct({
769
+ email: Schema.String,
770
+ userHandle: Schema.String,
771
+ credential: Schema.Unknown, // RegistrationResponseJSON — shape varies by browser
772
+ deviceName: Schema.optional(Schema.String),
773
+ });
774
+ export const PasskeySignupVerifyResponse = Schema.Struct({
775
+ accessToken: Schema.String,
776
+ refreshToken: Schema.String,
777
+ expiresIn: Schema.Number,
778
+ user: Schema.Struct({
779
+ id: Schema.String,
780
+ email: Schema.String,
781
+ name: Schema.NullOr(Schema.String),
782
+ role: Schema.String,
783
+ }),
784
+ passkey: Schema.Struct({
785
+ id: Schema.String,
786
+ authenticatorAttachment: Schema.NullOr(Schema.Literal('platform', 'cross-platform')),
787
+ backupState: Schema.NullOr(Schema.Boolean),
788
+ aaguid: Schema.NullOr(Schema.String),
789
+ }),
790
+ });
791
+ export const PasskeyPolicyViolationResponse = Schema.Struct({
792
+ error: Schema.Literal('policy_violation'),
793
+ code: Schema.Literal('device_bound_required', 'aaguid_not_allowed'),
794
+ message: Schema.String,
795
+ });
796
+ export const PrimaryAuthMethodResponse = Schema.Struct({
797
+ userId: Schema.String,
798
+ primaryAuthMethod: Schema.Literal('passkey', 'password'),
799
+ });
800
+ // ============================================================================
801
+ // Org Auth Policy — ADR-089 Phase 5.11 / S26
802
+ // ============================================================================
803
+ export const OrgAuthPolicy = Schema.Struct({
804
+ orgId: Schema.String,
805
+ requirePasskeyForSignup: Schema.Boolean,
806
+ requireDeviceBoundPasskeys: Schema.Boolean,
807
+ allowedAaguids: Schema.Array(Schema.String),
808
+ updatedAt: Schema.String,
809
+ updatedBy: Schema.NullOr(Schema.String),
810
+ });
811
+ export const OrgAuthPolicyUpdateRequest = Schema.Struct({
812
+ requirePasskeyForSignup: Schema.optional(Schema.Boolean),
813
+ requireDeviceBoundPasskeys: Schema.optional(Schema.Boolean),
814
+ allowedAaguids: Schema.optional(Schema.Array(Schema.String)),
815
+ });