@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,483 @@
1
+ "use client";
2
+ import { r as request } from "../chunks/client.js";
3
+ import { useMutation, useQuery } from "@tanstack/react-query";
4
+ //#region src/react/biblio-learning-integrations/biblio-learning-integrations.ts
5
+ /**
6
+ * Generated by orval 🍺
7
+ * Do not edit manually.
8
+ * Mozaik backend
9
+ * 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.
10
+ * OpenAPI spec version: 0.13.0
11
+ */
12
+ const withQueryKey = (query, queryKey) => {
13
+ const result = { queryKey };
14
+ for (const key of Object.keys(query)) {
15
+ if (key === "queryKey") continue;
16
+ Object.defineProperty(result, key, {
17
+ enumerable: true,
18
+ configurable: true,
19
+ get: () => query[key]
20
+ });
21
+ }
22
+ return result;
23
+ };
24
+ const getLearningImportPartnerFeedUrl = (courseId, provider) => {
25
+ return `/learning/author/courses/${courseId}/imports/${provider}`;
26
+ };
27
+ /**
28
+ * Authors import content for an existing course they may edit. Select provider=codes-rousseau for a 17-column semicolon CSV (default skipRows=1, title required); les-bons-profs for JSON section objects encoded in the content string; or loecsen for a 20-column comma CSV (default skipRows=4), reviewed template, languageName, languageCode and templateAudio mappings. Examples set skipRows=0 because they contain data rows only. assetMap translates source references to already imported assets the caller may use. Import validates the entire definition, creates a draft and does not download media, publish the course or provision a provider account. The response describes the new revision; retrieve its author definition to inspect the generated chapters and lessons.
29
+ * @summary Import a partner feed as a native draft revision
30
+ */
31
+ const learningImportPartnerFeed = async (courseId, provider, learningPartnerFeedWrite, options) => {
32
+ const getHeaders = (h) => {
33
+ if (!h) return {};
34
+ if (h instanceof Headers) return Object.fromEntries(h.entries());
35
+ if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
36
+ const headers = {};
37
+ for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
38
+ return headers;
39
+ };
40
+ return request(getLearningImportPartnerFeedUrl(courseId, provider), {
41
+ ...options,
42
+ method: "POST",
43
+ headers: {
44
+ "Content-Type": "application/json",
45
+ ...getHeaders(options?.headers)
46
+ },
47
+ body: JSON.stringify(learningPartnerFeedWrite)
48
+ });
49
+ };
50
+ const getLearningImportPartnerFeedMutationKey = () => ["learningImportPartnerFeed"];
51
+ const getLearningImportPartnerFeedMutationOptions = (options) => {
52
+ const mutationKey = getLearningImportPartnerFeedMutationKey();
53
+ const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
54
+ ...options,
55
+ mutation: {
56
+ ...options.mutation,
57
+ mutationKey
58
+ }
59
+ } : {
60
+ mutation: { mutationKey },
61
+ request: void 0
62
+ };
63
+ const mutationFn = (props) => {
64
+ const { courseId, provider, data } = props ?? {};
65
+ return learningImportPartnerFeed(courseId, provider, data, requestOptions);
66
+ };
67
+ return {
68
+ mutationFn,
69
+ ...mutationOptions
70
+ };
71
+ };
72
+ /**
73
+ * @summary Import a partner feed as a native draft revision
74
+ */
75
+ const useLearningImportPartnerFeed = (options, queryClient) => {
76
+ return useMutation(getLearningImportPartnerFeedMutationOptions(options), queryClient);
77
+ };
78
+ const getLearningDispatchEngagementUrl = (deliveryId) => {
79
+ return `/learning/integrations/braze/deliveries/${deliveryId}/dispatch`;
80
+ };
81
+ /**
82
+ * A global integration operator dispatches the existing pending delivery after checking current consent and earlier deliveries for the same profile. Nonpending rows are returned unchanged. The result can be sent, failed, uncertain or cancelled; HTTP 200 alone does not confirm delivery. A timeout or ambiguous provider acknowledgement becomes uncertain and is never blindly retried. Resolve uncertainty using external evidence before redispatching; newer deliveries wait for earlier unresolved rows.
83
+ * @summary Dispatch one pending Braze delivery
84
+ */
85
+ const learningDispatchEngagement = async (deliveryId, options) => {
86
+ return request(getLearningDispatchEngagementUrl(deliveryId), {
87
+ ...options,
88
+ method: "POST"
89
+ });
90
+ };
91
+ const getLearningDispatchEngagementMutationKey = () => ["learningDispatchEngagement"];
92
+ const getLearningDispatchEngagementMutationOptions = (options) => {
93
+ const mutationKey = getLearningDispatchEngagementMutationKey();
94
+ const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
95
+ ...options,
96
+ mutation: {
97
+ ...options.mutation,
98
+ mutationKey
99
+ }
100
+ } : {
101
+ mutation: { mutationKey },
102
+ request: void 0
103
+ };
104
+ const mutationFn = (props) => {
105
+ const { deliveryId } = props ?? {};
106
+ return learningDispatchEngagement(deliveryId, requestOptions);
107
+ };
108
+ return {
109
+ mutationFn,
110
+ ...mutationOptions
111
+ };
112
+ };
113
+ /**
114
+ * @summary Dispatch one pending Braze delivery
115
+ */
116
+ const useLearningDispatchEngagement = (options, queryClient) => {
117
+ return useMutation(getLearningDispatchEngagementMutationOptions(options), queryClient);
118
+ };
119
+ const getLearningResolveEngagementUrl = (deliveryId) => {
120
+ return `/learning/integrations/braze/deliveries/${deliveryId}/resolve`;
121
+ };
122
+ /**
123
+ * A global integration operator records a reviewed provider outcome for a failed, uncertain or stale sending delivery. confirmed_sent marks it sent and clears stored properties; confirmed_not_sent returns it to pending for a later explicit dispatch. A sending claim younger than 120 seconds cannot be resolved. This operation records evidence and never sends to Braze itself.
124
+ * @summary Resolve an uncertain or failed Braze delivery
125
+ */
126
+ const learningResolveEngagement = async (deliveryId, learningIntegrationResolutionWrite, options) => {
127
+ const getHeaders = (h) => {
128
+ if (!h) return {};
129
+ if (h instanceof Headers) return Object.fromEntries(h.entries());
130
+ if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
131
+ const headers = {};
132
+ for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
133
+ return headers;
134
+ };
135
+ return request(getLearningResolveEngagementUrl(deliveryId), {
136
+ ...options,
137
+ method: "POST",
138
+ headers: {
139
+ "Content-Type": "application/json",
140
+ ...getHeaders(options?.headers)
141
+ },
142
+ body: JSON.stringify(learningIntegrationResolutionWrite)
143
+ });
144
+ };
145
+ const getLearningResolveEngagementMutationKey = () => ["learningResolveEngagement"];
146
+ const getLearningResolveEngagementMutationOptions = (options) => {
147
+ const mutationKey = getLearningResolveEngagementMutationKey();
148
+ const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
149
+ ...options,
150
+ mutation: {
151
+ ...options.mutation,
152
+ mutationKey
153
+ }
154
+ } : {
155
+ mutation: { mutationKey },
156
+ request: void 0
157
+ };
158
+ const mutationFn = (props) => {
159
+ const { deliveryId, data } = props ?? {};
160
+ return learningResolveEngagement(deliveryId, data, requestOptions);
161
+ };
162
+ return {
163
+ mutationFn,
164
+ ...mutationOptions
165
+ };
166
+ };
167
+ /**
168
+ * @summary Resolve an uncertain or failed Braze delivery
169
+ */
170
+ const useLearningResolveEngagement = (options, queryClient) => {
171
+ return useMutation(getLearningResolveEngagementMutationOptions(options), queryClient);
172
+ };
173
+ const getLearningBindSalesforceUrl = (tenantId) => {
174
+ return `/learning/integrations/salesforce/customers/${tenantId}`;
175
+ };
176
+ /**
177
+ * A global commercial operator maps one customer tenant to an exact Salesforce Account, community, catalogue and exclusive institution learning agreement. Repeating the same identity can update isActive and clockZone; moving an already bound identity or agreement returns 409. clockZone is the reviewed IANA source timezone used to interpret source access dates. Support impersonation and dependent profiles are refused. Returns 204 with no response body.
178
+ * @summary Bind a reviewed Salesforce customer identity
179
+ */
180
+ const learningBindSalesforce = async (tenantId, learningSalesforceBindingWrite, options) => {
181
+ const getHeaders = (h) => {
182
+ if (!h) return {};
183
+ if (h instanceof Headers) return Object.fromEntries(h.entries());
184
+ if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
185
+ const headers = {};
186
+ for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
187
+ return headers;
188
+ };
189
+ return request(getLearningBindSalesforceUrl(tenantId), {
190
+ ...options,
191
+ method: "PUT",
192
+ headers: {
193
+ "Content-Type": "application/json",
194
+ ...getHeaders(options?.headers)
195
+ },
196
+ body: JSON.stringify(learningSalesforceBindingWrite)
197
+ });
198
+ };
199
+ const getLearningBindSalesforceMutationKey = () => ["learningBindSalesforce"];
200
+ const getLearningBindSalesforceMutationOptions = (options) => {
201
+ const mutationKey = getLearningBindSalesforceMutationKey();
202
+ const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
203
+ ...options,
204
+ mutation: {
205
+ ...options.mutation,
206
+ mutationKey
207
+ }
208
+ } : {
209
+ mutation: { mutationKey },
210
+ request: void 0
211
+ };
212
+ const mutationFn = (props) => {
213
+ const { tenantId, data } = props ?? {};
214
+ return learningBindSalesforce(tenantId, data, requestOptions);
215
+ };
216
+ return {
217
+ mutationFn,
218
+ ...mutationOptions
219
+ };
220
+ };
221
+ /**
222
+ * @summary Bind a reviewed Salesforce customer identity
223
+ */
224
+ const useLearningBindSalesforce = (options, queryClient) => {
225
+ return useMutation(getLearningBindSalesforceMutationOptions(options), queryClient);
226
+ };
227
+ const getLearningEngagementPreferenceUrl = () => {
228
+ return `/learning/me/engagement`;
229
+ };
230
+ /**
231
+ * Return the local engagement consent state without contacting Braze. An absent preference is enabled=false and emailOptIn=null. Null emailOptIn means no explicit email subscription preference was supplied; it is distinct from a confirmed opt-out.
232
+ * @summary Read the current profile's engagement preference
233
+ */
234
+ const learningEngagementPreference = async (options) => {
235
+ return request(getLearningEngagementPreferenceUrl(), {
236
+ ...options,
237
+ method: "GET"
238
+ });
239
+ };
240
+ const getLearningEngagementPreferenceQueryKey = () => {
241
+ return [`/learning/me/engagement`];
242
+ };
243
+ const getLearningEngagementPreferenceQueryOptions = (options) => {
244
+ const { query: queryOptions, request: requestOptions } = options ?? {};
245
+ const queryKey = queryOptions?.queryKey ?? getLearningEngagementPreferenceQueryKey();
246
+ const queryFn = ({ signal }) => learningEngagementPreference({
247
+ signal,
248
+ ...requestOptions
249
+ });
250
+ return {
251
+ queryKey,
252
+ queryFn,
253
+ ...queryOptions
254
+ };
255
+ };
256
+ /**
257
+ * @summary Read the current profile's engagement preference
258
+ */
259
+ function useLearningEngagementPreference(options, queryClient) {
260
+ const queryOptions = getLearningEngagementPreferenceQueryOptions(options);
261
+ const query = useQuery(queryOptions, queryClient);
262
+ return withQueryKey(query, queryOptions.queryKey);
263
+ }
264
+ const getLearningSetEngagementPreferenceUrl = () => {
265
+ return `/learning/me/engagement`;
266
+ };
267
+ /**
268
+ * An independent profile explicitly enables or disables engagement and supplies an optional email opt-in. Enabling queues provider attributes; disabling cancels pending/failed deliveries and queues deletion when previously enabled. Personal email is sent only with emailOptIn=true. The response confirms local consent storage, not provider delivery. Repeating unchanged preferences queues no duplicate update. Support impersonation and dependent profiles are refused.
269
+ * @summary Set engagement consent and email preference
270
+ */
271
+ const learningSetEngagementPreference = async (learningEngagementWrite, options) => {
272
+ const getHeaders = (h) => {
273
+ if (!h) return {};
274
+ if (h instanceof Headers) return Object.fromEntries(h.entries());
275
+ if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
276
+ const headers = {};
277
+ for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
278
+ return headers;
279
+ };
280
+ return request(getLearningSetEngagementPreferenceUrl(), {
281
+ ...options,
282
+ method: "PUT",
283
+ headers: {
284
+ "Content-Type": "application/json",
285
+ ...getHeaders(options?.headers)
286
+ },
287
+ body: JSON.stringify(learningEngagementWrite)
288
+ });
289
+ };
290
+ const getLearningSetEngagementPreferenceMutationKey = () => ["learningSetEngagementPreference"];
291
+ const getLearningSetEngagementPreferenceMutationOptions = (options) => {
292
+ const mutationKey = getLearningSetEngagementPreferenceMutationKey();
293
+ const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
294
+ ...options,
295
+ mutation: {
296
+ ...options.mutation,
297
+ mutationKey
298
+ }
299
+ } : {
300
+ mutation: { mutationKey },
301
+ request: void 0
302
+ };
303
+ const mutationFn = (props) => {
304
+ const { data } = props ?? {};
305
+ return learningSetEngagementPreference(data, requestOptions);
306
+ };
307
+ return {
308
+ mutationFn,
309
+ ...mutationOptions
310
+ };
311
+ };
312
+ /**
313
+ * @summary Set engagement consent and email preference
314
+ */
315
+ const useLearningSetEngagementPreference = (options, queryClient) => {
316
+ return useMutation(getLearningSetEngagementPreferenceMutationOptions(options), queryClient);
317
+ };
318
+ const getLearningLinkPartnerIdentityUrl = (bindingKey) => {
319
+ return `/learning/me/integrations/sso/${bindingKey}/link`;
320
+ };
321
+ /**
322
+ * An already authenticated independent profile presents a one-use partner proof for a reviewed bindingKey. The configured CAS, Wizbii or Iguana protocol verifies the proof before linking the identity and bounded catalogue membership. Wizbii also requires username. This endpoint returns membership, not an OAuth token or a seamless login redirect. It cannot select another beneficiary, replace a revoked membership, or claim an identity linked to someone else. A stronger login with entitlement-change authority is required; support impersonation is refused. Proof replay is blocked for 24 hours.
323
+ * @summary Link a verified partner identity to the current profile
324
+ */
325
+ const learningLinkPartnerIdentity = async (bindingKey, learningSsoProofWrite, options) => {
326
+ const getHeaders = (h) => {
327
+ if (!h) return {};
328
+ if (h instanceof Headers) return Object.fromEntries(h.entries());
329
+ if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
330
+ const headers = {};
331
+ for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
332
+ return headers;
333
+ };
334
+ return request(getLearningLinkPartnerIdentityUrl(bindingKey), {
335
+ ...options,
336
+ method: "POST",
337
+ headers: {
338
+ "Content-Type": "application/json",
339
+ ...getHeaders(options?.headers)
340
+ },
341
+ body: JSON.stringify(learningSsoProofWrite)
342
+ });
343
+ };
344
+ const getLearningLinkPartnerIdentityMutationKey = () => ["learningLinkPartnerIdentity"];
345
+ const getLearningLinkPartnerIdentityMutationOptions = (options) => {
346
+ const mutationKey = getLearningLinkPartnerIdentityMutationKey();
347
+ const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
348
+ ...options,
349
+ mutation: {
350
+ ...options.mutation,
351
+ mutationKey
352
+ }
353
+ } : {
354
+ mutation: { mutationKey },
355
+ request: void 0
356
+ };
357
+ const mutationFn = (props) => {
358
+ const { bindingKey, data } = props ?? {};
359
+ return learningLinkPartnerIdentity(bindingKey, data, requestOptions);
360
+ };
361
+ return {
362
+ mutationFn,
363
+ ...mutationOptions
364
+ };
365
+ };
366
+ /**
367
+ * @summary Link a verified partner identity to the current profile
368
+ */
369
+ const useLearningLinkPartnerIdentity = (options, queryClient) => {
370
+ return useMutation(getLearningLinkPartnerIdentityMutationOptions(options), queryClient);
371
+ };
372
+ const getLearningSalesforceWebhookUrl = () => {
373
+ return `/learning/webhooks/salesforce`;
374
+ };
375
+ /**
376
+ * Accept a SOAP XML Account notification batch up to 1 MiB with 1–100 unique notification IDs. OrganizationId and EnterpriseUrl must exactly match the configured source. Salesforce Send Session ID must be enabled: the server verifies that session, then fetches authoritative Account snapshots before updating only reviewed customer bindings. Embedded notification fields do not themselves grant authority. Replay receipts prevent conflicting reuse; unknown bindings or ambiguous source data require review. Successful processing returns the Salesforce text/xml Ack envelope. The synthetic session below is a transport fixture and cannot authenticate against a real source.
377
+ * @summary Receive a verified Salesforce SOAP notification
378
+ */
379
+ const learningSalesforceWebhook = async (learningSalesforceWebhookBody, options) => {
380
+ const getHeaders = (h) => {
381
+ if (!h) return {};
382
+ if (h instanceof Headers) return Object.fromEntries(h.entries());
383
+ if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
384
+ const headers = {};
385
+ for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
386
+ return headers;
387
+ };
388
+ return request(getLearningSalesforceWebhookUrl(), {
389
+ ...options,
390
+ method: "POST",
391
+ headers: {
392
+ "Content-Type": "text/xml",
393
+ ...getHeaders(options?.headers)
394
+ },
395
+ body: JSON.stringify(learningSalesforceWebhookBody)
396
+ });
397
+ };
398
+ const getLearningSalesforceWebhookMutationKey = () => ["learningSalesforceWebhook"];
399
+ const getLearningSalesforceWebhookMutationOptions = (options) => {
400
+ const mutationKey = getLearningSalesforceWebhookMutationKey();
401
+ const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
402
+ ...options,
403
+ mutation: {
404
+ ...options.mutation,
405
+ mutationKey
406
+ }
407
+ } : {
408
+ mutation: { mutationKey },
409
+ request: void 0
410
+ };
411
+ const mutationFn = (props) => {
412
+ const { data } = props ?? {};
413
+ return learningSalesforceWebhook(data, requestOptions);
414
+ };
415
+ return {
416
+ mutationFn,
417
+ ...mutationOptions
418
+ };
419
+ };
420
+ /**
421
+ * @summary Receive a verified Salesforce SOAP notification
422
+ */
423
+ const useLearningSalesforceWebhook = (options, queryClient) => {
424
+ return useMutation(getLearningSalesforceWebhookMutationOptions(options), queryClient);
425
+ };
426
+ const getLearningTypeformWebhookUrl = () => {
427
+ return `/learning/webhooks/typeform`;
428
+ };
429
+ /**
430
+ * Verify typeform-signature as sha256= followed by base64 HMAC-SHA256 of the exact raw request bytes using the configured shared secret. This callback authenticates the provider signature, not a user bearer token. form_response.hidden.mozaik_token must be the existing opaque 43-character invitation; it binds the profile, course, tenant and progress. The configured form ID and exactly one integer answer for the configured rating field are required; at most 100 answers and 1 MiB of raw body are accepted. Only configured text comment fields are collected. First acceptance consumes the invitation; an identical normalized response token/body retry is idempotent, a changed response conflicts, and an unconsumed expired invitation returns 410. Success returns no body.
431
+ * @summary Accept a signed Typeform course survey
432
+ */
433
+ const learningTypeformWebhook = async (learningTypeformWebhookBody, options) => {
434
+ const getHeaders = (h) => {
435
+ if (!h) return {};
436
+ if (h instanceof Headers) return Object.fromEntries(h.entries());
437
+ if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
438
+ const headers = {};
439
+ for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
440
+ return headers;
441
+ };
442
+ return request(getLearningTypeformWebhookUrl(), {
443
+ ...options,
444
+ method: "POST",
445
+ headers: {
446
+ "Content-Type": "application/json",
447
+ ...getHeaders(options?.headers)
448
+ },
449
+ body: JSON.stringify(learningTypeformWebhookBody)
450
+ });
451
+ };
452
+ const getLearningTypeformWebhookMutationKey = () => ["learningTypeformWebhook"];
453
+ const getLearningTypeformWebhookMutationOptions = (options) => {
454
+ const mutationKey = getLearningTypeformWebhookMutationKey();
455
+ const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
456
+ ...options,
457
+ mutation: {
458
+ ...options.mutation,
459
+ mutationKey
460
+ }
461
+ } : {
462
+ mutation: { mutationKey },
463
+ request: void 0
464
+ };
465
+ const mutationFn = (props) => {
466
+ const { data } = props ?? {};
467
+ return learningTypeformWebhook(data, requestOptions);
468
+ };
469
+ return {
470
+ mutationFn,
471
+ ...mutationOptions
472
+ };
473
+ };
474
+ /**
475
+ * @summary Accept a signed Typeform course survey
476
+ */
477
+ const useLearningTypeformWebhook = (options, queryClient) => {
478
+ return useMutation(getLearningTypeformWebhookMutationOptions(options), queryClient);
479
+ };
480
+ //#endregion
481
+ export { getLearningBindSalesforceMutationKey, getLearningBindSalesforceMutationOptions, getLearningBindSalesforceUrl, getLearningDispatchEngagementMutationKey, getLearningDispatchEngagementMutationOptions, getLearningDispatchEngagementUrl, getLearningEngagementPreferenceQueryKey, getLearningEngagementPreferenceQueryOptions, getLearningEngagementPreferenceUrl, getLearningImportPartnerFeedMutationKey, getLearningImportPartnerFeedMutationOptions, getLearningImportPartnerFeedUrl, getLearningLinkPartnerIdentityMutationKey, getLearningLinkPartnerIdentityMutationOptions, getLearningLinkPartnerIdentityUrl, getLearningResolveEngagementMutationKey, getLearningResolveEngagementMutationOptions, getLearningResolveEngagementUrl, getLearningSalesforceWebhookMutationKey, getLearningSalesforceWebhookMutationOptions, getLearningSalesforceWebhookUrl, getLearningSetEngagementPreferenceMutationKey, getLearningSetEngagementPreferenceMutationOptions, getLearningSetEngagementPreferenceUrl, getLearningTypeformWebhookMutationKey, getLearningTypeformWebhookMutationOptions, getLearningTypeformWebhookUrl, learningBindSalesforce, learningDispatchEngagement, learningEngagementPreference, learningImportPartnerFeed, learningLinkPartnerIdentity, learningResolveEngagement, learningSalesforceWebhook, learningSetEngagementPreference, learningTypeformWebhook, useLearningBindSalesforce, useLearningDispatchEngagement, useLearningEngagementPreference, useLearningImportPartnerFeed, useLearningLinkPartnerIdentity, useLearningResolveEngagement, useLearningSalesforceWebhook, useLearningSetEngagementPreference, useLearningTypeformWebhook };
482
+
483
+ //# sourceMappingURL=biblio-learning-integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biblio-learning-integrations.js","names":[],"sources":["../../src/react/biblio-learning-integrations/biblio-learning-integrations.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 {\n useMutation,\n useQuery\n} from '@tanstack/react-query';\nimport type {\n DataTag,\n DefinedInitialDataOptions,\n DefinedUseQueryResult,\n MutationFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n UndefinedInitialDataOptions,\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult\n} from '@tanstack/react-query';\n\nimport type {\n CourseRevisionRead,\n HTTPExceptionResponse,\n LearningContractMemberRead,\n LearningEngagementRead,\n LearningEngagementWrite,\n LearningIntegrationDeliveryRead,\n LearningIntegrationResolutionWrite,\n LearningPartnerFeedWrite,\n LearningSalesforceBindingWrite,\n LearningSsoProofWrite,\n LearningTypeformWebhookBody,\n ValidationErrorResponse\n} from '../../models';\n\nimport { request } from '../../client';\nimport type { ErrorType , BodyType } from '../../client';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n\nconst withQueryKey = <T extends object, K>(query: T, queryKey: K): T & { queryKey: K } => {\n const result = { queryKey } as T & { queryKey: K };\n for (const key of Object.keys(query)) {\n // The explicit queryKey always wins, matching the previous\n // `{ ...query, queryKey }` spread where it was set last.\n if (key === 'queryKey') continue;\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: () => (query as Record<string, unknown>)[key],\n });\n }\n return result;\n};\n\nexport const getLearningImportPartnerFeedUrl = (courseId: number,\n provider: 'codes-rousseau' | 'les-bons-profs' | 'loecsen',) => {\n\n\n\n\n return `/learning/author/courses/${courseId}/imports/${provider}`\n}\n\n/**\n * Authors import content for an existing course they may edit. Select provider=codes-rousseau for a 17-column semicolon CSV (default skipRows=1, title required); les-bons-profs for JSON section objects encoded in the content string; or loecsen for a 20-column comma CSV (default skipRows=4), reviewed template, languageName, languageCode and templateAudio mappings. Examples set skipRows=0 because they contain data rows only. assetMap translates source references to already imported assets the caller may use. Import validates the entire definition, creates a draft and does not download media, publish the course or provision a provider account. The response describes the new revision; retrieve its author definition to inspect the generated chapters and lessons.\n * @summary Import a partner feed as a native draft revision\n */\nexport const learningImportPartnerFeed = async (courseId: number,\n provider: 'codes-rousseau' | 'les-bons-profs' | 'loecsen',\n learningPartnerFeedWrite: LearningPartnerFeedWrite, options?: Parameters<typeof request>[1]): Promise<CourseRevisionRead> => {\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<CourseRevisionRead>(getLearningImportPartnerFeedUrl(courseId,provider),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningPartnerFeedWrite)\n }\n);}\n\n\n\n\n\nexport const getLearningImportPartnerFeedMutationKey = () => ['learningImportPartnerFeed'] as const;\n\nexport const getLearningImportPartnerFeedMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningImportPartnerFeed>>, TError,LearningImportPartnerFeedMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningImportPartnerFeed>>, TError,LearningImportPartnerFeedMutationVariables, TContext> => {\n\nconst mutationKey = getLearningImportPartnerFeedMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof learningImportPartnerFeed>>, LearningImportPartnerFeedMutationVariables> = (props) => {\n const {courseId,provider,data} = props ?? {};\n\n return learningImportPartnerFeed(courseId,provider,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningImportPartnerFeedMutationResult = NonNullable<Awaited<ReturnType<typeof learningImportPartnerFeed>>>\n export type LearningImportPartnerFeedMutationBody = BodyType<LearningPartnerFeedWrite>\n export type LearningImportPartnerFeedMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningImportPartnerFeedMutationVariables = {courseId: number;provider: 'codes-rousseau' | 'les-bons-profs' | 'loecsen';data: BodyType<LearningPartnerFeedWrite>}\n\n /**\n * @summary Import a partner feed as a native draft revision\n */\nexport const useLearningImportPartnerFeed = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningImportPartnerFeed>>, TError,LearningImportPartnerFeedMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningImportPartnerFeed>>,\n TError,\n LearningImportPartnerFeedMutationVariables,\n TContext\n > => {\n return useMutation(getLearningImportPartnerFeedMutationOptions(options), queryClient);\n }\n export const getLearningDispatchEngagementUrl = (deliveryId: number,) => {\n\n\n\n\n return `/learning/integrations/braze/deliveries/${deliveryId}/dispatch`\n}\n\n/**\n * A global integration operator dispatches the existing pending delivery after checking current consent and earlier deliveries for the same profile. Nonpending rows are returned unchanged. The result can be sent, failed, uncertain or cancelled; HTTP 200 alone does not confirm delivery. A timeout or ambiguous provider acknowledgement becomes uncertain and is never blindly retried. Resolve uncertainty using external evidence before redispatching; newer deliveries wait for earlier unresolved rows.\n * @summary Dispatch one pending Braze delivery\n */\nexport const learningDispatchEngagement = async (deliveryId: number, options?: Parameters<typeof request>[1]): Promise<LearningIntegrationDeliveryRead> => {\n\n return request<LearningIntegrationDeliveryRead>(getLearningDispatchEngagementUrl(deliveryId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningDispatchEngagementMutationKey = () => ['learningDispatchEngagement'] as const;\n\nexport const getLearningDispatchEngagementMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningDispatchEngagement>>, TError,LearningDispatchEngagementMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningDispatchEngagement>>, TError,LearningDispatchEngagementMutationVariables, TContext> => {\n\nconst mutationKey = getLearningDispatchEngagementMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof learningDispatchEngagement>>, LearningDispatchEngagementMutationVariables> = (props) => {\n const {deliveryId} = props ?? {};\n\n return learningDispatchEngagement(deliveryId,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningDispatchEngagementMutationResult = NonNullable<Awaited<ReturnType<typeof learningDispatchEngagement>>>\n\n export type LearningDispatchEngagementMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningDispatchEngagementMutationVariables = {deliveryId: number}\n\n /**\n * @summary Dispatch one pending Braze delivery\n */\nexport const useLearningDispatchEngagement = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningDispatchEngagement>>, TError,LearningDispatchEngagementMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningDispatchEngagement>>,\n TError,\n LearningDispatchEngagementMutationVariables,\n TContext\n > => {\n return useMutation(getLearningDispatchEngagementMutationOptions(options), queryClient);\n }\n export const getLearningResolveEngagementUrl = (deliveryId: number,) => {\n\n\n\n\n return `/learning/integrations/braze/deliveries/${deliveryId}/resolve`\n}\n\n/**\n * A global integration operator records a reviewed provider outcome for a failed, uncertain or stale sending delivery. confirmed_sent marks it sent and clears stored properties; confirmed_not_sent returns it to pending for a later explicit dispatch. A sending claim younger than 120 seconds cannot be resolved. This operation records evidence and never sends to Braze itself.\n * @summary Resolve an uncertain or failed Braze delivery\n */\nexport const learningResolveEngagement = async (deliveryId: number,\n learningIntegrationResolutionWrite: LearningIntegrationResolutionWrite, options?: Parameters<typeof request>[1]): Promise<LearningIntegrationDeliveryRead> => {\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<LearningIntegrationDeliveryRead>(getLearningResolveEngagementUrl(deliveryId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningIntegrationResolutionWrite)\n }\n);}\n\n\n\n\n\nexport const getLearningResolveEngagementMutationKey = () => ['learningResolveEngagement'] as const;\n\nexport const getLearningResolveEngagementMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningResolveEngagement>>, TError,LearningResolveEngagementMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningResolveEngagement>>, TError,LearningResolveEngagementMutationVariables, TContext> => {\n\nconst mutationKey = getLearningResolveEngagementMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof learningResolveEngagement>>, LearningResolveEngagementMutationVariables> = (props) => {\n const {deliveryId,data} = props ?? {};\n\n return learningResolveEngagement(deliveryId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningResolveEngagementMutationResult = NonNullable<Awaited<ReturnType<typeof learningResolveEngagement>>>\n export type LearningResolveEngagementMutationBody = BodyType<LearningIntegrationResolutionWrite>\n export type LearningResolveEngagementMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningResolveEngagementMutationVariables = {deliveryId: number;data: BodyType<LearningIntegrationResolutionWrite>}\n\n /**\n * @summary Resolve an uncertain or failed Braze delivery\n */\nexport const useLearningResolveEngagement = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningResolveEngagement>>, TError,LearningResolveEngagementMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningResolveEngagement>>,\n TError,\n LearningResolveEngagementMutationVariables,\n TContext\n > => {\n return useMutation(getLearningResolveEngagementMutationOptions(options), queryClient);\n }\n export const getLearningBindSalesforceUrl = (tenantId: number,) => {\n\n\n\n\n return `/learning/integrations/salesforce/customers/${tenantId}`\n}\n\n/**\n * A global commercial operator maps one customer tenant to an exact Salesforce Account, community, catalogue and exclusive institution learning agreement. Repeating the same identity can update isActive and clockZone; moving an already bound identity or agreement returns 409. clockZone is the reviewed IANA source timezone used to interpret source access dates. Support impersonation and dependent profiles are refused. Returns 204 with no response body.\n * @summary Bind a reviewed Salesforce customer identity\n */\nexport const learningBindSalesforce = async (tenantId: number,\n learningSalesforceBindingWrite: LearningSalesforceBindingWrite, 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>(getLearningBindSalesforceUrl(tenantId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningSalesforceBindingWrite)\n }\n);}\n\n\n\n\n\nexport const getLearningBindSalesforceMutationKey = () => ['learningBindSalesforce'] as const;\n\nexport const getLearningBindSalesforceMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningBindSalesforce>>, TError,LearningBindSalesforceMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningBindSalesforce>>, TError,LearningBindSalesforceMutationVariables, TContext> => {\n\nconst mutationKey = getLearningBindSalesforceMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof learningBindSalesforce>>, LearningBindSalesforceMutationVariables> = (props) => {\n const {tenantId,data} = props ?? {};\n\n return learningBindSalesforce(tenantId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningBindSalesforceMutationResult = NonNullable<Awaited<ReturnType<typeof learningBindSalesforce>>>\n export type LearningBindSalesforceMutationBody = BodyType<LearningSalesforceBindingWrite>\n export type LearningBindSalesforceMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningBindSalesforceMutationVariables = {tenantId: number;data: BodyType<LearningSalesforceBindingWrite>}\n\n /**\n * @summary Bind a reviewed Salesforce customer identity\n */\nexport const useLearningBindSalesforce = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningBindSalesforce>>, TError,LearningBindSalesforceMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningBindSalesforce>>,\n TError,\n LearningBindSalesforceMutationVariables,\n TContext\n > => {\n return useMutation(getLearningBindSalesforceMutationOptions(options), queryClient);\n }\n export const getLearningEngagementPreferenceUrl = () => {\n\n\n\n\n return `/learning/me/engagement`\n}\n\n/**\n * Return the local engagement consent state without contacting Braze. An absent preference is enabled=false and emailOptIn=null. Null emailOptIn means no explicit email subscription preference was supplied; it is distinct from a confirmed opt-out.\n * @summary Read the current profile's engagement preference\n */\nexport const learningEngagementPreference = async ( options?: Parameters<typeof request>[1]): Promise<LearningEngagementRead> => {\n\n return request<LearningEngagementRead>(getLearningEngagementPreferenceUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningEngagementPreferenceQueryKey = () => {\n return [\n `/learning/me/engagement`\n ] as const;\n }\n\n\nexport const getLearningEngagementPreferenceQueryOptions = <TData = Awaited<ReturnType<typeof learningEngagementPreference>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>( options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningEngagementPreference>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningEngagementPreferenceQueryKey();\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningEngagementPreference>>> = ({ signal }) => learningEngagementPreference({ signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningEngagementPreference>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningEngagementPreferenceQueryResult = NonNullable<Awaited<ReturnType<typeof learningEngagementPreference>>>\nexport type LearningEngagementPreferenceQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningEngagementPreference<TData = Awaited<ReturnType<typeof learningEngagementPreference>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningEngagementPreference>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningEngagementPreference>>,\n TError,\n Awaited<ReturnType<typeof learningEngagementPreference>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningEngagementPreference<TData = Awaited<ReturnType<typeof learningEngagementPreference>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningEngagementPreference>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningEngagementPreference>>,\n TError,\n Awaited<ReturnType<typeof learningEngagementPreference>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningEngagementPreference<TData = Awaited<ReturnType<typeof learningEngagementPreference>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningEngagementPreference>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read the current profile's engagement preference\n */\n\nexport function useLearningEngagementPreference<TData = Awaited<ReturnType<typeof learningEngagementPreference>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningEngagementPreference>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningEngagementPreferenceQueryOptions(options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getLearningSetEngagementPreferenceUrl = () => {\n\n\n\n\n return `/learning/me/engagement`\n}\n\n/**\n * An independent profile explicitly enables or disables engagement and supplies an optional email opt-in. Enabling queues provider attributes; disabling cancels pending/failed deliveries and queues deletion when previously enabled. Personal email is sent only with emailOptIn=true. The response confirms local consent storage, not provider delivery. Repeating unchanged preferences queues no duplicate update. Support impersonation and dependent profiles are refused.\n * @summary Set engagement consent and email preference\n */\nexport const learningSetEngagementPreference = async (learningEngagementWrite: LearningEngagementWrite, options?: Parameters<typeof request>[1]): Promise<LearningEngagementRead> => {\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<LearningEngagementRead>(getLearningSetEngagementPreferenceUrl(),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningEngagementWrite)\n }\n);}\n\n\n\n\n\nexport const getLearningSetEngagementPreferenceMutationKey = () => ['learningSetEngagementPreference'] as const;\n\nexport const getLearningSetEngagementPreferenceMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSetEngagementPreference>>, TError,LearningSetEngagementPreferenceMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningSetEngagementPreference>>, TError,LearningSetEngagementPreferenceMutationVariables, TContext> => {\n\nconst mutationKey = getLearningSetEngagementPreferenceMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof learningSetEngagementPreference>>, LearningSetEngagementPreferenceMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return learningSetEngagementPreference(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningSetEngagementPreferenceMutationResult = NonNullable<Awaited<ReturnType<typeof learningSetEngagementPreference>>>\n export type LearningSetEngagementPreferenceMutationBody = BodyType<LearningEngagementWrite>\n export type LearningSetEngagementPreferenceMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningSetEngagementPreferenceMutationVariables = {data: BodyType<LearningEngagementWrite>}\n\n /**\n * @summary Set engagement consent and email preference\n */\nexport const useLearningSetEngagementPreference = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSetEngagementPreference>>, TError,LearningSetEngagementPreferenceMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningSetEngagementPreference>>,\n TError,\n LearningSetEngagementPreferenceMutationVariables,\n TContext\n > => {\n return useMutation(getLearningSetEngagementPreferenceMutationOptions(options), queryClient);\n }\n export const getLearningLinkPartnerIdentityUrl = (bindingKey: string,) => {\n\n\n\n\n return `/learning/me/integrations/sso/${bindingKey}/link`\n}\n\n/**\n * An already authenticated independent profile presents a one-use partner proof for a reviewed bindingKey. The configured CAS, Wizbii or Iguana protocol verifies the proof before linking the identity and bounded catalogue membership. Wizbii also requires username. This endpoint returns membership, not an OAuth token or a seamless login redirect. It cannot select another beneficiary, replace a revoked membership, or claim an identity linked to someone else. A stronger login with entitlement-change authority is required; support impersonation is refused. Proof replay is blocked for 24 hours.\n * @summary Link a verified partner identity to the current profile\n */\nexport const learningLinkPartnerIdentity = async (bindingKey: string,\n learningSsoProofWrite: LearningSsoProofWrite, options?: Parameters<typeof request>[1]): Promise<LearningContractMemberRead> => {\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<LearningContractMemberRead>(getLearningLinkPartnerIdentityUrl(bindingKey),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningSsoProofWrite)\n }\n);}\n\n\n\n\n\nexport const getLearningLinkPartnerIdentityMutationKey = () => ['learningLinkPartnerIdentity'] as const;\n\nexport const getLearningLinkPartnerIdentityMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningLinkPartnerIdentity>>, TError,LearningLinkPartnerIdentityMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningLinkPartnerIdentity>>, TError,LearningLinkPartnerIdentityMutationVariables, TContext> => {\n\nconst mutationKey = getLearningLinkPartnerIdentityMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof learningLinkPartnerIdentity>>, LearningLinkPartnerIdentityMutationVariables> = (props) => {\n const {bindingKey,data} = props ?? {};\n\n return learningLinkPartnerIdentity(bindingKey,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningLinkPartnerIdentityMutationResult = NonNullable<Awaited<ReturnType<typeof learningLinkPartnerIdentity>>>\n export type LearningLinkPartnerIdentityMutationBody = BodyType<LearningSsoProofWrite>\n export type LearningLinkPartnerIdentityMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningLinkPartnerIdentityMutationVariables = {bindingKey: string;data: BodyType<LearningSsoProofWrite>}\n\n /**\n * @summary Link a verified partner identity to the current profile\n */\nexport const useLearningLinkPartnerIdentity = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningLinkPartnerIdentity>>, TError,LearningLinkPartnerIdentityMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningLinkPartnerIdentity>>,\n TError,\n LearningLinkPartnerIdentityMutationVariables,\n TContext\n > => {\n return useMutation(getLearningLinkPartnerIdentityMutationOptions(options), queryClient);\n }\n export const getLearningSalesforceWebhookUrl = () => {\n\n\n\n\n return `/learning/webhooks/salesforce`\n}\n\n/**\n * Accept a SOAP XML Account notification batch up to 1 MiB with 1–100 unique notification IDs. OrganizationId and EnterpriseUrl must exactly match the configured source. Salesforce Send Session ID must be enabled: the server verifies that session, then fetches authoritative Account snapshots before updating only reviewed customer bindings. Embedded notification fields do not themselves grant authority. Replay receipts prevent conflicting reuse; unknown bindings or ambiguous source data require review. Successful processing returns the Salesforce text/xml Ack envelope. The synthetic session below is a transport fixture and cannot authenticate against a real source.\n * @summary Receive a verified Salesforce SOAP notification\n */\nexport const learningSalesforceWebhook = async (learningSalesforceWebhookBody: string, options?: Parameters<typeof request>[1]): Promise<string> => {\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<string>(getLearningSalesforceWebhookUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'text/xml', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningSalesforceWebhookBody)\n }\n);}\n\n\n\n\n\nexport const getLearningSalesforceWebhookMutationKey = () => ['learningSalesforceWebhook'] as const;\n\nexport const getLearningSalesforceWebhookMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSalesforceWebhook>>, TError,LearningSalesforceWebhookMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningSalesforceWebhook>>, TError,LearningSalesforceWebhookMutationVariables, TContext> => {\n\nconst mutationKey = getLearningSalesforceWebhookMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof learningSalesforceWebhook>>, LearningSalesforceWebhookMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return learningSalesforceWebhook(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningSalesforceWebhookMutationResult = NonNullable<Awaited<ReturnType<typeof learningSalesforceWebhook>>>\n export type LearningSalesforceWebhookMutationBody = BodyType<string>\n export type LearningSalesforceWebhookMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningSalesforceWebhookMutationVariables = {data: BodyType<string>}\n\n /**\n * @summary Receive a verified Salesforce SOAP notification\n */\nexport const useLearningSalesforceWebhook = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSalesforceWebhook>>, TError,LearningSalesforceWebhookMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningSalesforceWebhook>>,\n TError,\n LearningSalesforceWebhookMutationVariables,\n TContext\n > => {\n return useMutation(getLearningSalesforceWebhookMutationOptions(options), queryClient);\n }\n export const getLearningTypeformWebhookUrl = () => {\n\n\n\n\n return `/learning/webhooks/typeform`\n}\n\n/**\n * Verify typeform-signature as sha256= followed by base64 HMAC-SHA256 of the exact raw request bytes using the configured shared secret. This callback authenticates the provider signature, not a user bearer token. form_response.hidden.mozaik_token must be the existing opaque 43-character invitation; it binds the profile, course, tenant and progress. The configured form ID and exactly one integer answer for the configured rating field are required; at most 100 answers and 1 MiB of raw body are accepted. Only configured text comment fields are collected. First acceptance consumes the invitation; an identical normalized response token/body retry is idempotent, a changed response conflicts, and an unconsumed expired invitation returns 410. Success returns no body.\n * @summary Accept a signed Typeform course survey\n */\nexport const learningTypeformWebhook = async (learningTypeformWebhookBody: LearningTypeformWebhookBody, 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>(getLearningTypeformWebhookUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningTypeformWebhookBody)\n }\n);}\n\n\n\n\n\nexport const getLearningTypeformWebhookMutationKey = () => ['learningTypeformWebhook'] as const;\n\nexport const getLearningTypeformWebhookMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningTypeformWebhook>>, TError,LearningTypeformWebhookMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningTypeformWebhook>>, TError,LearningTypeformWebhookMutationVariables, TContext> => {\n\nconst mutationKey = getLearningTypeformWebhookMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof learningTypeformWebhook>>, LearningTypeformWebhookMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return learningTypeformWebhook(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningTypeformWebhookMutationResult = NonNullable<Awaited<ReturnType<typeof learningTypeformWebhook>>>\n export type LearningTypeformWebhookMutationBody = BodyType<LearningTypeformWebhookBody>\n export type LearningTypeformWebhookMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningTypeformWebhookMutationVariables = {data: BodyType<LearningTypeformWebhookBody>}\n\n /**\n * @summary Accept a signed Typeform course survey\n */\nexport const useLearningTypeformWebhook = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningTypeformWebhook>>, TError,LearningTypeformWebhookMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningTypeformWebhook>>,\n TError,\n LearningTypeformWebhookMutationVariables,\n TContext\n > => {\n return useMutation(getLearningTypeformWebhookMutationOptions(options), queryClient);\n }\n"],"mappings":"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"}