@learnorama/mozaik-sdk 0.12.3-staging.46.1 → 0.13.0-staging.48.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +25 -0
  2. package/dist/api/account.d.ts +1 -1
  3. package/dist/api/account.js.map +1 -1
  4. package/dist/api/admin-catalogue.d.ts +1 -1
  5. package/dist/api/admin-catalogue.js.map +1 -1
  6. package/dist/api/admin-consumption.d.ts +1 -1
  7. package/dist/api/admin-consumption.js.map +1 -1
  8. package/dist/api/admin-contracts.d.ts +1 -1
  9. package/dist/api/admin-contracts.js.map +1 -1
  10. package/dist/api/admin-desk.d.ts +1 -1
  11. package/dist/api/admin-desk.js.map +1 -1
  12. package/dist/api/admin-licenses.d.ts +1 -1
  13. package/dist/api/admin-licenses.js.map +1 -1
  14. package/dist/api/admin-partner-selections.d.ts +1 -1
  15. package/dist/api/admin-partner-selections.js.map +1 -1
  16. package/dist/api/admin-patrons.d.ts +1 -1
  17. package/dist/api/admin-patrons.js.map +1 -1
  18. package/dist/api/admin-reviews.d.ts +1 -1
  19. package/dist/api/admin-reviews.js.map +1 -1
  20. package/dist/api/admin-roles.d.ts +1 -1
  21. package/dist/api/admin-roles.js.map +1 -1
  22. package/dist/api/admin-support.d.ts +1 -1
  23. package/dist/api/admin-support.js.map +1 -1
  24. package/dist/api/admin-tenants.d.ts +1 -1
  25. package/dist/api/admin-tenants.js.map +1 -1
  26. package/dist/api/admin-tutoring.d.ts +1 -1
  27. package/dist/api/admin-tutoring.js.map +1 -1
  28. package/dist/api/auth.d.ts +1 -1
  29. package/dist/api/auth.js.map +1 -1
  30. package/dist/api/biblio-billing-webhooks.d.ts +18 -0
  31. package/dist/api/biblio-billing-webhooks.js +62 -0
  32. package/dist/api/biblio-billing-webhooks.js.map +1 -0
  33. package/dist/api/biblio-billing.d.ts +192 -0
  34. package/dist/api/biblio-billing.js +645 -0
  35. package/dist/api/biblio-billing.js.map +1 -0
  36. package/dist/api/biblio-catalogue.d.ts +1 -1
  37. package/dist/api/biblio-catalogue.js.map +1 -1
  38. package/dist/api/biblio-home.d.ts +1 -1
  39. package/dist/api/biblio-home.js.map +1 -1
  40. package/dist/api/biblio-learning-author-profiles.d.ts +108 -0
  41. package/dist/api/biblio-learning-author-profiles.js +331 -0
  42. package/dist/api/biblio-learning-author-profiles.js.map +1 -0
  43. package/dist/api/biblio-learning-authoring.d.ts +168 -0
  44. package/dist/api/biblio-learning-authoring.js +586 -0
  45. package/dist/api/biblio-learning-authoring.js.map +1 -0
  46. package/dist/api/biblio-learning-editorial.d.ts +54 -0
  47. package/dist/api/biblio-learning-editorial.js +149 -0
  48. package/dist/api/biblio-learning-editorial.js.map +1 -0
  49. package/dist/api/biblio-learning-feedback.d.ts +60 -0
  50. package/dist/api/biblio-learning-feedback.js +180 -0
  51. package/dist/api/biblio-learning-feedback.js.map +1 -0
  52. package/dist/api/biblio-learning-finance.d.ts +186 -0
  53. package/dist/api/biblio-learning-finance.js +622 -0
  54. package/dist/api/biblio-learning-finance.js.map +1 -0
  55. package/dist/api/biblio-learning-integrations.d.ts +60 -0
  56. package/dist/api/biblio-learning-integrations.js +215 -0
  57. package/dist/api/biblio-learning-integrations.js.map +1 -0
  58. package/dist/api/biblio-learning-membership.d.ts +24 -0
  59. package/dist/api/biblio-learning-membership.js +69 -0
  60. package/dist/api/biblio-learning-membership.js.map +1 -0
  61. package/dist/api/biblio-learning.d.ts +222 -0
  62. package/dist/api/biblio-learning.js +697 -0
  63. package/dist/api/biblio-learning.js.map +1 -0
  64. package/dist/api/biblio-library.d.ts +1 -1
  65. package/dist/api/biblio-library.js.map +1 -1
  66. package/dist/api/biblio-nextory.d.ts +1 -1
  67. package/dist/api/biblio-nextory.js.map +1 -1
  68. package/dist/api/biblio-press.d.ts +1 -1
  69. package/dist/api/biblio-press.js.map +1 -1
  70. package/dist/api/biblio-search.d.ts +1 -1
  71. package/dist/api/biblio-search.js.map +1 -1
  72. package/dist/api/biblio-telemetry.d.ts +1 -1
  73. package/dist/api/biblio-telemetry.js.map +1 -1
  74. package/dist/api/consumption.d.ts +1 -1
  75. package/dist/api/consumption.js.map +1 -1
  76. package/dist/api/cvs-app.d.ts +1 -1
  77. package/dist/api/cvs-app.js.map +1 -1
  78. package/dist/api/cvs-documents.d.ts +1 -1
  79. package/dist/api/cvs-documents.js.map +1 -1
  80. package/dist/api/cvs-favorites.d.ts +1 -1
  81. package/dist/api/cvs-favorites.js.map +1 -1
  82. package/dist/api/cvs-ils.d.ts +1 -1
  83. package/dist/api/cvs-ils.js.map +1 -1
  84. package/dist/api/cvs-loans.d.ts +1 -1
  85. package/dist/api/cvs-loans.js.map +1 -1
  86. package/dist/api/cvs-payments.d.ts +1 -1
  87. package/dist/api/cvs-payments.js.map +1 -1
  88. package/dist/api/cvs-streaming.d.ts +1 -1
  89. package/dist/api/cvs-streaming.js.map +1 -1
  90. package/dist/api/index.d.ts +11 -1
  91. package/dist/api/index.js +11 -1
  92. package/dist/api/partner-catalogue.d.ts +1 -1
  93. package/dist/api/partner-catalogue.js.map +1 -1
  94. package/dist/api/partner-reader.d.ts +1 -1
  95. package/dist/api/partner-reader.js.map +1 -1
  96. package/dist/api/profiles.d.ts +1 -1
  97. package/dist/api/profiles.js.map +1 -1
  98. package/dist/api/search.d.ts +1 -1
  99. package/dist/api/search.js.map +1 -1
  100. package/dist/api/tutoring-catalogue.d.ts +1 -1
  101. package/dist/api/tutoring-catalogue.js.map +1 -1
  102. package/dist/api/tutoring-chat.d.ts +1 -1
  103. package/dist/api/tutoring-chat.js.map +1 -1
  104. package/dist/api/tutoring-dispatch.d.ts +1 -1
  105. package/dist/api/tutoring-dispatch.js.map +1 -1
  106. package/dist/api/tutoring-practitioner.d.ts +1 -1
  107. package/dist/api/tutoring-practitioner.js.map +1 -1
  108. package/dist/api/tutoring-requests.d.ts +1 -1
  109. package/dist/api/tutoring-requests.js.map +1 -1
  110. package/dist/chunks/client2.d.ts +1 -1
  111. package/dist/chunks/connection.d.ts +1 -1
  112. package/dist/chunks/index.d.ts +10062 -3487
  113. package/dist/index.d.ts +3 -3
  114. package/dist/index.js +3 -3
  115. package/dist/index.js.map +1 -1
  116. package/dist/models.d.ts +2 -2
  117. package/dist/models.js +329 -1
  118. package/dist/models.js.map +1 -1
  119. package/dist/react/account.d.ts +1 -1
  120. package/dist/react/account.js +1 -1
  121. package/dist/react/account.js.map +1 -1
  122. package/dist/react/admin-catalogue.d.ts +1 -1
  123. package/dist/react/admin-catalogue.js +1 -1
  124. package/dist/react/admin-catalogue.js.map +1 -1
  125. package/dist/react/admin-consumption.d.ts +1 -1
  126. package/dist/react/admin-consumption.js +1 -1
  127. package/dist/react/admin-consumption.js.map +1 -1
  128. package/dist/react/admin-contracts.d.ts +1 -1
  129. package/dist/react/admin-contracts.js +1 -1
  130. package/dist/react/admin-contracts.js.map +1 -1
  131. package/dist/react/admin-desk.d.ts +1 -1
  132. package/dist/react/admin-desk.js +1 -1
  133. package/dist/react/admin-desk.js.map +1 -1
  134. package/dist/react/admin-licenses.d.ts +1 -1
  135. package/dist/react/admin-licenses.js +1 -1
  136. package/dist/react/admin-licenses.js.map +1 -1
  137. package/dist/react/admin-partner-selections.d.ts +1 -1
  138. package/dist/react/admin-partner-selections.js +1 -1
  139. package/dist/react/admin-partner-selections.js.map +1 -1
  140. package/dist/react/admin-patrons.d.ts +1 -1
  141. package/dist/react/admin-patrons.js +1 -1
  142. package/dist/react/admin-patrons.js.map +1 -1
  143. package/dist/react/admin-reviews.d.ts +1 -1
  144. package/dist/react/admin-reviews.js +1 -1
  145. package/dist/react/admin-reviews.js.map +1 -1
  146. package/dist/react/admin-roles.d.ts +1 -1
  147. package/dist/react/admin-roles.js +1 -1
  148. package/dist/react/admin-roles.js.map +1 -1
  149. package/dist/react/admin-support.d.ts +1 -1
  150. package/dist/react/admin-support.js +1 -1
  151. package/dist/react/admin-support.js.map +1 -1
  152. package/dist/react/admin-tenants.d.ts +1 -1
  153. package/dist/react/admin-tenants.js +1 -1
  154. package/dist/react/admin-tenants.js.map +1 -1
  155. package/dist/react/admin-tutoring.d.ts +1 -1
  156. package/dist/react/admin-tutoring.js +1 -1
  157. package/dist/react/admin-tutoring.js.map +1 -1
  158. package/dist/react/auth.d.ts +1 -1
  159. package/dist/react/auth.js +1 -1
  160. package/dist/react/auth.js.map +1 -1
  161. package/dist/react/biblio-billing-webhooks.d.ts +56 -0
  162. package/dist/react/biblio-billing-webhooks.js +126 -0
  163. package/dist/react/biblio-billing-webhooks.js.map +1 -0
  164. package/dist/react/biblio-billing.d.ts +876 -0
  165. package/dist/react/biblio-billing.js +1491 -0
  166. package/dist/react/biblio-billing.js.map +1 -0
  167. package/dist/react/biblio-catalogue.d.ts +1 -1
  168. package/dist/react/biblio-catalogue.js +1 -1
  169. package/dist/react/biblio-catalogue.js.map +1 -1
  170. package/dist/react/biblio-home.d.ts +1 -1
  171. package/dist/react/biblio-home.js +1 -1
  172. package/dist/react/biblio-home.js.map +1 -1
  173. package/dist/react/biblio-learning-author-profiles.d.ts +513 -0
  174. package/dist/react/biblio-learning-author-profiles.js +795 -0
  175. package/dist/react/biblio-learning-author-profiles.js.map +1 -0
  176. package/dist/react/biblio-learning-authoring.d.ts +745 -0
  177. package/dist/react/biblio-learning-authoring.js +1335 -0
  178. package/dist/react/biblio-learning-authoring.js.map +1 -0
  179. package/dist/react/biblio-learning-editorial.d.ts +264 -0
  180. package/dist/react/biblio-learning-editorial.js +371 -0
  181. package/dist/react/biblio-learning-editorial.js.map +1 -0
  182. package/dist/react/biblio-learning-feedback.d.ts +280 -0
  183. package/dist/react/biblio-learning-feedback.js +433 -0
  184. package/dist/react/biblio-learning-feedback.js.map +1 -0
  185. package/dist/react/biblio-learning-finance.d.ts +868 -0
  186. package/dist/react/biblio-learning-finance.js +1439 -0
  187. package/dist/react/biblio-learning-finance.js.map +1 -0
  188. package/dist/react/biblio-learning-integrations.d.ts +237 -0
  189. package/dist/react/biblio-learning-integrations.js +483 -0
  190. package/dist/react/biblio-learning-integrations.js.map +1 -0
  191. package/dist/react/biblio-learning-membership.d.ts +99 -0
  192. package/dist/react/biblio-learning-membership.js +165 -0
  193. package/dist/react/biblio-learning-membership.js.map +1 -0
  194. package/dist/react/biblio-learning.d.ts +1047 -0
  195. package/dist/react/biblio-learning.js +1667 -0
  196. package/dist/react/biblio-learning.js.map +1 -0
  197. package/dist/react/biblio-library.d.ts +1 -1
  198. package/dist/react/biblio-library.js +1 -1
  199. package/dist/react/biblio-library.js.map +1 -1
  200. package/dist/react/biblio-nextory.d.ts +1 -1
  201. package/dist/react/biblio-nextory.js +1 -1
  202. package/dist/react/biblio-nextory.js.map +1 -1
  203. package/dist/react/biblio-press.d.ts +1 -1
  204. package/dist/react/biblio-press.js +1 -1
  205. package/dist/react/biblio-press.js.map +1 -1
  206. package/dist/react/biblio-search.d.ts +1 -1
  207. package/dist/react/biblio-search.js +1 -1
  208. package/dist/react/biblio-search.js.map +1 -1
  209. package/dist/react/biblio-telemetry.d.ts +1 -1
  210. package/dist/react/biblio-telemetry.js +1 -1
  211. package/dist/react/biblio-telemetry.js.map +1 -1
  212. package/dist/react/chat.d.ts +1 -1
  213. package/dist/react/consumption.d.ts +1 -1
  214. package/dist/react/consumption.js +1 -1
  215. package/dist/react/consumption.js.map +1 -1
  216. package/dist/react/cvs-app.d.ts +1 -1
  217. package/dist/react/cvs-app.js +1 -1
  218. package/dist/react/cvs-app.js.map +1 -1
  219. package/dist/react/cvs-documents.d.ts +1 -1
  220. package/dist/react/cvs-documents.js +1 -1
  221. package/dist/react/cvs-documents.js.map +1 -1
  222. package/dist/react/cvs-favorites.d.ts +1 -1
  223. package/dist/react/cvs-favorites.js +1 -1
  224. package/dist/react/cvs-favorites.js.map +1 -1
  225. package/dist/react/cvs-ils.d.ts +1 -1
  226. package/dist/react/cvs-ils.js +1 -1
  227. package/dist/react/cvs-ils.js.map +1 -1
  228. package/dist/react/cvs-loans.d.ts +1 -1
  229. package/dist/react/cvs-loans.js +1 -1
  230. package/dist/react/cvs-loans.js.map +1 -1
  231. package/dist/react/cvs-payments.d.ts +1 -1
  232. package/dist/react/cvs-payments.js +1 -1
  233. package/dist/react/cvs-payments.js.map +1 -1
  234. package/dist/react/cvs-streaming.d.ts +1 -1
  235. package/dist/react/cvs-streaming.js +1 -1
  236. package/dist/react/cvs-streaming.js.map +1 -1
  237. package/dist/react/index.d.ts +11 -1
  238. package/dist/react/index.js +11 -1
  239. package/dist/react/partner-catalogue.d.ts +1 -1
  240. package/dist/react/partner-catalogue.js +1 -1
  241. package/dist/react/partner-catalogue.js.map +1 -1
  242. package/dist/react/partner-reader.d.ts +1 -1
  243. package/dist/react/partner-reader.js +1 -1
  244. package/dist/react/partner-reader.js.map +1 -1
  245. package/dist/react/profiles.d.ts +1 -1
  246. package/dist/react/profiles.js +1 -1
  247. package/dist/react/profiles.js.map +1 -1
  248. package/dist/react/search.d.ts +1 -1
  249. package/dist/react/search.js +1 -1
  250. package/dist/react/search.js.map +1 -1
  251. package/dist/react/tutoring-catalogue.d.ts +1 -1
  252. package/dist/react/tutoring-catalogue.js +1 -1
  253. package/dist/react/tutoring-catalogue.js.map +1 -1
  254. package/dist/react/tutoring-chat.d.ts +1 -1
  255. package/dist/react/tutoring-chat.js +1 -1
  256. package/dist/react/tutoring-chat.js.map +1 -1
  257. package/dist/react/tutoring-dispatch.d.ts +1 -1
  258. package/dist/react/tutoring-dispatch.js +1 -1
  259. package/dist/react/tutoring-dispatch.js.map +1 -1
  260. package/dist/react/tutoring-practitioner.d.ts +1 -1
  261. package/dist/react/tutoring-practitioner.js +1 -1
  262. package/dist/react/tutoring-practitioner.js.map +1 -1
  263. package/dist/react/tutoring-requests.d.ts +1 -1
  264. package/dist/react/tutoring-requests.js +1 -1
  265. package/dist/react/tutoring-requests.js.map +1 -1
  266. package/package.json +7 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biblio-billing.js","names":[],"sources":["../../src/api/biblio-billing/biblio-billing.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.13.0\n */\nimport type {\n BillingCancelWrite,\n BillingCancellationFeedbackPage,\n BillingCancellationFeedbackParams,\n BillingCheckoutRead,\n BillingCheckoutSubmitWrite,\n BillingClientTokenRead,\n BillingClientTokenWrite,\n BillingIdentityRead,\n BillingIdentityWrite,\n BillingListProductsParams,\n BillingListPromotionsParams,\n BillingListSubscriptionsParams,\n BillingListTransactionsParams,\n BillingPaymentMethodWrite,\n BillingProductAvailabilityWrite,\n BillingProductPage,\n BillingProductRead,\n BillingProductWrite,\n BillingPromotionGeneratorsParams,\n BillingPromotionRedemptionsParams,\n BillingProviderProductWrite,\n BillingQuoteWrite,\n BillingSubscriptionHistoryPage,\n BillingSubscriptionHistoryParams,\n BillingSubscriptionPage,\n BillingSubscriptionRead,\n BillingTransactionPage,\n BillingTransactionRead,\n PromotionCapacityRead,\n PromotionCodeListRead,\n PromotionCodeRead,\n PromotionCreatedRead,\n PromotionExportRead,\n PromotionExportWrite,\n PromotionGeneratorPage,\n PromotionGeneratorRead,\n PromotionGeneratorWrite,\n PromotionPage,\n PromotionRedeemWrite,\n PromotionRedemptionHistoryPage,\n PromotionRedemptionRead,\n PromotionRevealWrite,\n PromotionWrite\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getBillingCreateProductUrl = (catalogueId: number,) => {\n\n\n\n\n return `/billing/catalogues/${catalogueId}/products`\n}\n\n/**\n * A global commercial operator creates an offer and its server-owned net price/tax. New offers default to inactive. Fixed offers need accessMonths or an institutional template; recurring offers cannot use a template. Retention offers require the customer's dated agreement. Requires high-assurance authentication.\n * @summary Create a catalogue billing offer\n */\nexport const billingCreateProduct = async (catalogueId: number,\n billingProductWrite: BillingProductWrite, options?: Parameters<typeof request>[1]): Promise<BillingProductRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<BillingProductRead>(getBillingCreateProductUrl(catalogueId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingProductWrite)\n }\n);}\n\n\nexport const getBillingGeneratePromotionsUrl = (catalogueId: number,) => {\n\n\n\n\n return `/billing/catalogues/${catalogueId}/promotion-batches`\n}\n\n/**\n * Create 1–500 independent rules and encrypted distribution codes atomically from one reviewed template. Each code is the optional prefix followed by 20 unambiguous characters; rule.code must be null. rule.quantity is stock per generated rule, not the number of codes. Requires global commercial authority. Requires high-assurance authentication.\n * @summary Generate a bounded promotion-code batch\n */\nexport const billingGeneratePromotions = async (catalogueId: number,\n promotionGeneratorWrite: PromotionGeneratorWrite, options?: Parameters<typeof request>[1]): Promise<PromotionCodeListRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<PromotionCodeListRead>(getBillingGeneratePromotionsUrl(catalogueId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(promotionGeneratorWrite)\n }\n);}\n\n\nexport const getBillingPromotionGeneratorsUrl = (catalogueId: number,\n params?: BillingPromotionGeneratorsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/billing/catalogues/${catalogueId}/promotion-generators?${stringifiedParams}` : `/billing/catalogues/${catalogueId}/promotion-generators`\n}\n\n/**\n * Global commercial operators list safe generator definitions, newest first. Includes historical sourceMask and partial rule fields when known; codes and private source metadata require a separate audited export.\n * @summary List catalogue promotion generators\n */\nexport const billingPromotionGenerators = async (catalogueId: number,\n params?: BillingPromotionGeneratorsParams, options?: Parameters<typeof request>[1]): Promise<PromotionGeneratorPage> => {\n\n return request<PromotionGeneratorPage>(getBillingPromotionGeneratorsUrl(catalogueId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingListPromotionsUrl = (catalogueId: number,\n params?: BillingListPromotionsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/billing/catalogues/${catalogueId}/promotions?${stringifiedParams}` : `/billing/catalogues/${catalogueId}/promotions`\n}\n\n/**\n * Catalogue finance operators list rule metadata, including inactive rules, ordered by promotion ID. Codes are deliberately omitted; explicit audited reveal or export is required to distribute codes.\n * @summary List catalogue promotion rules\n */\nexport const billingListPromotions = async (catalogueId: number,\n params?: BillingListPromotionsParams, options?: Parameters<typeof request>[1]): Promise<PromotionPage> => {\n\n return request<PromotionPage>(getBillingListPromotionsUrl(catalogueId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingCreatePromotionUrl = (catalogueId: number,) => {\n\n\n\n\n return `/billing/catalogues/${catalogueId}/promotions`\n}\n\n/**\n * A global commercial operator creates bounded promotion stock for a catalogue. Discounts apply to explicit checkouts; benefits without payment-method requirements can be redeemed directly. Null code generates three groups of six unambiguous characters. Explicit codes retain their display form; lookup uses NFKC, trim and casefold normalization. Targets must belong to the catalogue. Requires high-assurance authentication.\n * @summary Create a discount or access benefit\n */\nexport const billingCreatePromotion = async (catalogueId: number,\n promotionWrite: PromotionWrite, options?: Parameters<typeof request>[1]): Promise<PromotionCreatedRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<PromotionCreatedRead>(getBillingCreatePromotionUrl(catalogueId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(promotionWrite)\n }\n);}\n\n\nexport const getBillingExportPromotionCodesUrl = (catalogueId: number,) => {\n\n\n\n\n return `/billing/catalogues/${catalogueId}/promotions/export`\n}\n\n/**\n * Global commercial operators decrypt selected catalogue codes in one audited transaction. Supply unique promotionIds and a reason; all IDs must belong to the selected catalogue or the entire export is refused. The JSON data is ordered by promotion ID. Responses are private, no-store. Requires high-assurance authentication.\n * @summary Export selected promotion codes with an audit reason\n */\nexport const billingExportPromotionCodes = async (catalogueId: number,\n promotionExportWrite: PromotionExportWrite, options?: Parameters<typeof request>[1]): Promise<PromotionExportRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<PromotionExportRead>(getBillingExportPromotionCodesUrl(catalogueId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(promotionExportWrite)\n }\n);}\n\n\nexport const getBillingQuoteCheckoutUrl = () => {\n\n\n\n\n return `/billing/checkouts`\n}\n\n/**\n * Freeze server-priced purchase and renewal terms for 15 minutes and reserve promotion stock. Reuse requestKey with the same product and normalized promotion set to retrieve the same checkout; changing either under the same key returns 409. No payment is submitted by quoting. Display recurring, renewalAmount and expiresAt before obtaining consent. A fully discounted offer without a required payment method can become fixed access without renewal. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Quote a personal checkout\n */\nexport const billingQuoteCheckout = async (billingQuoteWrite: BillingQuoteWrite, options?: Parameters<typeof request>[1]): Promise<BillingCheckoutRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<BillingCheckoutRead>(getBillingQuoteCheckoutUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingQuoteWrite)\n }\n);}\n\n\nexport const getBillingReadCheckoutUrl = (checkoutId: number,) => {\n\n\n\n\n return `/billing/checkouts/${checkoutId}`\n}\n\n/**\n * Return persisted quote and outcome without contacting the payment provider. A submitting or unknown checkout requires the explicit reconcile operation; reading it does not retry payment. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached.\n * @summary Read the current profile's checkout\n */\nexport const billingReadCheckout = async (checkoutId: number, options?: Parameters<typeof request>[1]): Promise<BillingCheckoutRead> => {\n\n return request<BillingCheckoutRead>(getBillingReadCheckoutUrl(checkoutId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingReconcileCheckoutUrl = (checkoutId: number,) => {\n\n\n\n\n return `/billing/checkouts/${checkoutId}/reconcile`\n}\n\n/**\n * Look up provider evidence using the checkout's existing operation identity and complete the same purchase when a matching receipt is found. This never resubmits payment. An absent receipt leaves the checkout submitting or unknown; terminal and quoted states are returned unchanged. Environment and quote integrity must match before access can be granted. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Reconcile an uncertain checkout\n */\nexport const billingReconcileCheckout = async (checkoutId: number, options?: Parameters<typeof request>[1]): Promise<BillingCheckoutRead> => {\n\n return request<BillingCheckoutRead>(getBillingReconcileCheckoutUrl(checkoutId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getBillingSubmitCheckoutUrl = (checkoutId: number,) => {\n\n\n\n\n return `/billing/checkouts/${checkoutId}/submit`\n}\n\n/**\n * Submit the owned quote with acceptedTerms=true and a single-use provider nonce when payment or renewal requires it. Completed, submitting and unknown checkouts are returned without another charge. HTTP 200 alone does not mean payment succeeded: complete confirms the receipt, failed records a refusal, and unknown preserves an ambiguous provider outcome. Reconcile the same checkout after uncertainty; do not create a replacement payment. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Submit an accepted checkout\n */\nexport const billingSubmitCheckout = async (checkoutId: number,\n billingCheckoutSubmitWrite: BillingCheckoutSubmitWrite, options?: Parameters<typeof request>[1]): Promise<BillingCheckoutRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<BillingCheckoutRead>(getBillingSubmitCheckoutUrl(checkoutId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingCheckoutSubmitWrite)\n }\n);}\n\n\nexport const getBillingCreateClientTokenUrl = () => {\n\n\n\n\n return `/billing/client-token`\n}\n\n/**\n * Obtain a Braintree client token for an owned, unexpired quoted checkout in the current environment. Pass it to the provider SDK to collect a single-use paymentMethodNonce, then submit the checkout. The token is sensitive and must not be logged or persisted in client analytics. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Create a checkout payment client token\n */\nexport const billingCreateClientToken = async (billingClientTokenWrite: BillingClientTokenWrite, options?: Parameters<typeof request>[1]): Promise<BillingClientTokenRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<BillingClientTokenRead>(getBillingCreateClientTokenUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingClientTokenWrite)\n }\n);}\n\n\nexport const getBillingPrepareIdentityUrl = () => {\n\n\n\n\n return `/billing/identity`\n}\n\n/**\n * Return or create the stable server-issued billing subject for the selected provider in the configured environment. Supply this subject to the mobile billing SDK; never substitute a profile ID or email. This explicit request does not grant course access or charge a payment method. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Prepare the current profile's billing identity\n */\nexport const billingPrepareIdentity = async (billingIdentityWrite: BillingIdentityWrite, options?: Parameters<typeof request>[1]): Promise<BillingIdentityRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<BillingIdentityRead>(getBillingPrepareIdentityUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingIdentityWrite)\n }\n);}\n\n\nexport const getBillingListProductsUrl = (params?: BillingListProductsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/billing/products?${stringifiedParams}` : `/billing/products`\n}\n\n/**\n * List active offers visible to the profile, with server-calculated tax-inclusive prices. Retention offers appear only within seven days of their exact institution agreement's end. checkoutAvailable reflects configured web payment capability; providerProducts identifies active mappings in the current billing environment. Listing never starts a purchase. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached.\n * @summary List personal purchase offers\n */\nexport const billingListProducts = async (params?: BillingListProductsParams, options?: Parameters<typeof request>[1]): Promise<BillingProductPage> => {\n\n return request<BillingProductPage>(getBillingListProductsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingSetOfferAvailabilityUrl = (productId: number,) => {\n\n\n\n\n return `/billing/products/${productId}/availability`\n}\n\n/**\n * Set offer availability after commercial review and record the reason in the audit trail. Requires catalogue finance and global commercial authority. Returns 204 with no response body. Requires high-assurance authentication.\n * @summary Activate or withdraw an offer\n */\nexport const billingSetOfferAvailability = async (productId: number,\n billingProductAvailabilityWrite: BillingProductAvailabilityWrite, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<void>(getBillingSetOfferAvailabilityUrl(productId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingProductAvailabilityWrite)\n }\n);}\n\n\nexport const getBillingBindProviderProductUrl = (productId: number,) => {\n\n\n\n\n return `/billing/products/${productId}/provider`\n}\n\n/**\n * Catalogue finance operators associate an offer with an exact provider product and sandbox or production environment. A provider/environment/product identifier cannot be shared by different offers. Store products must be public recurring offers. Returns 204 with no response body. Requires high-assurance authentication.\n * @summary Bind an offer to a provider product\n */\nexport const billingBindProviderProduct = async (productId: number,\n billingProviderProductWrite: BillingProviderProductWrite, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<void>(getBillingBindProviderProductUrl(productId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingProviderProductWrite)\n }\n);}\n\n\nexport const getBillingPromotionGeneratorUrl = (generatorId: number,) => {\n\n\n\n\n return `/billing/promotion-generators/${generatorId}`\n}\n\n/**\n * Return a safe definition to a global commercial operator. batchSize counts generated codes while rule.quantity describes permitted uses of each code. Historical missing rule values stay null.\n * @summary Read a promotion generator definition\n */\nexport const billingPromotionGenerator = async (generatorId: number, options?: Parameters<typeof request>[1]): Promise<PromotionGeneratorRead> => {\n\n return request<PromotionGeneratorRead>(getBillingPromotionGeneratorUrl(generatorId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingRedeemPromotionUrl = () => {\n\n\n\n\n return `/billing/promotions/redeem`\n}\n\n/**\n * Redeem a usable benefit code that does not require a payment method, atomically consuming stock and creating personal access through shared contracts. Discounts use checkout instead. Reusing requestKey for the same promotion returns the previous redemption; reuse for another code returns 409. Case/Unicode-normalized lookup, per-user stock and access-window limits apply. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Redeem an access benefit for the current profile\n */\nexport const billingRedeemPromotion = async (promotionRedeemWrite: PromotionRedeemWrite, options?: Parameters<typeof request>[1]): Promise<PromotionRedemptionRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<PromotionRedemptionRead>(getBillingRedeemPromotionUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(promotionRedeemWrite)\n }\n);}\n\n\nexport const getBillingPromotionCapacityUrl = (promotionId: number,) => {\n\n\n\n\n return `/billing/promotions/${promotionId}/capacity`\n}\n\n/**\n * Global commercial operators inspect total and per-user limits, redeemed stock and live reservations. Submitting or unknown checkouts keep reservations even after quote expiry. remaining is max(0, quantity - redeemed - reserved); a positive count alone does not prove a rule is active or usable.\n * @summary Inspect promotion stock and payment reservations\n */\nexport const billingPromotionCapacity = async (promotionId: number, options?: Parameters<typeof request>[1]): Promise<PromotionCapacityRead> => {\n\n return request<PromotionCapacityRead>(getBillingPromotionCapacityUrl(promotionId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingRevealPromotionCodeUrl = (promotionId: number,) => {\n\n\n\n\n return `/billing/promotions/${promotionId}/code`\n}\n\n/**\n * A catalogue finance operator decrypts one distribution code and records the supplied reason. The response is private, no-store; do not expose it in public reports. Requires high-assurance authentication.\n * @summary Reveal one promotion code with an audit reason\n */\nexport const billingRevealPromotionCode = async (promotionId: number,\n promotionRevealWrite: PromotionRevealWrite, options?: Parameters<typeof request>[1]): Promise<PromotionCodeRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<PromotionCodeRead>(getBillingRevealPromotionCodeUrl(promotionId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(promotionRevealWrite)\n }\n);}\n\n\nexport const getBillingPromotionRedemptionsUrl = (promotionId: number,\n params?: BillingPromotionRedemptionsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/billing/promotions/${promotionId}/redemptions?${stringifiedParams}` : `/billing/promotions/${promotionId}/redemptions`\n}\n\n/**\n * Global commercial operators list a promotion's native and imported redemptions, newest first. Historical beneficiary, contract, transaction, discount and time references can be null; do not infer a payment from a redemption. Codes and raw source identifiers are omitted.\n * @summary List promotion redemption evidence\n */\nexport const billingPromotionRedemptions = async (promotionId: number,\n params?: BillingPromotionRedemptionsParams, options?: Parameters<typeof request>[1]): Promise<PromotionRedemptionHistoryPage> => {\n\n return request<PromotionRedemptionHistoryPage>(getBillingPromotionRedemptionsUrl(promotionId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingRestoreStorePurchasesUrl = () => {\n\n\n\n\n return `/billing/store/restore`\n}\n\n/**\n * Fetch RevenueCat evidence for the server-issued billing subject and reconcile supported store receipts in the current environment with active provider mappings. Receipts belonging to another profile are refused. Unknown receipt price, tax or renewal values stay unknown. The returned page contains restored subscriptions and can be empty; there is no client-supplied receipt-owner ID. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Restore the current profile's mobile purchases\n */\nexport const billingRestoreStorePurchases = async (billingIdentityWrite: BillingIdentityWrite, options?: Parameters<typeof request>[1]): Promise<BillingSubscriptionPage> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<BillingSubscriptionPage>(getBillingRestoreStorePurchasesUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingIdentityWrite)\n }\n);}\n\n\nexport const getBillingListSubscriptionsUrl = (params?: BillingListSubscriptionsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/billing/subscriptions?${stringifiedParams}` : `/billing/subscriptions`\n}\n\n/**\n * List local subscription projections, newest first. No provider refresh occurs. autoRenew=null means renewal is unknown, and unknown historical price/currency remain null; use explicit reconciliation or store restoration to obtain current evidence. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached.\n * @summary List the current profile's subscriptions\n */\nexport const billingListSubscriptions = async (params?: BillingListSubscriptionsParams, options?: Parameters<typeof request>[1]): Promise<BillingSubscriptionPage> => {\n\n return request<BillingSubscriptionPage>(getBillingListSubscriptionsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingReadSubscriptionUrl = (subscriptionId: number,) => {\n\n\n\n\n return `/billing/subscriptions/${subscriptionId}`\n}\n\n/**\n * Read the local subscription and its known access, price and renewal terms. managementUrl is provided for mobile store subscriptions. This GET neither refreshes receipts nor changes renewal. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached.\n * @summary Read the current profile's subscription\n */\nexport const billingReadSubscription = async (subscriptionId: number, options?: Parameters<typeof request>[1]): Promise<BillingSubscriptionRead> => {\n\n return request<BillingSubscriptionRead>(getBillingReadSubscriptionUrl(subscriptionId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingCancelSubscriptionUrl = (subscriptionId: number,) => {\n\n\n\n\n return `/billing/subscriptions/${subscriptionId}/cancel`\n}\n\n/**\n * Cancel Braintree renewal and project the provider-confirmed access end, or cancel a local fixed subscription. Existing paid access follows the confirmed period. Optional feedback is stored separately. Mobile store renewal must be managed through managementUrl; this operation returns 409 for stores. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Cancel a personal subscription's renewal\n */\nexport const billingCancelSubscription = async (subscriptionId: number,\n billingCancelWrite: BillingCancelWrite, options?: Parameters<typeof request>[1]): Promise<BillingSubscriptionRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<BillingSubscriptionRead>(getBillingCancelSubscriptionUrl(subscriptionId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingCancelWrite)\n }\n);}\n\n\nexport const getBillingCancellationFeedbackUrl = (subscriptionId: number,\n params?: BillingCancellationFeedbackParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/billing/subscriptions/${subscriptionId}/cancellation-feedback?${stringifiedParams}` : `/billing/subscriptions/${subscriptionId}/cancellation-feedback`\n}\n\n/**\n * List only this profile's recorded cancellation feedback for the owned subscription, newest first. Missing historical answers and dates stay null. Feedback is not evidence of current provider renewal state. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached.\n * @summary List an owned subscription's cancellation feedback\n */\nexport const billingCancellationFeedback = async (subscriptionId: number,\n params?: BillingCancellationFeedbackParams, options?: Parameters<typeof request>[1]): Promise<BillingCancellationFeedbackPage> => {\n\n return request<BillingCancellationFeedbackPage>(getBillingCancellationFeedbackUrl(subscriptionId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingSubscriptionClientTokenUrl = (subscriptionId: number,) => {\n\n\n\n\n return `/billing/subscriptions/${subscriptionId}/client-token`\n}\n\n/**\n * Initialize payment-method collection for an owned Braintree subscription whose renewal is confirmed active. Unknown renewal must be reconciled first; store and nonrenewing subscriptions are not editable here. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Create a subscription payment-method token\n */\nexport const billingSubscriptionClientToken = async (subscriptionId: number, options?: Parameters<typeof request>[1]): Promise<BillingClientTokenRead> => {\n\n return request<BillingClientTokenRead>(getBillingSubscriptionClientTokenUrl(subscriptionId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getBillingSubscriptionHistoryUrl = (subscriptionId: number,\n params?: BillingSubscriptionHistoryParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/billing/subscriptions/${subscriptionId}/history?${stringifiedParams}` : `/billing/subscriptions/${subscriptionId}/history`\n}\n\n/**\n * List preserved subscription events, newest local identifier first. Source status and transactionType are evidence labels, not current renewal guarantees. Unknown source times remain null with clockBasis; amount may also be null and this projection does not supply a currency. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached.\n * @summary List an owned subscription's source events\n */\nexport const billingSubscriptionHistory = async (subscriptionId: number,\n params?: BillingSubscriptionHistoryParams, options?: Parameters<typeof request>[1]): Promise<BillingSubscriptionHistoryPage> => {\n\n return request<BillingSubscriptionHistoryPage>(getBillingSubscriptionHistoryUrl(subscriptionId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingUpdatePaymentMethodUrl = (subscriptionId: number,) => {\n\n\n\n\n return `/billing/subscriptions/${subscriptionId}/payment-method`\n}\n\n/**\n * Use a new provider SDK nonce to update the current profile's renewing Braintree subscription and apply the returned receipt. acceptedOutstandingBalance explicitly allows collection of an outstanding balance; it defaults to false. Store subscriptions use their original provider. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Update a renewing subscription's payment method\n */\nexport const billingUpdatePaymentMethod = async (subscriptionId: number,\n billingPaymentMethodWrite: BillingPaymentMethodWrite, options?: Parameters<typeof request>[1]): Promise<BillingSubscriptionRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<BillingSubscriptionRead>(getBillingUpdatePaymentMethodUrl(subscriptionId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(billingPaymentMethodWrite)\n }\n);}\n\n\nexport const getBillingReconcileSubscriptionUrl = (subscriptionId: number,) => {\n\n\n\n\n return `/billing/subscriptions/${subscriptionId}/reconcile`\n}\n\n/**\n * Read the existing Braintree subscription, refresh authoritative renewal/access terms and project shared contract access. The existing provider identity and current billing environment must match. Use store restoration for App Store and Play Store subscriptions. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached. Requires high-assurance authentication.\n * @summary Refresh a Braintree subscription from its receipt\n */\nexport const billingReconcileSubscription = async (subscriptionId: number, options?: Parameters<typeof request>[1]): Promise<BillingSubscriptionRead> => {\n\n return request<BillingSubscriptionRead>(getBillingReconcileSubscriptionUrl(subscriptionId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getBillingListTransactionsUrl = (params?: BillingListTransactionsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/billing/transactions?${stringifiedParams}` : `/billing/transactions`\n}\n\n/**\n * List private native and imported transactions, newest local identifier first. Historical timestamps, money and currency remain null when unverified. amountBasis distinguishes verified_receipt, historical_provider_evidence and unknown. listedAmountBeforeDiscount and calculatedAmountAfterDiscount preserve source arithmetic; they must not be presented as confirmed paid amounts. clockBasis describes time evidence. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached.\n * @summary List the current profile's payment history\n */\nexport const billingListTransactions = async (params?: BillingListTransactionsParams, options?: Parameters<typeof request>[1]): Promise<BillingTransactionPage> => {\n\n return request<BillingTransactionPage>(getBillingListTransactionsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getBillingReadTransactionUrl = (transactionId: number,) => {\n\n\n\n\n return `/billing/transactions/${transactionId}`\n}\n\n/**\n * Return one transaction belonging to the authenticated profile. Historical timestamps, money and currency remain null when unverified. amountBasis distinguishes verified_receipt, historical_provider_evidence and unknown. listedAmountBeforeDiscount and calculatedAmountAfterDiscount preserve source arithmetic; they must not be presented as confirmed paid amounts. clockBasis describes time evidence. Uses the authenticated independent profile in the Biblio product context; support impersonation is refused. Responses are private and must not be cached.\n * @summary Read an owned transaction's payment evidence\n */\nexport const billingReadTransaction = async (transactionId: number, options?: Parameters<typeof request>[1]): Promise<BillingTransactionRead> => {\n\n return request<BillingTransactionRead>(getBillingReadTransactionUrl(transactionId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
 
2
- import { Ac as ContentRead, At as ReadCatalogThemeParams, Cr as ListContentsParams, Dr as LikeRead, Ln as PackDetailRead, Lr as LearningPathDetailRead, Sr as ListEditorsParams, Wi as EditorListRead, Zc as CatalogRead, ft as RecommendationsRead, jc as ContentPage, jt as ReadCatalogParams, kt as ReadEditorParams, pt as ReadRecommendationsParams, qi as EditorDetailRead, vt as ReadPackParams } from "../chunks/index.js";
2
+ import { Ap as ContentRead, Kr as ListEditorsParams, Mp as ContentPage, Mt as ReadCatalogThemeParams, Nt as ReadCatalogParams, Xc as EditorDetailRead, Zr as LikeRead, bt as ReadPackParams, em as CatalogRead, ht as ReadRecommendationsParams, jt as ReadEditorParams, mt as RecommendationsRead, qc as EditorListRead, qr as ListContentsParams, sr as PackDetailRead, va as LearningPathDetailRead } from "../chunks/index.js";
3
3
  import { c as request } from "../chunks/client.js";
4
4
  //#region src/api/biblio-catalogue/biblio-catalogue.d.ts
5
5
  export declare const getListContentsUrl: (params?: ListContentsParams) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"biblio-catalogue.js","names":[],"sources":["../../src/api/biblio-catalogue/biblio-catalogue.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n CatalogRead,\n ContentPage,\n ContentRead,\n EditorDetailRead,\n EditorListRead,\n LearningPathDetailRead,\n LikeRead,\n ListContentsParams,\n ListEditorsParams,\n PackDetailRead,\n ReadCatalogParams,\n ReadCatalogThemeParams,\n ReadEditorParams,\n ReadPackParams,\n ReadRecommendationsParams,\n RecommendationsRead\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListContentsUrl = (params?: ListContentsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/contents?${stringifiedParams}` : `/biblio/contents`\n}\n\n/**\n * Paginated Biblio content by category kind, with rights applied in SQL.\n *\n * ``kind=press`` maps to the internal press content type automatically. Use\n * /press-titles for publication grouping and /partners/{provider}/media for\n * the separately stored Nextory/YouScribe catalogue.\n * @summary List Contents\n */\nexport const listContents = async (params?: ListContentsParams, options?: Parameters<typeof request>[1]): Promise<ContentPage> => {\n\n return request<ContentPage>(getListContentsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadContentUrl = (contentId: number,) => {\n\n\n\n\n return `/biblio/contents/${contentId}`\n}\n\n/**\n * One content item, with this caller's own state on it (E34).\n *\n * ``liked`` and ``favorited`` are why this is not just the summary shape: they\n * are per-caller and therefore uncacheable across users, which is worth knowing\n * before anyone puts a shared cache in front of it.\n * @summary Read Content\n */\nexport const readContent = async (contentId: number, options?: Parameters<typeof request>[1]): Promise<ContentRead> => {\n\n return request<ContentRead>(getReadContentUrl(contentId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getUnlikeContentUrl = (contentId: number,) => {\n\n\n\n\n return `/biblio/contents/${contentId}/like`\n}\n\n/**\n * Withdraw a like (E37). Idempotent — not liked is already the desired state.\n * @summary Unlike Content\n */\nexport const unlikeContent = async (contentId: number, options?: Parameters<typeof request>[1]): Promise<LikeRead> => {\n\n return request<LikeRead>(getUnlikeContentUrl(contentId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getLikeContentUrl = (contentId: number,) => {\n\n\n\n\n return `/biblio/contents/${contentId}/like`\n}\n\n/**\n * Record a like (E36). Idempotent.\n *\n * This and :func:`unlike_content` replace one non-idempotent\n * ``POST /content/{id}/toggle-like``. A retried toggle reverses the user's\n * intent; a repeated ``PUT`` cannot (§4, consequence 3).\n *\n * ``like_count`` is recomputed from ``content_rating`` rather than incremented,\n * because an increment beside an upsert double-counts the second time the same\n * person likes the same thing.\n * @summary Like Content\n */\nexport const likeContent = async (contentId: number, options?: Parameters<typeof request>[1]): Promise<LikeRead> => {\n\n return request<LikeRead>(getLikeContentUrl(contentId),\n {\n ...options,\n method: 'PUT'\n\n\n }\n);}\n\n\nexport const getReadRecommendationsUrl = (contentId: number,\n params?: ReadRecommendationsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/contents/${contentId}/recommendations?${stringifiedParams}` : `/biblio/contents/${contentId}/recommendations`\n}\n\n/**\n * Related content the caller can also reach (E35).\n *\n * Recommending something the account cannot open is worse than recommending\n * nothing, so the candidate set is entitlement-filtered before ranking rather\n * than after — filtering afterwards silently shortens the list instead.\n *\n * Keyword overlap for now, over the GIN index on ``content.keywords``.\n * @summary Read Recommendations\n */\nexport const readRecommendations = async (contentId: number,\n params?: ReadRecommendationsParams, options?: Parameters<typeof request>[1]): Promise<RecommendationsRead> => {\n\n return request<RecommendationsRead>(getReadRecommendationsUrl(contentId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListEditorsUrl = (params?: ListEditorsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/editors?${stringifiedParams}` : `/biblio/editors`\n}\n\n/**\n * Active editors (E44).\n *\n * ``order`` and ``sort`` are resolved against a whitelist and never\n * interpolated. The legacy passed both straight to the query layer (defect\n * D17); an unrecognised value is ``422`` rather than a surprise ordering.\n *\n * The collection is not wrapped in a single-element array. The legacy\n * ``GET /api/v1/editors/`` was (§2.1).\n *\n * Authenticated even though the answer does not depend on who is asking. Which\n * publishers a platform carries is commercial information, and an endpoint that\n * enumerates them for anyone is a competitor's first request. The sibling\n * ``/editors/{id}`` was already authenticated; this one was not, which is how\n * the inconsistency was found.\n * @summary List Editors\n */\nexport const listEditors = async (params?: ListEditorsParams, options?: Parameters<typeof request>[1]): Promise<EditorListRead> => {\n\n return request<EditorListRead>(getListEditorsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadEditorUrl = (editorId: number,\n params?: ReadEditorParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/editors/${editorId}?${stringifiedParams}` : `/biblio/editors/${editorId}`\n}\n\n/**\n * One editor and the content of theirs this caller can reach (E45).\n *\n * One endpoint replaces two — a page and a JSON route that used ``pageSize``\n * instead of ``limit`` and wrapped the object in an array. Same entity, two\n * conventions, one codebase (§4, consequence 5).\n * @summary Read Editor\n */\nexport const readEditor = async (editorId: number,\n params?: ReadEditorParams, options?: Parameters<typeof request>[1]): Promise<EditorDetailRead> => {\n\n return request<EditorDetailRead>(getReadEditorUrl(editorId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadLearningPathUrl = (learningPathId: number,) => {\n\n\n\n\n return `/biblio/learning-paths/${learningPathId}`\n}\n\n/**\n * A ``parcours`` and the content it walks through, in order.\n *\n * The other end of the ``parcours`` array on a pack, which named paths a client\n * then had no way to open.\n *\n * Steps the caller is not entitled to are **dropped, not hidden behind a\n * padlock**: the same category test every listing uses decides what appears, so\n * a path cannot become a way to learn that an item exists. That does mean a\n * path can come back with fewer steps than the library curated, and with gaps\n * in ``stepOrder`` — which is why the order is a field rather than the array\n * index.\n *\n * An inactive path is ``404`` rather than an empty one: it was withdrawn, and\n * an empty sequence would read as \"we have nothing for you\" instead.\n * @summary Read Learning Path\n */\nexport const readLearningPath = async (learningPathId: number, options?: Parameters<typeof request>[1]): Promise<LearningPathDetailRead> => {\n\n return request<LearningPathDetailRead>(getReadLearningPathUrl(learningPathId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadPackUrl = (packId: number,\n params?: ReadPackParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/packs/${packId}?${stringifiedParams}` : `/biblio/packs/${packId}`\n}\n\n/**\n * A pack with its catalogs, latest additions and learning paths (E38).\n *\n * ``canonical`` is how the redirect dies. When a pack resolves to a single\n * catalog the legacy answered ``302``; here the response is ``200`` and\n * ``canonical`` names the resolved catalog, leaving the client to decide whether\n * to follow it (§5.1).\n *\n * A pack the caller has no entitlement to is ``404``. The legacy dereferenced\n * ``null`` and returned ``500`` (defect D12).\n * @summary Read Pack\n */\nexport const readPack = async (packId: number,\n params?: ReadPackParams, options?: Parameters<typeof request>[1]): Promise<PackDetailRead> => {\n\n return request<PackDetailRead>(getReadPackUrl(packId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadCatalogUrl = (packId: number,\n catalogId: number,\n params?: ReadCatalogParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/packs/${packId}/catalogs/${catalogId}?${stringifiedParams}` : `/biblio/packs/${packId}/catalogs/${catalogId}`\n}\n\n/**\n * One catalog inside a pack (E39).\n * @summary Read Catalog\n */\nexport const readCatalog = async (packId: number,\n catalogId: number,\n params?: ReadCatalogParams, options?: Parameters<typeof request>[1]): Promise<CatalogRead> => {\n\n return request<CatalogRead>(getReadCatalogUrl(packId,catalogId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadCatalogThemeUrl = (packId: number,\n catalogId: number,\n themeId: number,\n params?: ReadCatalogThemeParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/packs/${packId}/catalogs/${catalogId}/themes/${themeId}?${stringifiedParams}` : `/biblio/packs/${packId}/catalogs/${catalogId}/themes/${themeId}`\n}\n\n/**\n * The same catalog, narrowed to one theme (E40).\n * @summary Read Catalog Theme\n */\nexport const readCatalogTheme = async (packId: number,\n catalogId: number,\n themeId: number,\n params?: ReadCatalogThemeParams, options?: Parameters<typeof request>[1]): Promise<CatalogRead> => {\n\n return request<CatalogRead>(getReadCatalogThemeUrl(packId,catalogId,themeId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"biblio-catalogue.js","names":[],"sources":["../../src/api/biblio-catalogue/biblio-catalogue.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.13.0\n */\nimport type {\n CatalogRead,\n ContentPage,\n ContentRead,\n EditorDetailRead,\n EditorListRead,\n LearningPathDetailRead,\n LikeRead,\n ListContentsParams,\n ListEditorsParams,\n PackDetailRead,\n ReadCatalogParams,\n ReadCatalogThemeParams,\n ReadEditorParams,\n ReadPackParams,\n ReadRecommendationsParams,\n RecommendationsRead\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListContentsUrl = (params?: ListContentsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/contents?${stringifiedParams}` : `/biblio/contents`\n}\n\n/**\n * Paginated Biblio content by category kind, with rights applied in SQL.\n *\n * ``kind=press`` maps to the internal press content type automatically. Use\n * /press-titles for publication grouping and /partners/{provider}/media for\n * the separately stored Nextory/YouScribe catalogue.\n * @summary List Contents\n */\nexport const listContents = async (params?: ListContentsParams, options?: Parameters<typeof request>[1]): Promise<ContentPage> => {\n\n return request<ContentPage>(getListContentsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadContentUrl = (contentId: number,) => {\n\n\n\n\n return `/biblio/contents/${contentId}`\n}\n\n/**\n * One content item, with this caller's own state on it (E34).\n *\n * ``liked`` and ``favorited`` are why this is not just the summary shape: they\n * are per-caller and therefore uncacheable across users, which is worth knowing\n * before anyone puts a shared cache in front of it.\n * @summary Read Content\n */\nexport const readContent = async (contentId: number, options?: Parameters<typeof request>[1]): Promise<ContentRead> => {\n\n return request<ContentRead>(getReadContentUrl(contentId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getUnlikeContentUrl = (contentId: number,) => {\n\n\n\n\n return `/biblio/contents/${contentId}/like`\n}\n\n/**\n * Withdraw a like (E37). Idempotent — not liked is already the desired state.\n * @summary Unlike Content\n */\nexport const unlikeContent = async (contentId: number, options?: Parameters<typeof request>[1]): Promise<LikeRead> => {\n\n return request<LikeRead>(getUnlikeContentUrl(contentId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getLikeContentUrl = (contentId: number,) => {\n\n\n\n\n return `/biblio/contents/${contentId}/like`\n}\n\n/**\n * Record a like (E36). Idempotent.\n *\n * This and :func:`unlike_content` replace one non-idempotent\n * ``POST /content/{id}/toggle-like``. A retried toggle reverses the user's\n * intent; a repeated ``PUT`` cannot (§4, consequence 3).\n *\n * ``like_count`` is recomputed from ``content_rating`` rather than incremented,\n * because an increment beside an upsert double-counts the second time the same\n * person likes the same thing.\n * @summary Like Content\n */\nexport const likeContent = async (contentId: number, options?: Parameters<typeof request>[1]): Promise<LikeRead> => {\n\n return request<LikeRead>(getLikeContentUrl(contentId),\n {\n ...options,\n method: 'PUT'\n\n\n }\n);}\n\n\nexport const getReadRecommendationsUrl = (contentId: number,\n params?: ReadRecommendationsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/contents/${contentId}/recommendations?${stringifiedParams}` : `/biblio/contents/${contentId}/recommendations`\n}\n\n/**\n * Related content the caller can also reach (E35).\n *\n * Recommending something the account cannot open is worse than recommending\n * nothing, so the candidate set is entitlement-filtered before ranking rather\n * than after — filtering afterwards silently shortens the list instead.\n *\n * Keyword overlap for now, over the GIN index on ``content.keywords``.\n * @summary Read Recommendations\n */\nexport const readRecommendations = async (contentId: number,\n params?: ReadRecommendationsParams, options?: Parameters<typeof request>[1]): Promise<RecommendationsRead> => {\n\n return request<RecommendationsRead>(getReadRecommendationsUrl(contentId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListEditorsUrl = (params?: ListEditorsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/editors?${stringifiedParams}` : `/biblio/editors`\n}\n\n/**\n * Active editors (E44).\n *\n * ``order`` and ``sort`` are resolved against a whitelist and never\n * interpolated. The legacy passed both straight to the query layer (defect\n * D17); an unrecognised value is ``422`` rather than a surprise ordering.\n *\n * The collection is not wrapped in a single-element array. The legacy\n * ``GET /api/v1/editors/`` was (§2.1).\n *\n * Authenticated even though the answer does not depend on who is asking. Which\n * publishers a platform carries is commercial information, and an endpoint that\n * enumerates them for anyone is a competitor's first request. The sibling\n * ``/editors/{id}`` was already authenticated; this one was not, which is how\n * the inconsistency was found.\n * @summary List Editors\n */\nexport const listEditors = async (params?: ListEditorsParams, options?: Parameters<typeof request>[1]): Promise<EditorListRead> => {\n\n return request<EditorListRead>(getListEditorsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadEditorUrl = (editorId: number,\n params?: ReadEditorParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/editors/${editorId}?${stringifiedParams}` : `/biblio/editors/${editorId}`\n}\n\n/**\n * One editor and the content of theirs this caller can reach (E45).\n *\n * One endpoint replaces two — a page and a JSON route that used ``pageSize``\n * instead of ``limit`` and wrapped the object in an array. Same entity, two\n * conventions, one codebase (§4, consequence 5).\n * @summary Read Editor\n */\nexport const readEditor = async (editorId: number,\n params?: ReadEditorParams, options?: Parameters<typeof request>[1]): Promise<EditorDetailRead> => {\n\n return request<EditorDetailRead>(getReadEditorUrl(editorId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadLearningPathUrl = (learningPathId: number,) => {\n\n\n\n\n return `/biblio/learning-paths/${learningPathId}`\n}\n\n/**\n * A ``parcours`` and the content it walks through, in order.\n *\n * The other end of the ``parcours`` array on a pack, which named paths a client\n * then had no way to open.\n *\n * Steps the caller is not entitled to are **dropped, not hidden behind a\n * padlock**: the same category test every listing uses decides what appears, so\n * a path cannot become a way to learn that an item exists. That does mean a\n * path can come back with fewer steps than the library curated, and with gaps\n * in ``stepOrder`` — which is why the order is a field rather than the array\n * index.\n *\n * An inactive path is ``404`` rather than an empty one: it was withdrawn, and\n * an empty sequence would read as \"we have nothing for you\" instead.\n * @summary Read Learning Path\n */\nexport const readLearningPath = async (learningPathId: number, options?: Parameters<typeof request>[1]): Promise<LearningPathDetailRead> => {\n\n return request<LearningPathDetailRead>(getReadLearningPathUrl(learningPathId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadPackUrl = (packId: number,\n params?: ReadPackParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/packs/${packId}?${stringifiedParams}` : `/biblio/packs/${packId}`\n}\n\n/**\n * A pack with its catalogs, latest additions and learning paths (E38).\n *\n * ``canonical`` is how the redirect dies. When a pack resolves to a single\n * catalog the legacy answered ``302``; here the response is ``200`` and\n * ``canonical`` names the resolved catalog, leaving the client to decide whether\n * to follow it (§5.1).\n *\n * A pack the caller has no entitlement to is ``404``. The legacy dereferenced\n * ``null`` and returned ``500`` (defect D12).\n * @summary Read Pack\n */\nexport const readPack = async (packId: number,\n params?: ReadPackParams, options?: Parameters<typeof request>[1]): Promise<PackDetailRead> => {\n\n return request<PackDetailRead>(getReadPackUrl(packId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadCatalogUrl = (packId: number,\n catalogId: number,\n params?: ReadCatalogParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/packs/${packId}/catalogs/${catalogId}?${stringifiedParams}` : `/biblio/packs/${packId}/catalogs/${catalogId}`\n}\n\n/**\n * One catalog inside a pack (E39).\n * @summary Read Catalog\n */\nexport const readCatalog = async (packId: number,\n catalogId: number,\n params?: ReadCatalogParams, options?: Parameters<typeof request>[1]): Promise<CatalogRead> => {\n\n return request<CatalogRead>(getReadCatalogUrl(packId,catalogId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadCatalogThemeUrl = (packId: number,\n catalogId: number,\n themeId: number,\n params?: ReadCatalogThemeParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/packs/${packId}/catalogs/${catalogId}/themes/${themeId}?${stringifiedParams}` : `/biblio/packs/${packId}/catalogs/${catalogId}/themes/${themeId}`\n}\n\n/**\n * The same catalog, narrowed to one theme (E40).\n * @summary Read Catalog Theme\n */\nexport const readCatalogTheme = async (packId: number,\n catalogId: number,\n themeId: number,\n params?: ReadCatalogThemeParams, options?: Parameters<typeof request>[1]): Promise<CatalogRead> => {\n\n return request<CatalogRead>(getReadCatalogThemeUrl(packId,catalogId,themeId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
 
2
- import { Dt as ReadHomeFeedParams, vi as HomeFeedRead } from "../chunks/index.js";
2
+ import { kt as ReadHomeFeedParams, xc as HomeFeedRead } from "../chunks/index.js";
3
3
  import { c as request } from "../chunks/client.js";
4
4
  //#region src/api/biblio-home/biblio-home.d.ts
5
5
  export declare const getReadHomeFeedUrl: (params?: ReadHomeFeedParams) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"biblio-home.js","names":[],"sources":["../../src/api/biblio-home/biblio-home.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n HomeFeedRead,\n ReadHomeFeedParams\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getReadHomeFeedUrl = (params?: ReadHomeFeedParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/home-feed?${stringifiedParams}` : `/biblio/home-feed`\n}\n\n/**\n * Everything the home screen needs, in one call (E48).\n *\n * Each block is built independently and a block that raises is dropped. The\n * caller can tell the difference — an absent key means the section could not be\n * built, an empty list means there was nothing in it — which is more than the\n * legacy offered, where four carousels were hardcoded to empty and looked\n * identical to \"nothing new\".\n *\n * ``kind`` selects a universe before carousel limits and history pagination.\n * Global editorial slides lack a universe classification, so they are only\n * included on the mixed home. Press is included only for mixed/press homes.\n * Partner book feeds remain at the URLs returned in /me/capabilities.\n * @summary Read Home Feed\n */\nexport const readHomeFeed = async (params?: ReadHomeFeedParams, options?: Parameters<typeof request>[1]): Promise<HomeFeedRead> => {\n\n return request<HomeFeedRead>(getReadHomeFeedUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAcA,MAAa,sBAAsB,WAAiC;CAClE,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,qBAAqB,sBAAsB;AACnF;;;;;;;;;;;;;;;;AAiBA,MAAa,eAAe,OAAO,QAA6B,YAAmE;CAEjI,OAAO,QAAsB,mBAAmB,MAAM,GACtD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
1
+ {"version":3,"file":"biblio-home.js","names":[],"sources":["../../src/api/biblio-home/biblio-home.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.13.0\n */\nimport type {\n HomeFeedRead,\n ReadHomeFeedParams\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getReadHomeFeedUrl = (params?: ReadHomeFeedParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/biblio/home-feed?${stringifiedParams}` : `/biblio/home-feed`\n}\n\n/**\n * Everything the home screen needs, in one call (E48).\n *\n * Each block is built independently and a block that raises is dropped. The\n * caller can tell the difference — an absent key means the section could not be\n * built, an empty list means there was nothing in it — which is more than the\n * legacy offered, where four carousels were hardcoded to empty and looked\n * identical to \"nothing new\".\n *\n * ``kind`` selects a universe before carousel limits and history pagination.\n * Global editorial slides lack a universe classification, so they are only\n * included on the mixed home. Press is included only for mixed/press homes.\n * Partner book feeds remain at the URLs returned in /me/capabilities.\n * @summary Read Home Feed\n */\nexport const readHomeFeed = async (params?: ReadHomeFeedParams, options?: Parameters<typeof request>[1]): Promise<HomeFeedRead> => {\n\n return request<HomeFeedRead>(getReadHomeFeedUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAcA,MAAa,sBAAsB,WAAiC;CAClE,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,qBAAqB,sBAAsB;AACnF;;;;;;;;;;;;;;;;AAiBA,MAAa,eAAe,OAAO,QAA6B,YAAmE;CAEjI,OAAO,QAAsB,mBAAmB,MAAM,GACtD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
@@ -0,0 +1,108 @@
1
+
2
+ import { Af as CourseReviewWrite, Co as LearningEditorialMessageRead, Eo as LearningEditorialFragmentDetailRead, Ns as LearningAssetRead, Ra as LearningOwnAuthorProfilesParams, So as LearningEditorialMessagePage, aa as LearningPublicAuthorProfilesParams, as as LearningAuthorRevisionsParams, ci as LearningUploadWrite, cs as LearningAuthorProfilePage, ds as LearningAuthorProfileAdminRead, fs as LearningAuthorMessageWrite, hs as LearningAuthorDefinitionWrite, is as LearningAuthorRevisionUpdateWrite, jp as LearningAuthorProfileRead, ls as LearningAuthorProfileCreateWrite, ms as LearningAuthorFragmentsParams, os as LearningAuthorRevisionPage, ps as LearningAuthorMessagesParams, ss as LearningAuthorRevisionRead, ui as LearningUploadRead, us as LearningAuthorProfileAdminPage, wo as LearningEditorialFragmentPage } from "../chunks/index.js";
3
+ import { c as request } from "../chunks/client.js";
4
+ //#region src/api/biblio-learning-author-profiles/biblio-learning-author-profiles.d.ts
5
+ export declare const getLearningOwnAuthorProfilesUrl: (params?: LearningOwnAuthorProfilesParams) => string;
6
+ /**
7
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Includes inactive drafts and active public profiles, ordered by author ID. An imported active public snapshot may have no native publishedRevisionId; this does not imply that a publication date is known.
8
+ * @summary List author profiles I can manage
9
+ */
10
+ export declare const learningOwnAuthorProfiles: (params?: LearningOwnAuthorProfilesParams, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorProfileAdminPage>;
11
+ export declare const getLearningCreateAuthorProfileUrl: () => string;
12
+ /**
13
+ * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Creates an inactive teaching profile and its initial editable revision. The definition is not public until approved. Omitting authorId creates a new public author identity; binding an existing authorId or another ownerUserId requires global authority. Portrait assets must be eligible images in the chosen catalogue.
14
+ * @summary Create an author profile and its first draft
15
+ */
16
+ export declare const learningCreateAuthorProfile: (learningAuthorProfileCreateWrite: LearningAuthorProfileCreateWrite, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorProfileAdminRead>;
17
+ export declare const getLearningAuthorProfileAdminUrl: (authorId: number) => string;
18
+ /**
19
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Returns ownership and the native published revision pointer without exposing raw provider metadata. authorId is the existing public author identity. A null publishedRevisionId can describe a newly created profile or an imported public snapshot; use isActive and revision history for context.
20
+ * @summary Read an author's private profile metadata
21
+ */
22
+ export declare const learningAuthorProfileAdmin: (authorId: number, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorProfileAdminRead>;
23
+ export declare const getLearningAuthorMessagesUrl: (authorId: number, params?: LearningAuthorMessagesParams) => string;
24
+ /**
25
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by message ID. Includes native profile discussion and matching imported source messages when available. Author messages do not carry courseId or course revisionId. Historical messages can have unknown author attribution or creation date.
26
+ * @summary List private editorial messages for an author
27
+ */
28
+ export declare const learningAuthorMessages: (authorId: number, params?: LearningAuthorMessagesParams, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialMessagePage>;
29
+ export declare const getLearningAddAuthorMessageUrl: (authorId: number) => string;
30
+ /**
31
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Appends a message to the profile's editorial discussion, attributed to the effective profile. The source object fields identify the native LearningAuthorProfile subject; they are not a course revision reference. Messages do not change publication status.
32
+ * @summary Add a private author profile message
33
+ */
34
+ export declare const learningAddAuthorMessage: (authorId: number, learningAuthorMessageWrite: LearningAuthorMessageWrite, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialMessageRead>;
35
+ export declare const getLearningPreviewAuthorPortraitUrl: (authorId: number, assetId: number) => string;
36
+ /**
37
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Returns a delivery descriptor for a candidate image that the caller may use in this profile's catalogue. assetId may refer to a completed private portrait upload or eligible teaching image. Previewing does not publish it; the public portrait remains tied to the current public profile.
38
+ * @summary Preview an eligible private author portrait
39
+ */
40
+ export declare const learningPreviewAuthorPortrait: (authorId: number, assetId: number, options?: Parameters<typeof request>[1]) => Promise<LearningAssetRead>;
41
+ export declare const getLearningAuthorFragmentsUrl: (authorId: number, params?: LearningAuthorFragmentsParams) => string;
42
+ /**
43
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. Returns summaries for the profile's matched source identity, ordered by fragment ID. No source identity match produces an empty collection. Payload bytes are available from the scoped detail endpoint.
44
+ * @summary List an author's imported revision fragments
45
+ */
46
+ export declare const learningAuthorFragments: (authorId: number, params?: LearningAuthorFragmentsParams, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialFragmentPage>;
47
+ export declare const getLearningAuthorFragmentUrl: (authorId: number, fragmentId: number) => string;
48
+ /**
49
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. fragmentId must match the selected author's source identity and catalogue. sourcePayload contains opaque base64-encoded source bytes when retained; inspect them as evidence, never execute or deserialize them as trusted application objects.
50
+ * @summary Read an author's imported revision fragment
51
+ */
52
+ export declare const learningAuthorFragment: (authorId: number, fragmentId: number, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialFragmentDetailRead>;
53
+ export declare const getLearningAuthorRevisionsUrl: (authorId: number, params?: LearningAuthorRevisionsParams) => string;
54
+ /**
55
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by revision ID descending. These are complete native definitions. Partial imported revisions are available separately from revision-fragments and are not promoted into this history. version counts revisions; editVersion counts replacements within a draft.
56
+ * @summary List an author's native editorial revisions
57
+ */
58
+ export declare const learningAuthorRevisions: (authorId: number, params?: LearningAuthorRevisionsParams, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorRevisionPage>;
59
+ export declare const getLearningDraftAuthorRevisionUrl: (authorId: number) => string;
60
+ /**
61
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Creates the next numbered revision from the supplied full definition. No existing draft or submitted revision may be present. Rejected or published definitions remain in history. The public profile stays unchanged until this draft is submitted and approved.
62
+ * @summary Create the next author profile draft
63
+ */
64
+ export declare const learningDraftAuthorRevision: (authorId: number, learningAuthorDefinitionWrite: LearningAuthorDefinitionWrite, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorRevisionRead>;
65
+ export declare const getLearningEditAuthorRevisionUrl: (authorId: number, revisionId: number) => string;
66
+ /**
67
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Replaces the full draft definition and increments editVersion. expectedEditVersion must match the latest response. Only draft status is editable; a rejected profile revision needs a new successor. Neither this edit nor a private portrait preview changes the public profile.
68
+ * @summary Replace an editable author profile draft
69
+ */
70
+ export declare const learningEditAuthorRevision: (authorId: number, revisionId: number, learningAuthorRevisionUpdateWrite: LearningAuthorRevisionUpdateWrite, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorRevisionRead>;
71
+ export declare const getLearningReviewAuthorRevisionUrl: (authorId: number, revisionId: number) => string;
72
+ /**
73
+ * Requires review authority for the author's active catalogue or global authority; ownership alone is insufficient. Only submitted revisions can be reviewed. Approval atomically updates the public identity, biography, portrait and activity flag, and supersedes the previous published revision. Rejection retains the current public profile and stores the review note.
74
+ * @summary Approve or reject an author profile revision
75
+ */
76
+ export declare const learningReviewAuthorRevision: (authorId: number, revisionId: number, courseReviewWrite: CourseReviewWrite, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorRevisionRead>;
77
+ export declare const getLearningSubmitAuthorRevisionUrl: (authorId: number, revisionId: number) => string;
78
+ /**
79
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Only a draft may be submitted. Revalidates the portrait, records submittedAt and freezes editing while awaiting review. The currently public biography and portrait remain in place until approval.
80
+ * @summary Submit an author profile draft for review
81
+ */
82
+ export declare const learningSubmitAuthorRevision: (authorId: number, revisionId: number, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorRevisionRead>;
83
+ export declare const getLearningReserveAuthorPortraitUrl: (authorId: number) => string;
84
+ /**
85
+ * Visible only to the profile owner, a reviewer of its active catalogue, or a global operator. Support impersonation and dependent profiles are rejected. Reserves a PNG or JPEG of at most 10 MiB. Send exactly sizeBytes raw bytes with the declared Content-Type to uploadUrl using method before expiresAt. Reservation alone creates no usable portrait; reference the asset returned after upload completion in an author revision, then submit and approve it to make it public.
86
+ * @summary Reserve a private author portrait upload
87
+ */
88
+ export declare const learningReserveAuthorPortrait: (authorId: number, learningUploadWrite: LearningUploadWrite, options?: Parameters<typeof request>[1]) => Promise<LearningUploadRead>;
89
+ export declare const getLearningPublicAuthorProfilesUrl: (params?: LearningPublicAuthorProfilesParams) => string;
90
+ /**
91
+ * Requires an authenticated effective profile in the learning context. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Lists active profiles in active catalogues, ordered by author ID. Returns the current public projection, including imported public snapshots, with no private ownership, draft or review metadata. portraitUrl is the API locator for a separate media delivery request.
92
+ * @summary List published teaching author profiles
93
+ */
94
+ export declare const learningPublicAuthorProfiles: (params?: LearningPublicAuthorProfilesParams, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorProfilePage>;
95
+ export declare const getLearningPublicAuthorProfileUrl: (authorId: number) => string;
96
+ /**
97
+ * Returns the current public profile to an authenticated effective profile in the learning context. Both the profile and its catalogue must be active. Pending drafts and review notes are private. Follow portraitUrl through the portrait endpoint to obtain a delivery descriptor.
98
+ * @summary Read a published teaching author profile
99
+ */
100
+ export declare const learningPublicAuthorProfile: (authorId: number, options?: Parameters<typeof request>[1]) => Promise<LearningAuthorProfileRead>;
101
+ export declare const getLearningAuthorPortraitUrl: (authorId: number) => string;
102
+ /**
103
+ * Requires an active public author in an active catalogue. Returns a media delivery descriptor for the approved or imported public portrait, not image bytes. Draft portrait assets are accessible only through the private preview endpoint. Delivery URLs may expire and do not disclose storage keys or provider metadata.
104
+ * @summary Get the currently public author portrait
105
+ */
106
+ export declare const learningAuthorPortrait: (authorId: number, options?: Parameters<typeof request>[1]) => Promise<LearningAssetRead>;
107
+ //#endregion
108
+ //# sourceMappingURL=biblio-learning-author-profiles.d.ts.map