@intlayer/backend-contract 0.0.0-stage → 9.7.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 (252) hide show
  1. package/dist/cjs/ai.cjs +267 -0
  2. package/dist/cjs/ai.cjs.map +1 -0
  3. package/dist/cjs/analytics.cjs +175 -0
  4. package/dist/cjs/analytics.cjs.map +1 -0
  5. package/dist/cjs/asset.cjs +88 -0
  6. package/dist/cjs/asset.cjs.map +1 -0
  7. package/dist/cjs/blogComment.cjs +98 -0
  8. package/dist/cjs/blogComment.cjs.map +1 -0
  9. package/dist/cjs/cliSessionToken.cjs +40 -0
  10. package/dist/cjs/cliSessionToken.cjs.map +1 -0
  11. package/dist/cjs/common.cjs +42 -0
  12. package/dist/cjs/common.cjs.map +1 -0
  13. package/dist/cjs/defineRoute.cjs +26 -0
  14. package/dist/cjs/defineRoute.cjs.map +1 -0
  15. package/dist/cjs/demo.cjs +22 -0
  16. package/dist/cjs/demo.cjs.map +1 -0
  17. package/dist/cjs/dictionary.cjs +168 -0
  18. package/dist/cjs/dictionary.cjs.map +1 -0
  19. package/dist/cjs/environment.cjs +91 -0
  20. package/dist/cjs/environment.cjs.map +1 -0
  21. package/dist/cjs/eventListener.cjs +19 -0
  22. package/dist/cjs/eventListener.cjs.map +1 -0
  23. package/dist/cjs/gitProviders.cjs +361 -0
  24. package/dist/cjs/gitProviders.cjs.map +1 -0
  25. package/dist/cjs/newsletter.cjs +50 -0
  26. package/dist/cjs/newsletter.cjs.map +1 -0
  27. package/dist/cjs/oAuth2.cjs +62 -0
  28. package/dist/cjs/oAuth2.cjs.map +1 -0
  29. package/dist/cjs/organization.cjs +226 -0
  30. package/dist/cjs/organization.cjs.map +1 -0
  31. package/dist/cjs/project.cjs +401 -0
  32. package/dist/cjs/project.cjs.map +1 -0
  33. package/dist/cjs/public.cjs +60 -0
  34. package/dist/cjs/public.cjs.map +1 -0
  35. package/dist/cjs/responseData.cjs +33 -0
  36. package/dist/cjs/responseData.cjs.map +1 -0
  37. package/dist/cjs/reviewer.cjs +401 -0
  38. package/dist/cjs/reviewer.cjs.map +1 -0
  39. package/dist/cjs/scan.cjs +235 -0
  40. package/dist/cjs/scan.cjs.map +1 -0
  41. package/dist/cjs/search.cjs +40 -0
  42. package/dist/cjs/search.cjs.map +1 -0
  43. package/dist/cjs/session.cjs +56 -0
  44. package/dist/cjs/session.cjs.map +1 -0
  45. package/dist/cjs/showcaseProject.cjs +185 -0
  46. package/dist/cjs/showcaseProject.cjs.map +1 -0
  47. package/dist/cjs/stripe.cjs +388 -0
  48. package/dist/cjs/stripe.cjs.map +1 -0
  49. package/dist/cjs/tag.cjs +83 -0
  50. package/dist/cjs/tag.cjs.map +1 -0
  51. package/dist/cjs/translation.cjs +54 -0
  52. package/dist/cjs/translation.cjs.map +1 -0
  53. package/dist/cjs/user.cjs +153 -0
  54. package/dist/cjs/user.cjs.map +1 -0
  55. package/dist/esm/ai.mjs +261 -0
  56. package/dist/esm/ai.mjs.map +1 -0
  57. package/dist/esm/analytics.mjs +168 -0
  58. package/dist/esm/analytics.mjs.map +1 -0
  59. package/dist/esm/asset.mjs +86 -0
  60. package/dist/esm/asset.mjs.map +1 -0
  61. package/dist/esm/blogComment.mjs +94 -0
  62. package/dist/esm/blogComment.mjs.map +1 -0
  63. package/dist/esm/cliSessionToken.mjs +39 -0
  64. package/dist/esm/cliSessionToken.mjs.map +1 -0
  65. package/dist/esm/common.mjs +35 -0
  66. package/dist/esm/common.mjs.map +1 -0
  67. package/dist/esm/defineRoute.mjs +23 -0
  68. package/dist/esm/defineRoute.mjs.map +1 -0
  69. package/dist/esm/demo.mjs +21 -0
  70. package/dist/esm/demo.mjs.map +1 -0
  71. package/dist/esm/dictionary.mjs +163 -0
  72. package/dist/esm/dictionary.mjs.map +1 -0
  73. package/dist/esm/environment.mjs +90 -0
  74. package/dist/esm/environment.mjs.map +1 -0
  75. package/dist/esm/eventListener.mjs +18 -0
  76. package/dist/esm/eventListener.mjs.map +1 -0
  77. package/dist/esm/gitProviders.mjs +352 -0
  78. package/dist/esm/gitProviders.mjs.map +1 -0
  79. package/dist/esm/newsletter.mjs +49 -0
  80. package/dist/esm/newsletter.mjs.map +1 -0
  81. package/dist/esm/oAuth2.mjs +60 -0
  82. package/dist/esm/oAuth2.mjs.map +1 -0
  83. package/dist/esm/organization.mjs +219 -0
  84. package/dist/esm/organization.mjs.map +1 -0
  85. package/dist/esm/project.mjs +387 -0
  86. package/dist/esm/project.mjs.map +1 -0
  87. package/dist/esm/public.mjs +58 -0
  88. package/dist/esm/public.mjs.map +1 -0
  89. package/dist/esm/responseData.mjs +30 -0
  90. package/dist/esm/responseData.mjs.map +1 -0
  91. package/dist/esm/reviewer.mjs +390 -0
  92. package/dist/esm/reviewer.mjs.map +1 -0
  93. package/dist/esm/scan.mjs +225 -0
  94. package/dist/esm/scan.mjs.map +1 -0
  95. package/dist/esm/search.mjs +38 -0
  96. package/dist/esm/search.mjs.map +1 -0
  97. package/dist/esm/session.mjs +53 -0
  98. package/dist/esm/session.mjs.map +1 -0
  99. package/dist/esm/showcaseProject.mjs +182 -0
  100. package/dist/esm/showcaseProject.mjs.map +1 -0
  101. package/dist/esm/stripe.mjs +379 -0
  102. package/dist/esm/stripe.mjs.map +1 -0
  103. package/dist/esm/tag.mjs +81 -0
  104. package/dist/esm/tag.mjs.map +1 -0
  105. package/dist/esm/translation.mjs +53 -0
  106. package/dist/esm/translation.mjs.map +1 -0
  107. package/dist/esm/user.mjs +149 -0
  108. package/dist/esm/user.mjs.map +1 -0
  109. package/dist/types/@intlayer/config/dist/types/defaultValues/dictionary.d.ts +1 -0
  110. package/dist/types/@intlayer/config/dist/types/defaultValues/index.d.ts +3 -0
  111. package/dist/types/@intlayer/config/dist/types/defaultValues/internationalization.d.ts +2 -0
  112. package/dist/types/@intlayer/config/dist/types/defaultValues/routing.d.ts +1 -0
  113. package/dist/types/@intlayer/core/dist/types/dictionaryManipulator/plainDynamicLoader.d.ts +2 -0
  114. package/dist/types/@intlayer/core/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts +2 -0
  115. package/dist/types/@intlayer/core/dist/types/formatters/compact.d.ts +1 -0
  116. package/dist/types/@intlayer/core/dist/types/formatters/currency.d.ts +1 -0
  117. package/dist/types/@intlayer/core/dist/types/formatters/date.d.ts +1 -0
  118. package/dist/types/@intlayer/core/dist/types/formatters/index.d.ts +9 -0
  119. package/dist/types/@intlayer/core/dist/types/formatters/list.d.ts +1 -0
  120. package/dist/types/@intlayer/core/dist/types/formatters/number.d.ts +1 -0
  121. package/dist/types/@intlayer/core/dist/types/formatters/percentage.d.ts +1 -0
  122. package/dist/types/@intlayer/core/dist/types/formatters/relativeTime.d.ts +1 -0
  123. package/dist/types/@intlayer/core/dist/types/formatters/units.d.ts +1 -0
  124. package/dist/types/@intlayer/core/dist/types/interpreter/dictionaryTransformCache.d.ts +4 -0
  125. package/dist/types/@intlayer/core/dist/types/interpreter/getCondition.d.ts +2 -0
  126. package/dist/types/@intlayer/core/dist/types/interpreter/getContent/deepTransform.d.ts +1 -0
  127. package/dist/types/@intlayer/core/dist/types/interpreter/getContent/getContent.d.ts +3 -0
  128. package/dist/types/@intlayer/core/dist/types/interpreter/getContent/index.d.ts +3 -0
  129. package/dist/types/@intlayer/core/dist/types/interpreter/getContent/plugins.d.ts +7 -0
  130. package/dist/types/@intlayer/core/dist/types/interpreter/getDictionary.d.ts +4 -0
  131. package/dist/types/@intlayer/core/dist/types/interpreter/getDictionaryAsync.d.ts +6 -0
  132. package/dist/types/@intlayer/core/dist/types/interpreter/getEnumeration.d.ts +2 -0
  133. package/dist/types/@intlayer/core/dist/types/interpreter/getGender.d.ts +2 -0
  134. package/dist/types/@intlayer/core/dist/types/interpreter/getInsertion.d.ts +2 -0
  135. package/dist/types/@intlayer/core/dist/types/interpreter/getIntlayer.d.ts +4 -0
  136. package/dist/types/@intlayer/core/dist/types/interpreter/getIntlayerAsync.d.ts +4 -0
  137. package/dist/types/@intlayer/core/dist/types/interpreter/getNesting.d.ts +6 -0
  138. package/dist/types/@intlayer/core/dist/types/interpreter/getPlural.d.ts +3 -0
  139. package/dist/types/@intlayer/core/dist/types/interpreter/getSelect.d.ts +2 -0
  140. package/dist/types/@intlayer/core/dist/types/interpreter/getTranslation.d.ts +1 -0
  141. package/dist/types/@intlayer/core/dist/types/interpreter/index.d.ts +19 -0
  142. package/dist/types/@intlayer/core/dist/types/interpreter/interpolableNode.d.ts +2 -0
  143. package/dist/types/@intlayer/core/dist/types/interpreter/resolveInterpreterLocale.d.ts +1 -0
  144. package/dist/types/@intlayer/core/dist/types/localization/comparePaths.d.ts +1 -0
  145. package/dist/types/@intlayer/core/dist/types/localization/domainUtils.d.ts +2 -0
  146. package/dist/types/@intlayer/core/dist/types/localization/generateSitemap.d.ts +2 -0
  147. package/dist/types/@intlayer/core/dist/types/localization/getBrowserLocale.d.ts +1 -0
  148. package/dist/types/@intlayer/core/dist/types/localization/getCanonicalPath.d.ts +2 -0
  149. package/dist/types/@intlayer/core/dist/types/localization/getHTMLTextDir.d.ts +1 -0
  150. package/dist/types/@intlayer/core/dist/types/localization/getLocale.d.ts +1 -0
  151. package/dist/types/@intlayer/core/dist/types/localization/getLocaleFromPath.d.ts +2 -0
  152. package/dist/types/@intlayer/core/dist/types/localization/getLocaleFromRequest.d.ts +1 -0
  153. package/dist/types/@intlayer/core/dist/types/localization/getLocaleLang.d.ts +1 -0
  154. package/dist/types/@intlayer/core/dist/types/localization/getLocaleName.d.ts +1 -0
  155. package/dist/types/@intlayer/core/dist/types/localization/getLocalizedPath.d.ts +2 -0
  156. package/dist/types/@intlayer/core/dist/types/localization/getLocalizedUrl.d.ts +2 -0
  157. package/dist/types/@intlayer/core/dist/types/localization/getMultilingualUrls.d.ts +2 -0
  158. package/dist/types/@intlayer/core/dist/types/localization/getPathWithoutLocale.d.ts +1 -0
  159. package/dist/types/@intlayer/core/dist/types/localization/getPrefix.d.ts +2 -0
  160. package/dist/types/@intlayer/core/dist/types/localization/index.d.ts +23 -0
  161. package/dist/types/@intlayer/core/dist/types/localization/localeDetector.d.ts +2 -0
  162. package/dist/types/@intlayer/core/dist/types/localization/localeMapper.d.ts +1 -0
  163. package/dist/types/@intlayer/core/dist/types/localization/localeResolver.d.ts +1 -0
  164. package/dist/types/@intlayer/core/dist/types/localization/resolveBrowserLocale.d.ts +2 -0
  165. package/dist/types/@intlayer/core/dist/types/localization/rewriteMatch.d.ts +1 -0
  166. package/dist/types/@intlayer/core/dist/types/localization/rewriteUtils.d.ts +2 -0
  167. package/dist/types/@intlayer/core/dist/types/localization/validatePrefix.d.ts +2 -0
  168. package/dist/types/@intlayer/core/dist/types/markdown/index.d.ts +2 -0
  169. package/dist/types/@intlayer/core/dist/types/transpiler/condition/condition.d.ts +1 -0
  170. package/dist/types/@intlayer/core/dist/types/transpiler/condition/index.d.ts +1 -0
  171. package/dist/types/@intlayer/core/dist/types/transpiler/enumeration/enumeration.d.ts +1 -0
  172. package/dist/types/@intlayer/core/dist/types/transpiler/enumeration/index.d.ts +1 -0
  173. package/dist/types/@intlayer/core/dist/types/transpiler/file/file.d.ts +1 -0
  174. package/dist/types/@intlayer/core/dist/types/transpiler/file/index.d.ts +1 -0
  175. package/dist/types/@intlayer/core/dist/types/transpiler/gender/gender.d.ts +1 -0
  176. package/dist/types/@intlayer/core/dist/types/transpiler/gender/index.d.ts +1 -0
  177. package/dist/types/@intlayer/core/dist/types/transpiler/html/html.d.ts +1 -0
  178. package/dist/types/@intlayer/core/dist/types/transpiler/html/index.d.ts +1 -0
  179. package/dist/types/@intlayer/core/dist/types/transpiler/index.d.ts +22 -0
  180. package/dist/types/@intlayer/core/dist/types/transpiler/insertion/index.d.ts +1 -0
  181. package/dist/types/@intlayer/core/dist/types/transpiler/insertion/insertion.d.ts +1 -0
  182. package/dist/types/@intlayer/core/dist/types/transpiler/markdown/index.d.ts +1 -0
  183. package/dist/types/@intlayer/core/dist/types/transpiler/markdown/markdown.d.ts +1 -0
  184. package/dist/types/@intlayer/core/dist/types/transpiler/nesting/index.d.ts +1 -0
  185. package/dist/types/@intlayer/core/dist/types/transpiler/nesting/nesting.d.ts +4 -0
  186. package/dist/types/@intlayer/core/dist/types/transpiler/plural/index.d.ts +1 -0
  187. package/dist/types/@intlayer/core/dist/types/transpiler/plural/plural.d.ts +1 -0
  188. package/dist/types/@intlayer/core/dist/types/transpiler/select/index.d.ts +1 -0
  189. package/dist/types/@intlayer/core/dist/types/transpiler/select/select.d.ts +1 -0
  190. package/dist/types/@intlayer/core/dist/types/transpiler/translation/index.d.ts +1 -0
  191. package/dist/types/@intlayer/core/dist/types/transpiler/translation/translation.d.ts +2 -0
  192. package/dist/types/@intlayer/core/dist/types/utils/index.d.ts +3 -0
  193. package/dist/types/@intlayer/core/dist/types/utils/intl.d.ts +1 -0
  194. package/dist/types/@intlayer/core/dist/types/utils/isSameKeyPath.d.ts +1 -0
  195. package/dist/types/@intlayer/core/dist/types/utils/localeStorage.d.ts +2 -0
  196. package/dist/types/ai.d.ts +549 -0
  197. package/dist/types/ai.d.ts.map +1 -0
  198. package/dist/types/analytics.d.ts +378 -0
  199. package/dist/types/analytics.d.ts.map +1 -0
  200. package/dist/types/asset.d.ts +207 -0
  201. package/dist/types/asset.d.ts.map +1 -0
  202. package/dist/types/blogComment.d.ts +241 -0
  203. package/dist/types/blogComment.d.ts.map +1 -0
  204. package/dist/types/cliSessionToken.d.ts +264 -0
  205. package/dist/types/cliSessionToken.d.ts.map +1 -0
  206. package/dist/types/common.d.ts +32 -0
  207. package/dist/types/common.d.ts.map +1 -0
  208. package/dist/types/defineRoute.d.ts +57 -0
  209. package/dist/types/defineRoute.d.ts.map +1 -0
  210. package/dist/types/demo.d.ts +21 -0
  211. package/dist/types/demo.d.ts.map +1 -0
  212. package/dist/types/dictionary.d.ts +360 -0
  213. package/dist/types/dictionary.d.ts.map +1 -0
  214. package/dist/types/environment.d.ts +285 -0
  215. package/dist/types/environment.d.ts.map +1 -0
  216. package/dist/types/eventListener.d.ts +17 -0
  217. package/dist/types/eventListener.d.ts.map +1 -0
  218. package/dist/types/gitProviders.d.ts +807 -0
  219. package/dist/types/gitProviders.d.ts.map +1 -0
  220. package/dist/types/intlayer/dist/types/index.d.ts +13 -0
  221. package/dist/types/newsletter.d.ts +165 -0
  222. package/dist/types/newsletter.d.ts.map +1 -0
  223. package/dist/types/oAuth2.d.ts +482 -0
  224. package/dist/types/oAuth2.d.ts.map +1 -0
  225. package/dist/types/organization.d.ts +1069 -0
  226. package/dist/types/organization.d.ts.map +1 -0
  227. package/dist/types/project.d.ts +1735 -0
  228. package/dist/types/project.d.ts.map +1 -0
  229. package/dist/types/public.d.ts +109 -0
  230. package/dist/types/public.d.ts.map +1 -0
  231. package/dist/types/responseData.d.ts +68 -0
  232. package/dist/types/responseData.d.ts.map +1 -0
  233. package/dist/types/reviewer.d.ts +1239 -0
  234. package/dist/types/reviewer.d.ts.map +1 -0
  235. package/dist/types/scan.d.ts +625 -0
  236. package/dist/types/scan.d.ts.map +1 -0
  237. package/dist/types/search.d.ts +55 -0
  238. package/dist/types/search.d.ts.map +1 -0
  239. package/dist/types/session.d.ts +286 -0
  240. package/dist/types/session.d.ts.map +1 -0
  241. package/dist/types/showcaseProject.d.ts +550 -0
  242. package/dist/types/showcaseProject.d.ts.map +1 -0
  243. package/dist/types/stripe.d.ts +1219 -0
  244. package/dist/types/stripe.d.ts.map +1 -0
  245. package/dist/types/tag.d.ts +193 -0
  246. package/dist/types/tag.d.ts.map +1 -0
  247. package/dist/types/translation.d.ts +162 -0
  248. package/dist/types/translation.d.ts.map +1 -0
  249. package/dist/types/user.d.ts +447 -0
  250. package/dist/types/user.d.ts.map +1 -0
  251. package/package.json +300 -4
  252. package/README.md +0 -3
