@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.
- package/README.md +25 -0
- package/dist/api/account.d.ts +1 -1
- package/dist/api/account.js.map +1 -1
- package/dist/api/admin-catalogue.d.ts +1 -1
- package/dist/api/admin-catalogue.js.map +1 -1
- package/dist/api/admin-consumption.d.ts +1 -1
- package/dist/api/admin-consumption.js.map +1 -1
- package/dist/api/admin-contracts.d.ts +1 -1
- package/dist/api/admin-contracts.js.map +1 -1
- package/dist/api/admin-desk.d.ts +1 -1
- package/dist/api/admin-desk.js.map +1 -1
- package/dist/api/admin-licenses.d.ts +1 -1
- package/dist/api/admin-licenses.js.map +1 -1
- package/dist/api/admin-partner-selections.d.ts +1 -1
- package/dist/api/admin-partner-selections.js.map +1 -1
- package/dist/api/admin-patrons.d.ts +1 -1
- package/dist/api/admin-patrons.js.map +1 -1
- package/dist/api/admin-reviews.d.ts +1 -1
- package/dist/api/admin-reviews.js.map +1 -1
- package/dist/api/admin-roles.d.ts +1 -1
- package/dist/api/admin-roles.js.map +1 -1
- package/dist/api/admin-support.d.ts +1 -1
- package/dist/api/admin-support.js.map +1 -1
- package/dist/api/admin-tenants.d.ts +1 -1
- package/dist/api/admin-tenants.js.map +1 -1
- package/dist/api/admin-tutoring.d.ts +1 -1
- package/dist/api/admin-tutoring.js.map +1 -1
- package/dist/api/auth.d.ts +1 -1
- package/dist/api/auth.js.map +1 -1
- package/dist/api/biblio-billing-webhooks.d.ts +18 -0
- package/dist/api/biblio-billing-webhooks.js +62 -0
- package/dist/api/biblio-billing-webhooks.js.map +1 -0
- package/dist/api/biblio-billing.d.ts +192 -0
- package/dist/api/biblio-billing.js +645 -0
- package/dist/api/biblio-billing.js.map +1 -0
- package/dist/api/biblio-catalogue.d.ts +1 -1
- package/dist/api/biblio-catalogue.js.map +1 -1
- package/dist/api/biblio-home.d.ts +1 -1
- package/dist/api/biblio-home.js.map +1 -1
- package/dist/api/biblio-learning-author-profiles.d.ts +108 -0
- package/dist/api/biblio-learning-author-profiles.js +331 -0
- package/dist/api/biblio-learning-author-profiles.js.map +1 -0
- package/dist/api/biblio-learning-authoring.d.ts +168 -0
- package/dist/api/biblio-learning-authoring.js +586 -0
- package/dist/api/biblio-learning-authoring.js.map +1 -0
- package/dist/api/biblio-learning-editorial.d.ts +54 -0
- package/dist/api/biblio-learning-editorial.js +149 -0
- package/dist/api/biblio-learning-editorial.js.map +1 -0
- package/dist/api/biblio-learning-feedback.d.ts +60 -0
- package/dist/api/biblio-learning-feedback.js +180 -0
- package/dist/api/biblio-learning-feedback.js.map +1 -0
- package/dist/api/biblio-learning-finance.d.ts +186 -0
- package/dist/api/biblio-learning-finance.js +622 -0
- package/dist/api/biblio-learning-finance.js.map +1 -0
- package/dist/api/biblio-learning-integrations.d.ts +60 -0
- package/dist/api/biblio-learning-integrations.js +215 -0
- package/dist/api/biblio-learning-integrations.js.map +1 -0
- package/dist/api/biblio-learning-membership.d.ts +24 -0
- package/dist/api/biblio-learning-membership.js +69 -0
- package/dist/api/biblio-learning-membership.js.map +1 -0
- package/dist/api/biblio-learning.d.ts +222 -0
- package/dist/api/biblio-learning.js +697 -0
- package/dist/api/biblio-learning.js.map +1 -0
- package/dist/api/biblio-library.d.ts +1 -1
- package/dist/api/biblio-library.js.map +1 -1
- package/dist/api/biblio-nextory.d.ts +1 -1
- package/dist/api/biblio-nextory.js.map +1 -1
- package/dist/api/biblio-press.d.ts +1 -1
- package/dist/api/biblio-press.js.map +1 -1
- package/dist/api/biblio-search.d.ts +1 -1
- package/dist/api/biblio-search.js.map +1 -1
- package/dist/api/biblio-telemetry.d.ts +1 -1
- package/dist/api/biblio-telemetry.js.map +1 -1
- package/dist/api/consumption.d.ts +1 -1
- package/dist/api/consumption.js.map +1 -1
- package/dist/api/cvs-app.d.ts +1 -1
- package/dist/api/cvs-app.js.map +1 -1
- package/dist/api/cvs-documents.d.ts +1 -1
- package/dist/api/cvs-documents.js.map +1 -1
- package/dist/api/cvs-favorites.d.ts +1 -1
- package/dist/api/cvs-favorites.js.map +1 -1
- package/dist/api/cvs-ils.d.ts +1 -1
- package/dist/api/cvs-ils.js.map +1 -1
- package/dist/api/cvs-loans.d.ts +1 -1
- package/dist/api/cvs-loans.js.map +1 -1
- package/dist/api/cvs-payments.d.ts +1 -1
- package/dist/api/cvs-payments.js.map +1 -1
- package/dist/api/cvs-streaming.d.ts +1 -1
- package/dist/api/cvs-streaming.js.map +1 -1
- package/dist/api/index.d.ts +11 -1
- package/dist/api/index.js +11 -1
- package/dist/api/partner-catalogue.d.ts +1 -1
- package/dist/api/partner-catalogue.js.map +1 -1
- package/dist/api/partner-reader.d.ts +1 -1
- package/dist/api/partner-reader.js.map +1 -1
- package/dist/api/profiles.d.ts +1 -1
- package/dist/api/profiles.js.map +1 -1
- package/dist/api/search.d.ts +1 -1
- package/dist/api/search.js.map +1 -1
- package/dist/api/tutoring-catalogue.d.ts +1 -1
- package/dist/api/tutoring-catalogue.js.map +1 -1
- package/dist/api/tutoring-chat.d.ts +1 -1
- package/dist/api/tutoring-chat.js.map +1 -1
- package/dist/api/tutoring-dispatch.d.ts +1 -1
- package/dist/api/tutoring-dispatch.js.map +1 -1
- package/dist/api/tutoring-practitioner.d.ts +1 -1
- package/dist/api/tutoring-practitioner.js.map +1 -1
- package/dist/api/tutoring-requests.d.ts +1 -1
- package/dist/api/tutoring-requests.js.map +1 -1
- package/dist/chunks/client2.d.ts +1 -1
- package/dist/chunks/connection.d.ts +1 -1
- package/dist/chunks/index.d.ts +10062 -3487
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/models.d.ts +2 -2
- package/dist/models.js +329 -1
- package/dist/models.js.map +1 -1
- package/dist/react/account.d.ts +1 -1
- package/dist/react/account.js +1 -1
- package/dist/react/account.js.map +1 -1
- package/dist/react/admin-catalogue.d.ts +1 -1
- package/dist/react/admin-catalogue.js +1 -1
- package/dist/react/admin-catalogue.js.map +1 -1
- package/dist/react/admin-consumption.d.ts +1 -1
- package/dist/react/admin-consumption.js +1 -1
- package/dist/react/admin-consumption.js.map +1 -1
- package/dist/react/admin-contracts.d.ts +1 -1
- package/dist/react/admin-contracts.js +1 -1
- package/dist/react/admin-contracts.js.map +1 -1
- package/dist/react/admin-desk.d.ts +1 -1
- package/dist/react/admin-desk.js +1 -1
- package/dist/react/admin-desk.js.map +1 -1
- package/dist/react/admin-licenses.d.ts +1 -1
- package/dist/react/admin-licenses.js +1 -1
- package/dist/react/admin-licenses.js.map +1 -1
- package/dist/react/admin-partner-selections.d.ts +1 -1
- package/dist/react/admin-partner-selections.js +1 -1
- package/dist/react/admin-partner-selections.js.map +1 -1
- package/dist/react/admin-patrons.d.ts +1 -1
- package/dist/react/admin-patrons.js +1 -1
- package/dist/react/admin-patrons.js.map +1 -1
- package/dist/react/admin-reviews.d.ts +1 -1
- package/dist/react/admin-reviews.js +1 -1
- package/dist/react/admin-reviews.js.map +1 -1
- package/dist/react/admin-roles.d.ts +1 -1
- package/dist/react/admin-roles.js +1 -1
- package/dist/react/admin-roles.js.map +1 -1
- package/dist/react/admin-support.d.ts +1 -1
- package/dist/react/admin-support.js +1 -1
- package/dist/react/admin-support.js.map +1 -1
- package/dist/react/admin-tenants.d.ts +1 -1
- package/dist/react/admin-tenants.js +1 -1
- package/dist/react/admin-tenants.js.map +1 -1
- package/dist/react/admin-tutoring.d.ts +1 -1
- package/dist/react/admin-tutoring.js +1 -1
- package/dist/react/admin-tutoring.js.map +1 -1
- package/dist/react/auth.d.ts +1 -1
- package/dist/react/auth.js +1 -1
- package/dist/react/auth.js.map +1 -1
- package/dist/react/biblio-billing-webhooks.d.ts +56 -0
- package/dist/react/biblio-billing-webhooks.js +126 -0
- package/dist/react/biblio-billing-webhooks.js.map +1 -0
- package/dist/react/biblio-billing.d.ts +876 -0
- package/dist/react/biblio-billing.js +1491 -0
- package/dist/react/biblio-billing.js.map +1 -0
- package/dist/react/biblio-catalogue.d.ts +1 -1
- package/dist/react/biblio-catalogue.js +1 -1
- package/dist/react/biblio-catalogue.js.map +1 -1
- package/dist/react/biblio-home.d.ts +1 -1
- package/dist/react/biblio-home.js +1 -1
- package/dist/react/biblio-home.js.map +1 -1
- package/dist/react/biblio-learning-author-profiles.d.ts +513 -0
- package/dist/react/biblio-learning-author-profiles.js +795 -0
- package/dist/react/biblio-learning-author-profiles.js.map +1 -0
- package/dist/react/biblio-learning-authoring.d.ts +745 -0
- package/dist/react/biblio-learning-authoring.js +1335 -0
- package/dist/react/biblio-learning-authoring.js.map +1 -0
- package/dist/react/biblio-learning-editorial.d.ts +264 -0
- package/dist/react/biblio-learning-editorial.js +371 -0
- package/dist/react/biblio-learning-editorial.js.map +1 -0
- package/dist/react/biblio-learning-feedback.d.ts +280 -0
- package/dist/react/biblio-learning-feedback.js +433 -0
- package/dist/react/biblio-learning-feedback.js.map +1 -0
- package/dist/react/biblio-learning-finance.d.ts +868 -0
- package/dist/react/biblio-learning-finance.js +1439 -0
- package/dist/react/biblio-learning-finance.js.map +1 -0
- package/dist/react/biblio-learning-integrations.d.ts +237 -0
- package/dist/react/biblio-learning-integrations.js +483 -0
- package/dist/react/biblio-learning-integrations.js.map +1 -0
- package/dist/react/biblio-learning-membership.d.ts +99 -0
- package/dist/react/biblio-learning-membership.js +165 -0
- package/dist/react/biblio-learning-membership.js.map +1 -0
- package/dist/react/biblio-learning.d.ts +1047 -0
- package/dist/react/biblio-learning.js +1667 -0
- package/dist/react/biblio-learning.js.map +1 -0
- package/dist/react/biblio-library.d.ts +1 -1
- package/dist/react/biblio-library.js +1 -1
- package/dist/react/biblio-library.js.map +1 -1
- package/dist/react/biblio-nextory.d.ts +1 -1
- package/dist/react/biblio-nextory.js +1 -1
- package/dist/react/biblio-nextory.js.map +1 -1
- package/dist/react/biblio-press.d.ts +1 -1
- package/dist/react/biblio-press.js +1 -1
- package/dist/react/biblio-press.js.map +1 -1
- package/dist/react/biblio-search.d.ts +1 -1
- package/dist/react/biblio-search.js +1 -1
- package/dist/react/biblio-search.js.map +1 -1
- package/dist/react/biblio-telemetry.d.ts +1 -1
- package/dist/react/biblio-telemetry.js +1 -1
- package/dist/react/biblio-telemetry.js.map +1 -1
- package/dist/react/chat.d.ts +1 -1
- package/dist/react/consumption.d.ts +1 -1
- package/dist/react/consumption.js +1 -1
- package/dist/react/consumption.js.map +1 -1
- package/dist/react/cvs-app.d.ts +1 -1
- package/dist/react/cvs-app.js +1 -1
- package/dist/react/cvs-app.js.map +1 -1
- package/dist/react/cvs-documents.d.ts +1 -1
- package/dist/react/cvs-documents.js +1 -1
- package/dist/react/cvs-documents.js.map +1 -1
- package/dist/react/cvs-favorites.d.ts +1 -1
- package/dist/react/cvs-favorites.js +1 -1
- package/dist/react/cvs-favorites.js.map +1 -1
- package/dist/react/cvs-ils.d.ts +1 -1
- package/dist/react/cvs-ils.js +1 -1
- package/dist/react/cvs-ils.js.map +1 -1
- package/dist/react/cvs-loans.d.ts +1 -1
- package/dist/react/cvs-loans.js +1 -1
- package/dist/react/cvs-loans.js.map +1 -1
- package/dist/react/cvs-payments.d.ts +1 -1
- package/dist/react/cvs-payments.js +1 -1
- package/dist/react/cvs-payments.js.map +1 -1
- package/dist/react/cvs-streaming.d.ts +1 -1
- package/dist/react/cvs-streaming.js +1 -1
- package/dist/react/cvs-streaming.js.map +1 -1
- package/dist/react/index.d.ts +11 -1
- package/dist/react/index.js +11 -1
- package/dist/react/partner-catalogue.d.ts +1 -1
- package/dist/react/partner-catalogue.js +1 -1
- package/dist/react/partner-catalogue.js.map +1 -1
- package/dist/react/partner-reader.d.ts +1 -1
- package/dist/react/partner-reader.js +1 -1
- package/dist/react/partner-reader.js.map +1 -1
- package/dist/react/profiles.d.ts +1 -1
- package/dist/react/profiles.js +1 -1
- package/dist/react/profiles.js.map +1 -1
- package/dist/react/search.d.ts +1 -1
- package/dist/react/search.js +1 -1
- package/dist/react/search.js.map +1 -1
- package/dist/react/tutoring-catalogue.d.ts +1 -1
- package/dist/react/tutoring-catalogue.js +1 -1
- package/dist/react/tutoring-catalogue.js.map +1 -1
- package/dist/react/tutoring-chat.d.ts +1 -1
- package/dist/react/tutoring-chat.js +1 -1
- package/dist/react/tutoring-chat.js.map +1 -1
- package/dist/react/tutoring-dispatch.d.ts +1 -1
- package/dist/react/tutoring-dispatch.js +1 -1
- package/dist/react/tutoring-dispatch.js.map +1 -1
- package/dist/react/tutoring-practitioner.d.ts +1 -1
- package/dist/react/tutoring-practitioner.js +1 -1
- package/dist/react/tutoring-practitioner.js.map +1 -1
- package/dist/react/tutoring-requests.d.ts +1 -1
- package/dist/react/tutoring-requests.js +1 -1
- package/dist/react/tutoring-requests.js.map +1 -1
- 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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"}
|