@@ -0,0 +1,226 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_common = require('./common.cjs');
3
+ const require_defineRoute = require('./defineRoute.cjs');
4
+ const require_responseData = require('./responseData.cjs');
5
+ let zod_mini = require("zod/mini");
6
+
7
+ //#region src/organization.ts
8
+ /** Billing plan tiers. */
9
+ const planTypeSchema = zod_mini.z.enum([
10
+ "FREE",
11
+ "PREMIUM",
12
+ "ENTERPRISE",
13
+ "LIFETIME"
14
+ ]);
15
+ /** Subscription of an organization. Only Stripe webhooks change it. */
16
+ const planSchema = zod_mini.z.looseObject({
17
+ id: zod_mini.z.string(),
18
+ type: planTypeSchema,
19
+ creatorId: zod_mini.z.optional(zod_mini.z.string()),
20
+ subscriptionId: zod_mini.z.optional(zod_mini.z.string()),
21
+ customerId: zod_mini.z.optional(zod_mini.z.string()),
22
+ priceId: zod_mini.z.optional(zod_mini.z.string()),
23
+ status: zod_mini.z.optional(zod_mini.z.enum([
24
+ "active",
25
+ "canceled",
26
+ "past_due",
27
+ "unpaid",
28
+ "incomplete",
29
+ "incomplete_expired",
30
+ "paused",
31
+ "trialing"
32
+ ])),
33
+ period: zod_mini.z.optional(zod_mini.z.enum([
34
+ "MONTHLY",
35
+ "YEARLY",
36
+ "LIFETIME"
37
+ ])),
38
+ createdAt: require_common.dateTimeSchema,
39
+ updatedAt: require_common.dateTimeSchema
40
+ });
41
+ /** Transactional email providers of a per-organization mailer. */
42
+ const mailerProviderSchema = zod_mini.z.enum(["resend", "smtp"]);
43
+ /**
44
+ * Per-organization mailer as returned by the API: secrets are never sent,
45
+ * the `has*` flags tell whether one is stored.
46
+ */
47
+ const organizationMailerConfigSchema = zod_mini.z.object({
48
+ isActive: zod_mini.z.boolean(),
49
+ provider: mailerProviderSchema,
50
+ fromName: zod_mini.z.optional(zod_mini.z.string()),
51
+ fromEmail: zod_mini.z.optional(zod_mini.z.string()),
52
+ resend: zod_mini.z.optional(zod_mini.z.object({ hasApiKey: zod_mini.z.optional(zod_mini.z.boolean()) })),
53
+ smtp: zod_mini.z.optional(zod_mini.z.object({
54
+ host: zod_mini.z.optional(zod_mini.z.string()),
55
+ port: zod_mini.z.optional(zod_mini.z.number()),
56
+ secure: zod_mini.z.optional(zod_mini.z.boolean()),
57
+ user: zod_mini.z.optional(zod_mini.z.string()),
58
+ hasPassword: zod_mini.z.optional(zod_mini.z.boolean())
59
+ }))
60
+ });
61
+ /**
62
+ * Mailer update payload. Secrets are plaintext and optional: an omitted or
63
+ * empty secret keeps the stored one.
64
+ */
65
+ const organizationMailerConfigInputSchema = zod_mini.z.object({
66
+ isActive: zod_mini.z.boolean(),
67
+ provider: mailerProviderSchema,
68
+ fromName: zod_mini.z.optional(zod_mini.z.string()),
69
+ fromEmail: zod_mini.z.optional(zod_mini.z.string()),
70
+ resend: zod_mini.z.optional(zod_mini.z.object({ apiKey: zod_mini.z.optional(zod_mini.z.string()) })),
71
+ smtp: zod_mini.z.optional(zod_mini.z.object({
72
+ host: zod_mini.z.optional(zod_mini.z.string()),
73
+ port: zod_mini.z.optional(zod_mini.z.number()),
74
+ secure: zod_mini.z.optional(zod_mini.z.boolean()),
75
+ user: zod_mini.z.optional(zod_mini.z.string()),
76
+ password: zod_mini.z.optional(zod_mini.z.string())
77
+ }))
78
+ });
79
+ /** Organization as returned by the API. */
80
+ const organizationSchema = zod_mini.z.looseObject({
81
+ id: zod_mini.z.string(),
82
+ name: zod_mini.z.string(),
83
+ membersIds: zod_mini.z.array(zod_mini.z.string()),
84
+ adminsIds: zod_mini.z.array(zod_mini.z.string()),
85
+ /** Whether SSO is configured (managed by better-auth). */
86
+ ssoEnabled: zod_mini.z.boolean(),
87
+ /** Primary domain, used for SSO provider lookup. */
88
+ domain: zod_mini.z.string(),
89
+ mailerConfig: zod_mini.z.optional(organizationMailerConfigSchema),
90
+ creatorId: zod_mini.z.string(),
91
+ plan: zod_mini.z.optional(planSchema),
92
+ createdAt: require_common.dateTimeSchema,
93
+ updatedAt: require_common.dateTimeSchema
94
+ });
95
+ const organizationIdParamsSchema = zod_mini.z.object({ organizationId: require_common.objectIdSchema });
96
+ /** Members and admins of an organization, replaced as a whole. */
97
+ const organizationMembersBodySchema = zod_mini.z.object({
98
+ membersIds: zod_mini.z.optional(zod_mini.z.array(require_common.objectIdSchema)),
99
+ adminsIds: zod_mini.z.optional(zod_mini.z.array(require_common.objectIdSchema))
100
+ });
101
+ const organizationResponseSchema = require_responseData.responseDataSchema(organizationSchema);
102
+ /** REST contract of the `/api/organization` routes. */
103
+ const organizationContract = require_defineRoute.defineRouteGroup({
104
+ prefix: "/api/organization",
105
+ tag: "Organization",
106
+ routes: {
107
+ getOrganizations: require_defineRoute.defineRoute({
108
+ method: "GET",
109
+ path: "/",
110
+ summary: "List the organizations of the signed-in user",
111
+ schemas: {
112
+ querystring: zod_mini.z.looseObject({
113
+ ...require_common.paginationQueryShape,
114
+ ids: zod_mini.z.optional(require_common.repeatableQueryValueSchema),
115
+ name: zod_mini.z.optional(zod_mini.z.string()),
116
+ search: zod_mini.z.optional(zod_mini.z.string()),
117
+ membersIds: zod_mini.z.optional(require_common.repeatableQueryValueSchema),
118
+ sortBy: zod_mini.z.optional(zod_mini.z.string()),
119
+ sortOrder: zod_mini.z.optional(zod_mini.z.string()),
120
+ /** Admin only: list every organization. */
121
+ fetchAll: zod_mini.z.optional(zod_mini.z.enum(["true", "false"]))
122
+ }),
123
+ response: { 200: require_responseData.paginatedResponseSchema(organizationSchema) }
124
+ }
125
+ }),
126
+ addOrganization: require_defineRoute.defineRoute({
127
+ method: "POST",
128
+ path: "/",
129
+ summary: "Create an organization",
130
+ schemas: {
131
+ body: zod_mini.z.object({ name: zod_mini.z.string().check(zod_mini.z.minLength(1)) }),
132
+ response: { 200: organizationResponseSchema }
133
+ }
134
+ }),
135
+ updateOrganization: require_defineRoute.defineRoute({
136
+ method: "PUT",
137
+ path: "/",
138
+ summary: "Rename the selected organization",
139
+ schemas: {
140
+ /**
141
+ * Allow-list: plan, SSO, domain, mailer and membership fields only
142
+ * change through their dedicated flows.
143
+ */
144
+ body: zod_mini.z.object({ name: zod_mini.z.string().check(zod_mini.z.minLength(1)) }),
145
+ response: { 200: organizationResponseSchema }
146
+ }
147
+ }),
148
+ updateOrganizationMailerConfig: require_defineRoute.defineRoute({
149
+ method: "PUT",
150
+ path: "/mailer-config",
151
+ summary: "Configure the transactional mailer of the organization",
152
+ schemas: {
153
+ body: organizationMailerConfigInputSchema,
154
+ response: { 200: organizationResponseSchema }
155
+ }
156
+ }),
157
+ updateOrganizationMembers: require_defineRoute.defineRoute({
158
+ method: "PUT",
159
+ path: "/members",
160
+ summary: "Replace the members of the selected organization",
161
+ schemas: {
162
+ body: organizationMembersBodySchema,
163
+ response: { 200: organizationResponseSchema }
164
+ }
165
+ }),
166
+ updateOrganizationMembersById: require_defineRoute.defineRoute({
167
+ method: "PUT",
168
+ path: "/:organizationId/members",
169
+ summary: "Admin only: replace the members of any organization",
170
+ schemas: {
171
+ params: organizationIdParamsSchema,
172
+ body: organizationMembersBodySchema,
173
+ response: { 200: organizationResponseSchema }
174
+ }
175
+ }),
176
+ addOrganizationMember: require_defineRoute.defineRoute({
177
+ method: "POST",
178
+ path: "/member",
179
+ summary: "Invite a user to the selected organization by email",
180
+ schemas: {
181
+ body: zod_mini.z.object({ userEmail: zod_mini.z.string().check(zod_mini.z.minLength(1)) }),
182
+ response: { 200: organizationResponseSchema }
183
+ }
184
+ }),
185
+ deleteOrganization: require_defineRoute.defineRoute({
186
+ method: "DELETE",
187
+ path: "/",
188
+ summary: "Delete the selected organization",
189
+ schemas: { response: { 200: organizationResponseSchema } }
190
+ }),
191
+ selectOrganization: require_defineRoute.defineRoute({
192
+ method: "PUT",
193
+ path: "/:organizationId",
194
+ summary: "Select an organization for the current session",
195
+ schemas: {
196
+ params: organizationIdParamsSchema,
197
+ response: { 200: organizationResponseSchema }
198
+ }
199
+ }),
200
+ unselectOrganization: require_defineRoute.defineRoute({
201
+ method: "POST",
202
+ path: "/logout",
203
+ summary: "Unselect the organization of the current session",
204
+ schemas: { response: { 200: require_responseData.responseDataSchema(zod_mini.z.null()) } }
205
+ }),
206
+ deleteOrganizationByIdAdmin: require_defineRoute.defineRoute({
207
+ method: "DELETE",
208
+ path: "/:organizationId/admin",
209
+ summary: "Admin only: delete any organization",
210
+ schemas: {
211
+ params: organizationIdParamsSchema,
212
+ response: { 200: organizationResponseSchema }
213
+ }
214
+ })
215
+ }
216
+ });
217
+
218
+ //#endregion
219
+ exports.mailerProviderSchema = mailerProviderSchema;
220
+ exports.organizationContract = organizationContract;
221
+ exports.organizationMailerConfigInputSchema = organizationMailerConfigInputSchema;
222
+ exports.organizationMailerConfigSchema = organizationMailerConfigSchema;
223
+ exports.organizationSchema = organizationSchema;
224
+ exports.planSchema = planSchema;
225
+ exports.planTypeSchema = planTypeSchema;
226
+ //# sourceMappingURL=organization.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.cjs","names":["z","dateTimeSchema","objectIdSchema","responseDataSchema","defineRouteGroup","defineRoute","paginationQueryShape","repeatableQueryValueSchema","paginatedResponseSchema"],"sources":["../../src/organization.ts"],"sourcesContent":["import { z } from 'zod/mini';\nimport {\n dateTimeSchema,\n objectIdSchema,\n paginationQueryShape,\n repeatableQueryValueSchema,\n} from './common';\nimport {\n defineRoute,\n defineRouteGroup,\n type RouteBodyInput,\n type RouteParams,\n type RouteQuerystring,\n} from './defineRoute';\nimport {\n type PaginatedResponse,\n paginatedResponseSchema,\n type ResponseData,\n responseDataSchema,\n} from './responseData';\n\n/** Billing plan tiers. */\nexport const planTypeSchema = z.enum([\n 'FREE',\n 'PREMIUM',\n 'ENTERPRISE',\n 'LIFETIME',\n]);\n\n/** Subscription of an organization. Only Stripe webhooks change it. */\nexport const planSchema = z.looseObject({\n id: z.string(),\n type: planTypeSchema,\n creatorId: z.optional(z.string()),\n subscriptionId: z.optional(z.string()),\n customerId: z.optional(z.string()),\n priceId: z.optional(z.string()),\n status: z.optional(\n z.enum([\n 'active',\n 'canceled',\n 'past_due',\n 'unpaid',\n 'incomplete',\n 'incomplete_expired',\n 'paused',\n 'trialing',\n ])\n ),\n period: z.optional(z.enum(['MONTHLY', 'YEARLY', 'LIFETIME'])),\n createdAt: dateTimeSchema,\n updatedAt: dateTimeSchema,\n});\n\n/** Transactional email providers of a per-organization mailer. */\nexport const mailerProviderSchema = z.enum(['resend', 'smtp']);\n\n/**\n * Per-organization mailer as returned by the API: secrets are never sent,\n * the `has*` flags tell whether one is stored.\n */\nexport const organizationMailerConfigSchema = z.object({\n isActive: z.boolean(),\n provider: mailerProviderSchema,\n fromName: z.optional(z.string()),\n fromEmail: z.optional(z.string()),\n resend: z.optional(z.object({ hasApiKey: z.optional(z.boolean()) })),\n smtp: z.optional(\n z.object({\n host: z.optional(z.string()),\n port: z.optional(z.number()),\n secure: z.optional(z.boolean()),\n user: z.optional(z.string()),\n hasPassword: z.optional(z.boolean()),\n })\n ),\n});\n\n/**\n * Mailer update payload. Secrets are plaintext and optional: an omitted or\n * empty secret keeps the stored one.\n */\nexport const organizationMailerConfigInputSchema = z.object({\n isActive: z.boolean(),\n provider: mailerProviderSchema,\n fromName: z.optional(z.string()),\n fromEmail: z.optional(z.string()),\n resend: z.optional(z.object({ apiKey: z.optional(z.string()) })),\n smtp: z.optional(\n z.object({\n host: z.optional(z.string()),\n port: z.optional(z.number()),\n secure: z.optional(z.boolean()),\n user: z.optional(z.string()),\n password: z.optional(z.string()),\n })\n ),\n});\n\n/** Organization as returned by the API. */\nexport const organizationSchema = z.looseObject({\n id: z.string(),\n name: z.string(),\n membersIds: z.array(z.string()),\n adminsIds: z.array(z.string()),\n /** Whether SSO is configured (managed by better-auth). */\n ssoEnabled: z.boolean(),\n /** Primary domain, used for SSO provider lookup. */\n domain: z.string(),\n mailerConfig: z.optional(organizationMailerConfigSchema),\n creatorId: z.string(),\n plan: z.optional(planSchema),\n createdAt: dateTimeSchema,\n updatedAt: dateTimeSchema,\n});\n\nconst organizationIdParamsSchema = z.object({ organizationId: objectIdSchema });\n\n/** Members and admins of an organization, replaced as a whole. */\nconst organizationMembersBodySchema = z.object({\n membersIds: z.optional(z.array(objectIdSchema)),\n adminsIds: z.optional(z.array(objectIdSchema)),\n});\n\nconst organizationResponseSchema = responseDataSchema(organizationSchema);\n\n/** REST contract of the `/api/organization` routes. */\nexport const organizationContract = defineRouteGroup({\n prefix: '/api/organization',\n tag: 'Organization',\n routes: {\n getOrganizations: defineRoute({\n method: 'GET',\n path: '/',\n summary: 'List the organizations of the signed-in user',\n schemas: {\n querystring: z.looseObject({\n ...paginationQueryShape,\n ids: z.optional(repeatableQueryValueSchema),\n name: z.optional(z.string()),\n search: z.optional(z.string()),\n membersIds: z.optional(repeatableQueryValueSchema),\n sortBy: z.optional(z.string()),\n sortOrder: z.optional(z.string()),\n /** Admin only: list every organization. */\n fetchAll: z.optional(z.enum(['true', 'false'])),\n }),\n response: { 200: paginatedResponseSchema(organizationSchema) },\n },\n }),\n addOrganization: defineRoute({\n method: 'POST',\n path: '/',\n summary: 'Create an organization',\n schemas: {\n body: z.object({ name: z.string().check(z.minLength(1)) }),\n response: { 200: organizationResponseSchema },\n },\n }),\n updateOrganization: defineRoute({\n method: 'PUT',\n path: '/',\n summary: 'Rename the selected organization',\n schemas: {\n /**\n * Allow-list: plan, SSO, domain, mailer and membership fields only\n * change through their dedicated flows.\n */\n body: z.object({ name: z.string().check(z.minLength(1)) }),\n response: { 200: organizationResponseSchema },\n },\n }),\n updateOrganizationMailerConfig: defineRoute({\n method: 'PUT',\n path: '/mailer-config',\n summary: 'Configure the transactional mailer of the organization',\n schemas: {\n body: organizationMailerConfigInputSchema,\n response: { 200: organizationResponseSchema },\n },\n }),\n updateOrganizationMembers: defineRoute({\n method: 'PUT',\n path: '/members',\n summary: 'Replace the members of the selected organization',\n schemas: {\n body: organizationMembersBodySchema,\n response: { 200: organizationResponseSchema },\n },\n }),\n updateOrganizationMembersById: defineRoute({\n method: 'PUT',\n path: '/:organizationId/members',\n summary: 'Admin only: replace the members of any organization',\n schemas: {\n params: organizationIdParamsSchema,\n body: organizationMembersBodySchema,\n response: { 200: organizationResponseSchema },\n },\n }),\n addOrganizationMember: defineRoute({\n method: 'POST',\n path: '/member',\n summary: 'Invite a user to the selected organization by email',\n schemas: {\n body: z.object({ userEmail: z.string().check(z.minLength(1)) }),\n response: { 200: organizationResponseSchema },\n },\n }),\n deleteOrganization: defineRoute({\n method: 'DELETE',\n path: '/',\n summary: 'Delete the selected organization',\n schemas: {\n response: { 200: organizationResponseSchema },\n },\n }),\n selectOrganization: defineRoute({\n method: 'PUT',\n path: '/:organizationId',\n summary: 'Select an organization for the current session',\n schemas: {\n params: organizationIdParamsSchema,\n response: { 200: organizationResponseSchema },\n },\n }),\n unselectOrganization: defineRoute({\n method: 'POST',\n path: '/logout',\n summary: 'Unselect the organization of the current session',\n schemas: {\n response: { 200: responseDataSchema(z.null()) },\n },\n }),\n deleteOrganizationByIdAdmin: defineRoute({\n method: 'DELETE',\n path: '/:organizationId/admin',\n summary: 'Admin only: delete any organization',\n schemas: {\n params: organizationIdParamsSchema,\n response: { 200: organizationResponseSchema },\n },\n }),\n },\n});\n\n/** Route definitions of the `/api/organization` group, by name. */\nexport type OrganizationRoutes = (typeof organizationContract)['routes'];\n\nexport type PlanType = z.output<typeof planTypeSchema>;\nexport type PlanAPI = z.output<typeof planSchema>;\nexport type MailerProvider = z.output<typeof mailerProviderSchema>;\nexport type OrganizationMailerConfigAPI = z.output<\n typeof organizationMailerConfigSchema\n>;\nexport type OrganizationMailerConfigInput = z.output<\n typeof organizationMailerConfigInputSchema\n>;\nexport type OrganizationAPI = z.output<typeof organizationSchema>;\n\nexport type GetOrganizationsParams = RouteQuerystring<\n OrganizationRoutes['getOrganizations']\n>;\nexport type GetOrganizationsResult = PaginatedResponse<OrganizationAPI>;\nexport type GetOrganizationParam = { organizationId: string };\nexport type GetOrganizationResult = ResponseData<OrganizationAPI>;\nexport type AddOrganizationBody = RouteBodyInput<\n OrganizationRoutes['addOrganization']\n>;\nexport type AddOrganizationResult = ResponseData<OrganizationAPI>;\nexport type UpdateOrganizationBody = RouteBodyInput<\n OrganizationRoutes['updateOrganization']\n>;\nexport type UpdateOrganizationResult = ResponseData<OrganizationAPI>;\nexport type UpdateOrganizationMailerConfigBody = RouteBodyInput<\n OrganizationRoutes['updateOrganizationMailerConfig']\n>;\nexport type UpdateOrganizationMailerConfigResult =\n ResponseData<OrganizationAPI>;\nexport type AddOrganizationMemberBody = RouteBodyInput<\n OrganizationRoutes['addOrganizationMember']\n>;\nexport type AddOrganizationMemberResult = ResponseData<OrganizationAPI>;\nexport type UpdateOrganizationMembersBody = RouteBodyInput<\n OrganizationRoutes['updateOrganizationMembers']\n>;\nexport type UpdateOrganizationMembersResult = ResponseData<OrganizationAPI>;\nexport type UpdateOrganizationMembersByIdParams = RouteParams<\n OrganizationRoutes['updateOrganizationMembersById']\n>;\nexport type UpdateOrganizationMembersByIdBody = UpdateOrganizationMembersBody;\nexport type UpdateOrganizationMembersByIdResult = ResponseData<OrganizationAPI>;\nexport type DeleteOrganizationResult = ResponseData<OrganizationAPI>;\nexport type DeleteOrganizationByIdAdminParams = RouteParams<\n OrganizationRoutes['deleteOrganizationByIdAdmin']\n>;\nexport type DeleteOrganizationByIdAdminResult = ResponseData<OrganizationAPI>;\nexport type SelectOrganizationParam = RouteParams<\n OrganizationRoutes['selectOrganization']\n>;\nexport type SelectOrganizationResult = ResponseData<OrganizationAPI>;\nexport type UnselectOrganizationResult = ResponseData<null>;\n"],"mappings":"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"}
@@ -0,0 +1,401 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_common = require('./common.cjs');
3
+ const require_defineRoute = require('./defineRoute.cjs');
4
+ const require_responseData = require('./responseData.cjs');
5
+ let zod_mini = require("zod/mini");
6
+
7
+ //#region src/project.ts
8
+ /** Locale code (ex: `en`, `fr-CA`). */
9
+ const localeSchema = require_common.typedStringSchema();
10
+ /**
11
+ * Project-level overrides of the Intlayer configuration. Loose objects: the
12
+ * CLI pushes whole config sections, unknown keys must reach the service.
13
+ */
14
+ const projectConfigurationSchema = zod_mini.z.looseObject({
15
+ internationalization: zod_mini.z.optional(zod_mini.z.looseObject({
16
+ locales: zod_mini.z.optional(zod_mini.z.array(localeSchema)),
17
+ defaultLocale: zod_mini.z.optional(localeSchema)
18
+ })),
19
+ editor: zod_mini.z.optional(zod_mini.z.looseObject({
20
+ applicationURL: zod_mini.z.optional(require_common.typedStringSchema()),
21
+ cmsURL: zod_mini.z.optional(require_common.typedStringSchema())
22
+ })),
23
+ ai: zod_mini.z.optional(require_common.typedValueSchema())
24
+ });
25
+ /** Generic build webhook (Vercel, Netlify, custom). */
26
+ const webhookSchema = zod_mini.z.looseObject({
27
+ id: zod_mini.z.optional(zod_mini.z.string()),
28
+ name: zod_mini.z.string(),
29
+ url: zod_mini.z.string(),
30
+ enabled: zod_mini.z.optional(zod_mini.z.boolean()),
31
+ /** Optional signature secret. */
32
+ secret: zod_mini.z.optional(zod_mini.z.string())
33
+ });
34
+ /** Build triggers: git provider pipeline + generic webhooks. */
35
+ const projectCISchema = zod_mini.z.object({
36
+ autoTriggerBuilds: zod_mini.z.optional(zod_mini.z.boolean()),
37
+ /** Commit CMS edits of `hybrid` dictionaries back to their source file. */
38
+ autoCommitDictionaries: zod_mini.z.optional(zod_mini.z.boolean()),
39
+ webhooks: zod_mini.z.optional(zod_mini.z.array(webhookSchema))
40
+ });
41
+ /** Git provider of a connected repository. */
42
+ const repositoryProviderSchema = zod_mini.z.enum([
43
+ "github",
44
+ "gitlab",
45
+ "bitbucket",
46
+ "codeberg",
47
+ "gitee"
48
+ ]);
49
+ const baseRepositoryShape = {
50
+ owner: zod_mini.z.string(),
51
+ repository: zod_mini.z.string(),
52
+ branch: zod_mini.z.string(),
53
+ url: zod_mini.z.string(),
54
+ configFilePath: zod_mini.z.string()
55
+ };
56
+ /**
57
+ * Git repository connected to a project. The repo-scoped token never leaves
58
+ * the server.
59
+ */
60
+ const repositoryConnectionSchema = zod_mini.z.discriminatedUnion("provider", [
61
+ zod_mini.z.looseObject({
62
+ provider: zod_mini.z.literal("github"),
63
+ ...baseRepositoryShape,
64
+ installationId: zod_mini.z.optional(zod_mini.z.number())
65
+ }),
66
+ zod_mini.z.looseObject({
67
+ provider: zod_mini.z.literal("gitlab"),
68
+ ...baseRepositoryShape,
69
+ projectId: zod_mini.z.optional(zod_mini.z.number()),
70
+ /** Custom GitLab instance URL (ex: https://gitlab.company.com). */
71
+ instanceUrl: zod_mini.z.optional(zod_mini.z.string())
72
+ }),
73
+ zod_mini.z.looseObject({
74
+ provider: zod_mini.z.literal("bitbucket"),
75
+ ...baseRepositoryShape,
76
+ workspace: zod_mini.z.string()
77
+ }),
78
+ zod_mini.z.looseObject({
79
+ provider: zod_mini.z.literal("codeberg"),
80
+ ...baseRepositoryShape
81
+ }),
82
+ zod_mini.z.looseObject({
83
+ provider: zod_mini.z.literal("gitee"),
84
+ ...baseRepositoryShape
85
+ })
86
+ ]);
87
+ /** null = unrestricted, [] = no access, array = allowed ids (null = production). */
88
+ const allowedEnvironmentIdsSchema = zod_mini.z.nullable(zod_mini.z.array(zod_mini.z.nullable(zod_mini.z.string())));
89
+ /** null = unrestricted, [] = no access, array = allowed locales. */
90
+ const allowedLocalesSchema = zod_mini.z.nullable(zod_mini.z.array(localeSchema));
91
+ /** Project environment (production is injected when none is the default). */
92
+ const environmentSchema = zod_mini.z.looseObject({
93
+ id: zod_mini.z.string(),
94
+ name: zod_mini.z.string(),
95
+ isDefault: zod_mini.z.boolean(),
96
+ configuration: zod_mini.z.optional(projectConfigurationSchema),
97
+ createdAt: zod_mini.z.optional(require_common.dateTimeSchema),
98
+ updatedAt: zod_mini.z.optional(require_common.dateTimeSchema)
99
+ });
100
+ /** Granular per-member access, overlaid on the member's role. */
101
+ const projectMemberGranularAccessSchema = zod_mini.z.object({
102
+ userId: zod_mini.z.string(),
103
+ allowedEnvironmentIds: allowedEnvironmentIdsSchema,
104
+ allowedLocales: allowedLocalesSchema
105
+ });
106
+ /** Access key (OAuth2 client credentials). Live bearer tokens are never sent. */
107
+ const accessKeySchema = zod_mini.z.looseObject({
108
+ id: zod_mini.z.string(),
109
+ name: zod_mini.z.string(),
110
+ clientId: zod_mini.z.string(),
111
+ /** Shown to project members (dashboard copy, CLI login). */
112
+ clientSecret: zod_mini.z.string(),
113
+ grants: zod_mini.z.array(zod_mini.z.string()),
114
+ userId: zod_mini.z.string(),
115
+ expiresAt: zod_mini.z.optional(zod_mini.z.nullable(require_common.dateTimeSchema)),
116
+ allowedEnvironmentIds: zod_mini.z.optional(allowedEnvironmentIdsSchema),
117
+ allowedLocales: zod_mini.z.optional(allowedLocalesSchema),
118
+ createdAt: require_common.dateTimeSchema,
119
+ updatedAt: require_common.dateTimeSchema
120
+ });
121
+ /** Project as returned by the API. */
122
+ const projectSchema = zod_mini.z.looseObject({
123
+ id: zod_mini.z.string(),
124
+ organizationId: zod_mini.z.string(),
125
+ name: zod_mini.z.string(),
126
+ membersIds: zod_mini.z.array(zod_mini.z.string()),
127
+ adminsIds: zod_mini.z.array(zod_mini.z.string()),
128
+ viewersIds: zod_mini.z.optional(zod_mini.z.array(zod_mini.z.string())),
129
+ memberAccess: zod_mini.z.optional(zod_mini.z.array(projectMemberGranularAccessSchema)),
130
+ creatorId: zod_mini.z.string(),
131
+ configuration: zod_mini.z.optional(projectConfigurationSchema),
132
+ repository: zod_mini.z.optional(zod_mini.z.nullable(repositoryConnectionSchema)),
133
+ webhooks: zod_mini.z.optional(projectCISchema),
134
+ autoFill: zod_mini.z.optional(zod_mini.z.boolean()),
135
+ /** Screenshot of the application URL, generated automatically. */
136
+ imageUrl: zod_mini.z.optional(zod_mini.z.string()),
137
+ environments: zod_mini.z.optional(zod_mini.z.array(environmentSchema)),
138
+ oAuth2Access: zod_mini.z.array(accessKeySchema),
139
+ createdAt: require_common.dateTimeSchema,
140
+ updatedAt: require_common.dateTimeSchema
141
+ });
142
+ /** Translation health of one locale of a project. */
143
+ const localeInsightSchema = zod_mini.z.object({
144
+ locale: localeSchema,
145
+ isDefault: zod_mini.z.boolean(),
146
+ translatedKeys: zod_mini.z.number(),
147
+ totalKeys: zod_mini.z.number(),
148
+ missingKeys: zod_mini.z.number(),
149
+ /** Ratio in the `[0, 1]` range. */
150
+ completionRate: zod_mini.z.number()
151
+ });
152
+ /** Project-wide localization insights shown on the dashboard overview. */
153
+ const projectInsightsSchema = zod_mini.z.object({
154
+ projectId: zod_mini.z.string(),
155
+ /** Unix epoch (ms) at which the snapshot was computed. */
156
+ generatedAt: zod_mini.z.number(),
157
+ defaultLocale: zod_mini.z.nullable(localeSchema),
158
+ localeCount: zod_mini.z.number(),
159
+ dictionaryCount: zod_mini.z.number(),
160
+ keyCount: zod_mini.z.number(),
161
+ translationUnitCount: zod_mini.z.number(),
162
+ translatedUnitCount: zod_mini.z.number(),
163
+ overallCompletionRate: zod_mini.z.number(),
164
+ fullyTranslatedLocaleCount: zod_mini.z.number(),
165
+ dictionariesWithMissingTranslations: zod_mini.z.number(),
166
+ missingTranslationCount: zod_mini.z.number(),
167
+ localeInsights: zod_mini.z.array(localeInsightSchema),
168
+ recentlyUpdated: zod_mini.z.array(zod_mini.z.object({
169
+ key: zod_mini.z.string(),
170
+ updatedAt: zod_mini.z.number()
171
+ })),
172
+ lastUpdatedAt: zod_mini.z.nullable(zod_mini.z.number()),
173
+ memberCount: zod_mini.z.number(),
174
+ adminCount: zod_mini.z.number(),
175
+ environmentCount: zod_mini.z.number(),
176
+ autoFill: zod_mini.z.boolean(),
177
+ aiConfigured: zod_mini.z.boolean(),
178
+ repositoryProvider: zod_mini.z.nullable(repositoryProviderSchema),
179
+ applicationURL: zod_mini.z.nullable(zod_mini.z.string())
180
+ });
181
+ /** CI configuration file status of the connected repository. */
182
+ const ciStatusSchema = zod_mini.z.object({
183
+ exists: zod_mini.z.boolean(),
184
+ content: zod_mini.z.string(),
185
+ path: zod_mini.z.string(),
186
+ fileUrl: zod_mini.z.optional(zod_mini.z.string()),
187
+ allowAutoPush: zod_mini.z.boolean()
188
+ });
189
+ const projectIdParamsSchema = zod_mini.z.object({ projectId: require_common.objectIdSchema });
190
+ const clientIdBodySchema = zod_mini.z.object({ clientId: zod_mini.z.string() });
191
+ const ciTargetResultSchema = zod_mini.z.object({
192
+ target: zod_mini.z.string(),
193
+ success: zod_mini.z.boolean(),
194
+ message: zod_mini.z.optional(zod_mini.z.string())
195
+ });
196
+ /** REST contract of the `/api/project` routes. */
197
+ const projectContract = require_defineRoute.defineRouteGroup({
198
+ prefix: "/api/project",
199
+ tag: "Project",
200
+ routes: {
201
+ getProjects: require_defineRoute.defineRoute({
202
+ method: "GET",
203
+ path: "/",
204
+ summary: "List the projects visible to the session",
205
+ schemas: {
206
+ querystring: zod_mini.z.looseObject({
207
+ ...require_common.paginationQueryShape,
208
+ ids: zod_mini.z.optional(require_common.repeatableQueryValueSchema),
209
+ name: zod_mini.z.optional(zod_mini.z.string()),
210
+ search: zod_mini.z.optional(zod_mini.z.string()),
211
+ organizationId: zod_mini.z.optional(zod_mini.z.string()),
212
+ membersIds: zod_mini.z.optional(require_common.repeatableQueryValueSchema),
213
+ sortBy: zod_mini.z.optional(zod_mini.z.string()),
214
+ sortOrder: zod_mini.z.optional(zod_mini.z.string()),
215
+ /** Admin only: list projects of every organization. */
216
+ fetchAll: zod_mini.z.optional(zod_mini.z.enum(["true", "false"]))
217
+ }),
218
+ response: { 200: require_responseData.paginatedResponseSchema(projectSchema) }
219
+ }
220
+ }),
221
+ getProjectInsights: require_defineRoute.defineRoute({
222
+ method: "GET",
223
+ path: "/insights",
224
+ summary: "Localization insights of the selected project",
225
+ schemas: { response: { 200: require_responseData.responseDataSchema(projectInsightsSchema) } }
226
+ }),
227
+ addProject: require_defineRoute.defineRoute({
228
+ method: "POST",
229
+ path: "/",
230
+ summary: "Create a project in the selected organization",
231
+ schemas: {
232
+ body: zod_mini.z.looseObject({ name: zod_mini.z.string().check(zod_mini.z.minLength(1)) }),
233
+ response: { 200: require_responseData.responseDataSchema(projectSchema) }
234
+ }
235
+ }),
236
+ updateProject: require_defineRoute.defineRoute({
237
+ method: "PUT",
238
+ path: "/",
239
+ summary: "Update the selected project",
240
+ schemas: {
241
+ /**
242
+ * Allow-list: membership and ownership fields (`adminsIds`,
243
+ * `membersIds`, `viewersIds`, `creatorId`, `memberAccess`,
244
+ * `environments`) are stripped, they only change through their
245
+ * dedicated endpoints and the invariants those enforce.
246
+ */
247
+ body: zod_mini.z.object({
248
+ name: zod_mini.z.optional(zod_mini.z.string().check(zod_mini.z.minLength(1))),
249
+ configuration: zod_mini.z.optional(projectConfigurationSchema),
250
+ autoFill: zod_mini.z.optional(zod_mini.z.boolean()),
251
+ webhooks: zod_mini.z.optional(projectCISchema),
252
+ /** `null` disconnects the repository. */
253
+ repository: zod_mini.z.optional(zod_mini.z.nullable(repositoryConnectionSchema))
254
+ }),
255
+ response: { 200: require_responseData.responseDataSchema(projectSchema) }
256
+ }
257
+ }),
258
+ updateProjectMembers: require_defineRoute.defineRoute({
259
+ method: "PUT",
260
+ path: "/members",
261
+ summary: "Replace the members of the selected project",
262
+ schemas: {
263
+ body: zod_mini.z.object({ membersIds: zod_mini.z.optional(zod_mini.z.array(zod_mini.z.object({
264
+ userId: require_common.objectIdSchema,
265
+ isAdmin: zod_mini.z.optional(zod_mini.z.boolean())
266
+ }))) }),
267
+ response: { 200: require_responseData.responseDataSchema(projectSchema) }
268
+ }
269
+ }),
270
+ pushProjectConfiguration: require_defineRoute.defineRoute({
271
+ method: "PUT",
272
+ path: "/configuration",
273
+ summary: "Push the local Intlayer configuration to the project",
274
+ schemas: {
275
+ body: projectConfigurationSchema,
276
+ response: { 200: require_responseData.responseDataSchema(projectConfigurationSchema) }
277
+ }
278
+ }),
279
+ deleteProject: require_defineRoute.defineRoute({
280
+ method: "DELETE",
281
+ path: "/",
282
+ summary: "Delete the selected project",
283
+ schemas: { response: { 200: require_responseData.responseDataSchema(projectSchema) } }
284
+ }),
285
+ selectProject: require_defineRoute.defineRoute({
286
+ method: "PUT",
287
+ path: "/:projectId",
288
+ summary: "Select a project for the current session",
289
+ schemas: {
290
+ params: projectIdParamsSchema,
291
+ response: { 200: require_responseData.responseDataSchema(projectSchema) }
292
+ }
293
+ }),
294
+ unselectProject: require_defineRoute.defineRoute({
295
+ method: "POST",
296
+ path: "/logout",
297
+ summary: "Unselect the project of the current session",
298
+ schemas: { response: { 200: require_responseData.responseDataSchema(zod_mini.z.null()) } }
299
+ }),
300
+ addNewAccessKey: require_defineRoute.defineRoute({
301
+ method: "POST",
302
+ path: "/access_key",
303
+ summary: "Create an access key for the selected project",
304
+ schemas: {
305
+ body: zod_mini.z.object({
306
+ name: zod_mini.z.string().check(zod_mini.z.minLength(1)),
307
+ grants: zod_mini.z.array(zod_mini.z.string()),
308
+ /** ISO date-time, parsed to a `Date`; omitted for a key that never expires. */
309
+ expiresAt: zod_mini.z.optional(zod_mini.z.pipe(zod_mini.z.iso.datetime(), zod_mini.z.transform((value) => new Date(value)))),
310
+ allowedEnvironmentIds: zod_mini.z.optional(allowedEnvironmentIdsSchema),
311
+ allowedLocales: zod_mini.z.optional(allowedLocalesSchema)
312
+ }),
313
+ response: { 200: require_responseData.responseDataSchema(accessKeySchema) }
314
+ }
315
+ }),
316
+ refreshAccessKey: require_defineRoute.defineRoute({
317
+ method: "PATCH",
318
+ path: "/access_key",
319
+ summary: "Regenerate the secret of an access key",
320
+ schemas: {
321
+ body: clientIdBodySchema,
322
+ response: { 200: require_responseData.responseDataSchema(accessKeySchema) }
323
+ }
324
+ }),
325
+ deleteAccessKey: require_defineRoute.defineRoute({
326
+ method: "DELETE",
327
+ path: "/access_key",
328
+ summary: "Delete an access key",
329
+ schemas: {
330
+ body: clientIdBodySchema,
331
+ response: { 200: require_responseData.responseDataSchema(zod_mini.z.null()) }
332
+ }
333
+ }),
334
+ triggerBuild: require_defineRoute.defineRoute({
335
+ method: "POST",
336
+ path: "/build",
337
+ summary: "Trigger the CI pipelines and webhooks of the project",
338
+ schemas: { response: { 200: require_responseData.responseDataSchema(zod_mini.z.object({ results: zod_mini.z.array(ciTargetResultSchema) })) } }
339
+ }),
340
+ triggerWebhook: require_defineRoute.defineRoute({
341
+ method: "POST",
342
+ path: "/webhook",
343
+ summary: "Trigger a single project webhook",
344
+ schemas: {
345
+ body: zod_mini.z.object({ webhookIndex: zod_mini.z.int().check(zod_mini.z.gte(0)) }),
346
+ response: { 200: require_responseData.responseDataSchema(ciTargetResultSchema) }
347
+ }
348
+ }),
349
+ getCIConfiguration: require_defineRoute.defineRoute({
350
+ method: "GET",
351
+ path: "/ci",
352
+ summary: "CI configuration status of the connected repository",
353
+ schemas: { response: { 200: require_responseData.responseDataSchema(ciStatusSchema) } }
354
+ }),
355
+ pushCIConfiguration: require_defineRoute.defineRoute({
356
+ method: "POST",
357
+ path: "/ci",
358
+ summary: "Commit the CI configuration file to the repository",
359
+ schemas: { response: { 200: require_responseData.responseDataSchema(zod_mini.z.object({ success: zod_mini.z.boolean() })) } }
360
+ }),
361
+ deleteProjectByIdAdmin: require_defineRoute.defineRoute({
362
+ method: "DELETE",
363
+ path: "/:projectId/admin",
364
+ summary: "Admin only: delete any project",
365
+ schemas: {
366
+ params: projectIdParamsSchema,
367
+ response: { 200: require_responseData.responseDataSchema(projectSchema) }
368
+ }
369
+ }),
370
+ updateMemberAccess: require_defineRoute.defineRoute({
371
+ method: "PUT",
372
+ path: "/member/:userId/access",
373
+ summary: "Restrict the environments and locales of a project member",
374
+ schemas: {
375
+ params: zod_mini.z.object({ userId: require_common.objectIdSchema }),
376
+ body: zod_mini.z.object({
377
+ allowedEnvironmentIds: allowedEnvironmentIdsSchema,
378
+ allowedLocales: allowedLocalesSchema
379
+ }),
380
+ response: { 200: require_responseData.responseDataSchema(projectMemberGranularAccessSchema) }
381
+ }
382
+ })
383
+ }
384
+ });
385
+
386
+ //#endregion
387
+ exports.accessKeySchema = accessKeySchema;
388
+ exports.ciStatusSchema = ciStatusSchema;
389
+ exports.environmentSchema = environmentSchema;
390
+ exports.localeInsightSchema = localeInsightSchema;
391
+ exports.localeSchema = localeSchema;
392
+ exports.projectCISchema = projectCISchema;
393
+ exports.projectConfigurationSchema = projectConfigurationSchema;
394
+ exports.projectContract = projectContract;
395
+ exports.projectInsightsSchema = projectInsightsSchema;
396
+ exports.projectMemberGranularAccessSchema = projectMemberGranularAccessSchema;
397
+ exports.projectSchema = projectSchema;
398
+ exports.repositoryConnectionSchema = repositoryConnectionSchema;
399
+ exports.repositoryProviderSchema = repositoryProviderSchema;
400
+ exports.webhookSchema = webhookSchema;
401
+ //# sourceMappingURL=project.cjs.map