@learnorama/mozaik-sdk 0.14.2-staging.52.1 → 0.15.0-staging.53.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 +17 -11
- 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-customer.d.ts +1 -1
- package/dist/api/admin-customer.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.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.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-device.d.ts +1 -1
- package/dist/api/auth-device.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 +1 -1
- package/dist/api/biblio-billing-webhooks.js.map +1 -1
- package/dist/api/biblio-billing.d.ts +1 -1
- package/dist/api/biblio-billing.js.map +1 -1
- 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 +1 -1
- package/dist/api/biblio-learning-author-profiles.js.map +1 -1
- package/dist/api/biblio-learning-authoring.d.ts +1 -1
- package/dist/api/biblio-learning-authoring.js.map +1 -1
- package/dist/api/biblio-learning-editorial.d.ts +1 -1
- package/dist/api/biblio-learning-editorial.js.map +1 -1
- package/dist/api/biblio-learning-feedback.d.ts +1 -1
- package/dist/api/biblio-learning-feedback.js.map +1 -1
- package/dist/api/biblio-learning-finance.d.ts +1 -1
- package/dist/api/biblio-learning-finance.js.map +1 -1
- package/dist/api/biblio-learning-integrations.d.ts +1 -1
- package/dist/api/biblio-learning-integrations.js.map +1 -1
- package/dist/api/biblio-learning-membership.d.ts +1 -1
- package/dist/api/biblio-learning-membership.js.map +1 -1
- package/dist/api/biblio-learning.d.ts +1 -1
- package/dist/api/biblio-learning.js.map +1 -1
- 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.js.map +1 -1
- package/dist/api/biblio-telemetry.js.map +1 -1
- package/dist/api/biblio-youscribe.d.ts +51 -0
- package/dist/api/biblio-youscribe.js +66 -0
- package/dist/api/biblio-youscribe.js.map +1 -0
- 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.js.map +1 -1
- package/dist/api/index.d.ts +5 -3
- package/dist/api/index.js +5 -3
- package/dist/api/partner-catalogue.d.ts +21 -1
- package/dist/api/partner-catalogue.js +28 -1
- package/dist/api/partner-catalogue.js.map +1 -1
- package/dist/api/partner-reader-nextory.d.ts +52 -0
- package/dist/api/partner-reader-nextory.js +92 -0
- package/dist/api/partner-reader-nextory.js.map +1 -0
- package/dist/api/partner-reader-youscribe.d.ts +63 -0
- package/dist/api/partner-reader-youscribe.js +97 -0
- package/dist/api/partner-reader-youscribe.js.map +1 -0
- package/dist/api/profiles.d.ts +1 -1
- package/dist/api/profiles.js.map +1 -1
- package/dist/api/search.d.ts +6 -1
- package/dist/api/search.js +10 -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.js.map +1 -1
- package/dist/api/tutoring-requests.d.ts +1 -1
- package/dist/api/tutoring-requests.js.map +1 -1
- package/dist/auth.d.ts +1 -1
- package/dist/chunks/client2.d.ts +1 -1
- package/dist/chunks/connection.d.ts +1 -1
- package/dist/chunks/index.d.ts +542 -508
- 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 +7 -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-customer.d.ts +1 -1
- package/dist/react/admin-customer.js +1 -1
- package/dist/react/admin-customer.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-device.d.ts +1 -1
- package/dist/react/auth-device.js +1 -1
- package/dist/react/auth-device.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 +1 -1
- package/dist/react/biblio-billing-webhooks.js +1 -1
- package/dist/react/biblio-billing-webhooks.js.map +1 -1
- package/dist/react/biblio-billing.d.ts +1 -1
- package/dist/react/biblio-billing.js +1 -1
- package/dist/react/biblio-billing.js.map +1 -1
- 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 +1 -1
- package/dist/react/biblio-learning-author-profiles.js +1 -1
- package/dist/react/biblio-learning-author-profiles.js.map +1 -1
- package/dist/react/biblio-learning-authoring.d.ts +1 -1
- package/dist/react/biblio-learning-authoring.js +1 -1
- package/dist/react/biblio-learning-authoring.js.map +1 -1
- package/dist/react/biblio-learning-editorial.d.ts +1 -1
- package/dist/react/biblio-learning-editorial.js +1 -1
- package/dist/react/biblio-learning-editorial.js.map +1 -1
- package/dist/react/biblio-learning-feedback.d.ts +1 -1
- package/dist/react/biblio-learning-feedback.js +1 -1
- package/dist/react/biblio-learning-feedback.js.map +1 -1
- package/dist/react/biblio-learning-finance.d.ts +1 -1
- package/dist/react/biblio-learning-finance.js +1 -1
- package/dist/react/biblio-learning-finance.js.map +1 -1
- package/dist/react/biblio-learning-integrations.d.ts +1 -1
- package/dist/react/biblio-learning-integrations.js +1 -1
- package/dist/react/biblio-learning-integrations.js.map +1 -1
- package/dist/react/biblio-learning-membership.d.ts +1 -1
- package/dist/react/biblio-learning-membership.js +1 -1
- package/dist/react/biblio-learning-membership.js.map +1 -1
- package/dist/react/biblio-learning.d.ts +1 -1
- package/dist/react/biblio-learning.js +1 -1
- package/dist/react/biblio-learning.js.map +1 -1
- 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/biblio-youscribe.d.ts +81 -0
- package/dist/react/biblio-youscribe.js +128 -0
- package/dist/react/biblio-youscribe.js.map +1 -0
- 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 +5 -3
- package/dist/react/index.js +5 -3
- package/dist/react/partner-catalogue.d.ts +48 -1
- package/dist/react/partner-catalogue.js +54 -2
- package/dist/react/partner-catalogue.js.map +1 -1
- package/dist/react/partner-reader-nextory.d.ts +127 -0
- package/dist/react/partner-reader-nextory.js +190 -0
- package/dist/react/partner-reader-nextory.js.map +1 -0
- package/dist/react/partner-reader-youscribe.d.ts +152 -0
- package/dist/react/partner-reader-youscribe.js +224 -0
- package/dist/react/partner-reader-youscribe.js.map +1 -0
- 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 +6 -1
- package/dist/react/search.js +11 -2
- 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
- package/dist/api/partner-reader.d.ts +0 -96
- package/dist/api/partner-reader.js +0 -164
- package/dist/api/partner-reader.js.map +0 -1
- package/dist/react/partner-reader.d.ts +0 -261
- package/dist/react/partner-reader.js +0 -368
- package/dist/react/partner-reader.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"biblio-learning-feedback.js","names":[],"sources":["../../src/react/biblio-learning-feedback/biblio-learning-feedback.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.14.2\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 HTTPExceptionResponse,\n LearningAuthorStatisticsParams,\n LearningCatalogueCustomerStatisticsParams,\n LearningCourseStatsPage,\n LearningCourseStatsRead,\n LearningCustomerCourseStatisticsParams,\n LearningCustomerGrantWrite,\n LearningCustomerStatisticsParams,\n LearningCustomerStatsRead,\n LearningFeedbackPage,\n LearningFeedbackRead,\n LearningFeedbackWrite,\n LearningOwnFeedbackParams,\n LearningReportingScopePage,\n LearningReportingScopesParams,\n LearningSurveyRead,\n LearningTenantStatsRead,\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 getLearningSetCustomerReporterUrl = (catalogueId: number,\n tenantId: number,) => {\n\n\n\n\n return `/learning/author/catalogues/${catalogueId}/customers/${tenantId}/reporters`\n}\n\n/**\n * Enable or disable reporting for exactly this catalogue, customer and user. Requires catalogue review authority or global commercial authority; a finance-only catalogue grant cannot manage reporters. Enabling requires an active independent member of the customer; disabling can revoke a former member. This does not grant general tenant administration or course access. Success returns no body.\n * @summary Grant or revoke a catalogue/customer reporter\n */\nexport const learningSetCustomerReporter = async (catalogueId: number,\n tenantId: number,\n learningCustomerGrantWrite: LearningCustomerGrantWrite, 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>(getLearningSetCustomerReporterUrl(catalogueId,tenantId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningCustomerGrantWrite)\n }\n);}\n\n\n\n\n\nexport const getLearningSetCustomerReporterMutationKey = () => ['learningSetCustomerReporter'] as const;\n\nexport const getLearningSetCustomerReporterMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSetCustomerReporter>>, TError,LearningSetCustomerReporterMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningSetCustomerReporter>>, TError,LearningSetCustomerReporterMutationVariables, TContext> => {\n\nconst mutationKey = getLearningSetCustomerReporterMutationKey();\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 learningSetCustomerReporter>>, LearningSetCustomerReporterMutationVariables> = (props) => {\n const {catalogueId,tenantId,data} = props ?? {};\n\n return learningSetCustomerReporter(catalogueId,tenantId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningSetCustomerReporterMutationResult = NonNullable<Awaited<ReturnType<typeof learningSetCustomerReporter>>>\n export type LearningSetCustomerReporterMutationBody = BodyType<LearningCustomerGrantWrite>\n export type LearningSetCustomerReporterMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningSetCustomerReporterMutationVariables = {catalogueId: number;tenantId: number;data: BodyType<LearningCustomerGrantWrite>}\n\n /**\n * @summary Grant or revoke a catalogue/customer reporter\n */\nexport const useLearningSetCustomerReporter = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSetCustomerReporter>>, TError,LearningSetCustomerReporterMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningSetCustomerReporter>>,\n TError,\n LearningSetCustomerReporterMutationVariables,\n TContext\n > => {\n return useMutation(getLearningSetCustomerReporterMutationOptions(options), queryClient);\n }\n export const getLearningAuthorStatisticsUrl = (courseId: number,\n params: LearningAuthorStatisticsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/author/courses/${courseId}/statistics?${stringifiedParams}` : `/learning/author/courses/${courseId}/statistics`\n}\n\n/**\n * Aggregate this course across all recorded tenant contexts. Requires an assigned course author, a reviewer for its active catalogue, or a global ADMIN/SUPPORT read operator. It does not expose individual learner records. Dependent profiles and support impersonation are refused. Activity uses inclusive startsOn and exclusive endsBefore accounting dates; feedback uses midnight Europe/Paris boundaries. Intervals must span 1–366 days. Active learners are distinct users with activity records, activeSeconds sums recorded seconds, and lessonActivityRecords counts stored activity rows, not completions or sessions. Feedback is counted independently by creation time; averageRating is null with no feedback and otherwise rounded to two decimals.\n * @summary Read aggregate statistics for an authored course\n */\nexport const learningAuthorStatistics = async (courseId: number,\n params: LearningAuthorStatisticsParams, options?: Parameters<typeof request>[1]): Promise<LearningCourseStatsRead> => {\n\n return request<LearningCourseStatsRead>(getLearningAuthorStatisticsUrl(courseId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningAuthorStatisticsQueryKey = (courseId: number,\n params?: LearningAuthorStatisticsParams,) => {\n return [\n `/learning/author/courses/${courseId}/statistics`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningAuthorStatisticsQueryOptions = <TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(courseId: number,\n params: LearningAuthorStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningAuthorStatisticsQueryKey(courseId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningAuthorStatistics>>> = ({ signal }) => learningAuthorStatistics(courseId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: courseId !== null && courseId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningAuthorStatisticsQueryResult = NonNullable<Awaited<ReturnType<typeof learningAuthorStatistics>>>\nexport type LearningAuthorStatisticsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningAuthorStatistics<TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: LearningAuthorStatisticsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningAuthorStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningAuthorStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningAuthorStatistics<TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: LearningAuthorStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningAuthorStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningAuthorStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningAuthorStatistics<TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: LearningAuthorStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read aggregate statistics for an authored course\n */\n\nexport function useLearningAuthorStatistics<TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: LearningAuthorStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningAuthorStatisticsQueryOptions(courseId,params,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 getLearningOwnFeedbackUrl = (courseId: number,\n params?: LearningOwnFeedbackParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/courses/${courseId}/feedback?${stringifiedParams}` : `/learning/courses/${courseId}/feedback`\n}\n\n/**\n * Page only the effective profile’s feedback for the course, newest creation time then ID first. Includes native and historical records. An unmatched course ID returns an empty page, not another learner’s feedback.\n * @summary List this profile’s course feedback\n */\nexport const learningOwnFeedback = async (courseId: number,\n params?: LearningOwnFeedbackParams, options?: Parameters<typeof request>[1]): Promise<LearningFeedbackPage> => {\n\n return request<LearningFeedbackPage>(getLearningOwnFeedbackUrl(courseId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningOwnFeedbackQueryKey = (courseId: number,\n params?: LearningOwnFeedbackParams,) => {\n return [\n `/learning/courses/${courseId}/feedback`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningOwnFeedbackQueryOptions = <TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(courseId: number,\n params?: LearningOwnFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningOwnFeedbackQueryKey(courseId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningOwnFeedback>>> = ({ signal }) => learningOwnFeedback(courseId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: courseId !== null && courseId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningOwnFeedbackQueryResult = NonNullable<Awaited<ReturnType<typeof learningOwnFeedback>>>\nexport type LearningOwnFeedbackQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningOwnFeedback<TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: undefined | LearningOwnFeedbackParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningOwnFeedback>>,\n TError,\n Awaited<ReturnType<typeof learningOwnFeedback>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningOwnFeedback<TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params?: LearningOwnFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningOwnFeedback>>,\n TError,\n Awaited<ReturnType<typeof learningOwnFeedback>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningOwnFeedback<TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params?: LearningOwnFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List this profile’s course feedback\n */\n\nexport function useLearningOwnFeedback<TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params?: LearningOwnFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningOwnFeedbackQueryOptions(courseId,params,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 getLearningSubmitFeedbackUrl = (courseId: number,) => {\n\n\n\n\n return `/learning/courses/${courseId}/feedback`\n}\n\n/**\n * Create or replace the selected profile’s native feedback at its current enrollment progress. Requires a current enrollment with positive progress. A different progress value produces a separate record; imported feedback is not overwritten. Tenant attribution comes from the latest learning session. Support impersonation is refused.\n * @summary Save private feedback at current course progress\n */\nexport const learningSubmitFeedback = async (courseId: number,\n learningFeedbackWrite: LearningFeedbackWrite, options?: Parameters<typeof request>[1]): Promise<LearningFeedbackRead> => {\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<LearningFeedbackRead>(getLearningSubmitFeedbackUrl(courseId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningFeedbackWrite)\n }\n);}\n\n\n\n\n\nexport const getLearningSubmitFeedbackMutationKey = () => ['learningSubmitFeedback'] as const;\n\nexport const getLearningSubmitFeedbackMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSubmitFeedback>>, TError,LearningSubmitFeedbackMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningSubmitFeedback>>, TError,LearningSubmitFeedbackMutationVariables, TContext> => {\n\nconst mutationKey = getLearningSubmitFeedbackMutationKey();\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 learningSubmitFeedback>>, LearningSubmitFeedbackMutationVariables> = (props) => {\n const {courseId,data} = props ?? {};\n\n return learningSubmitFeedback(courseId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningSubmitFeedbackMutationResult = NonNullable<Awaited<ReturnType<typeof learningSubmitFeedback>>>\n export type LearningSubmitFeedbackMutationBody = BodyType<LearningFeedbackWrite>\n export type LearningSubmitFeedbackMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningSubmitFeedbackMutationVariables = {courseId: number;data: BodyType<LearningFeedbackWrite>}\n\n /**\n * @summary Save private feedback at current course progress\n */\nexport const useLearningSubmitFeedback = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSubmitFeedback>>, TError,LearningSubmitFeedbackMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningSubmitFeedback>>,\n TError,\n LearningSubmitFeedbackMutationVariables,\n TContext\n > => {\n return useMutation(getLearningSubmitFeedbackMutationOptions(options), queryClient);\n }\n export const getLearningCreateSurveyUrl = (courseId: number,) => {\n\n\n\n\n return `/learning/courses/${courseId}/survey-link`\n}\n\n/**\n * Create a 30-day Typeform invitation bound to the current profile, course, current positive progress and latest learning tenant. The URL contains only an opaque mozaik_token, never patron IDs or email. The Typeform form must define that hidden field. Limited to 3 requests per 10 minutes, 10 per hour and 20 per day per profile; support impersonation is refused.\n * @summary Create a private course survey invitation\n */\nexport const learningCreateSurvey = async (courseId: number, options?: Parameters<typeof request>[1]): Promise<LearningSurveyRead> => {\n\n return request<LearningSurveyRead>(getLearningCreateSurveyUrl(courseId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningCreateSurveyMutationKey = () => ['learningCreateSurvey'] as const;\n\nexport const getLearningCreateSurveyMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningCreateSurvey>>, TError,LearningCreateSurveyMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningCreateSurvey>>, TError,LearningCreateSurveyMutationVariables, TContext> => {\n\nconst mutationKey = getLearningCreateSurveyMutationKey();\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 learningCreateSurvey>>, LearningCreateSurveyMutationVariables> = (props) => {\n const {courseId} = props ?? {};\n\n return learningCreateSurvey(courseId,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningCreateSurveyMutationResult = NonNullable<Awaited<ReturnType<typeof learningCreateSurvey>>>\n\n export type LearningCreateSurveyMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningCreateSurveyMutationVariables = {courseId: number}\n\n /**\n * @summary Create a private course survey invitation\n */\nexport const useLearningCreateSurvey = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningCreateSurvey>>, TError,LearningCreateSurveyMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningCreateSurvey>>,\n TError,\n LearningCreateSurveyMutationVariables,\n TContext\n > => {\n return useMutation(getLearningCreateSurveyMutationOptions(options), queryClient);\n }\n export const getLearningCatalogueCustomerStatisticsUrl = (catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/reports/catalogues/${catalogueId}/customers/${tenantId}?${stringifiedParams}` : `/learning/reports/catalogues/${catalogueId}/customers/${tenantId}`\n}\n\n/**\n * Aggregate only the requested customer and courses in the requested active catalogue. Allowed for global read operators, catalogue reviewers/finance holders, or an active customer reporter still affiliated with that customer. Unauthorized scopes are concealed as 404; support impersonation is refused. Activity uses inclusive startsOn and exclusive endsBefore accounting dates; feedback uses midnight Europe/Paris boundaries. Intervals must span 1–366 days. Active learners are distinct users with activity records, activeSeconds sums recorded seconds, and lessonActivityRecords counts stored activity rows, not completions or sessions. Feedback is counted independently by creation time; averageRating is null with no feedback and otherwise rounded to two decimals.\n * @summary Read a catalogue/customer learning summary\n */\nexport const learningCatalogueCustomerStatistics = async (catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: Parameters<typeof request>[1]): Promise<LearningCustomerStatsRead> => {\n\n return request<LearningCustomerStatsRead>(getLearningCatalogueCustomerStatisticsUrl(catalogueId,tenantId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningCatalogueCustomerStatisticsQueryKey = (catalogueId: number,\n tenantId: number,\n params?: LearningCatalogueCustomerStatisticsParams,) => {\n return [\n `/learning/reports/catalogues/${catalogueId}/customers/${tenantId}`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningCatalogueCustomerStatisticsQueryOptions = <TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningCatalogueCustomerStatisticsQueryKey(catalogueId,tenantId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>> = ({ signal }) => learningCatalogueCustomerStatistics(catalogueId,tenantId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: catalogueId !== null && catalogueId !== undefined && tenantId !== null && tenantId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningCatalogueCustomerStatisticsQueryResult = NonNullable<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>>\nexport type LearningCatalogueCustomerStatisticsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningCatalogueCustomerStatistics<TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCatalogueCustomerStatistics<TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCatalogueCustomerStatistics<TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read a catalogue/customer learning summary\n */\n\nexport function useLearningCatalogueCustomerStatistics<TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningCatalogueCustomerStatisticsQueryOptions(catalogueId,tenantId,params,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 getLearningReportingScopesUrl = (params?: LearningReportingScopesParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/reports/scopes?${stringifiedParams}` : `/learning/reports/scopes`\n}\n\n/**\n * Page active catalogue/customer grants held by this effective profile where the catalogue remains active and the profile is still a primary-tenant or MEMBER-role affiliate. Ordered by catalogue then tenant ID. This discovery list contains customer mandates, not every scope available through global or catalogue authority. Support impersonation is refused.\n * @summary List the profile’s customer reporting mandates\n */\nexport const learningReportingScopes = async (params?: LearningReportingScopesParams, options?: Parameters<typeof request>[1]): Promise<LearningReportingScopePage> => {\n\n return request<LearningReportingScopePage>(getLearningReportingScopesUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningReportingScopesQueryKey = (params?: LearningReportingScopesParams,) => {\n return [\n `/learning/reports/scopes`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningReportingScopesQueryOptions = <TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: LearningReportingScopesParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningReportingScopesQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningReportingScopes>>> = ({ signal }) => learningReportingScopes(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningReportingScopesQueryResult = NonNullable<Awaited<ReturnType<typeof learningReportingScopes>>>\nexport type LearningReportingScopesQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningReportingScopes<TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | LearningReportingScopesParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningReportingScopes>>,\n TError,\n Awaited<ReturnType<typeof learningReportingScopes>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningReportingScopes<TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: LearningReportingScopesParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningReportingScopes>>,\n TError,\n Awaited<ReturnType<typeof learningReportingScopes>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningReportingScopes<TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: LearningReportingScopesParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List the profile’s customer reporting mandates\n */\n\nexport function useLearningReportingScopes<TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: LearningReportingScopesParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningReportingScopesQueryOptions(params,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 getLearningCustomerStatisticsUrl = (tenantId: number,\n params: LearningCustomerStatisticsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/reports/tenants/${tenantId}?${stringifiedParams}` : `/learning/reports/tenants/${tenantId}`\n}\n\n/**\n * Aggregate all recorded learning activity and feedback attributed to this tenant. Requires ADMIN or SUPPORT staff authority within the tenant staff scope; customer reporter grants alone do not authorize this endpoint. Support impersonation is refused. Activity uses inclusive startsOn and exclusive endsBefore accounting dates; feedback uses midnight Europe/Paris boundaries. Intervals must span 1–366 days. Active learners are distinct users with activity records, activeSeconds sums recorded seconds, and lessonActivityRecords counts stored activity rows, not completions or sessions. Feedback is counted independently by creation time; averageRating is null with no feedback and otherwise rounded to two decimals.\n * @summary Read staff learning totals for a customer\n */\nexport const learningCustomerStatistics = async (tenantId: number,\n params: LearningCustomerStatisticsParams, options?: Parameters<typeof request>[1]): Promise<LearningTenantStatsRead> => {\n\n return request<LearningTenantStatsRead>(getLearningCustomerStatisticsUrl(tenantId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningCustomerStatisticsQueryKey = (tenantId: number,\n params?: LearningCustomerStatisticsParams,) => {\n return [\n `/learning/reports/tenants/${tenantId}`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningCustomerStatisticsQueryOptions = <TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number,\n params: LearningCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningCustomerStatisticsQueryKey(tenantId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningCustomerStatistics>>> = ({ signal }) => learningCustomerStatistics(tenantId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: tenantId !== null && tenantId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningCustomerStatisticsQueryResult = NonNullable<Awaited<ReturnType<typeof learningCustomerStatistics>>>\nexport type LearningCustomerStatisticsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningCustomerStatistics<TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerStatisticsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCustomerStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCustomerStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCustomerStatistics<TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCustomerStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCustomerStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCustomerStatistics<TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read staff learning totals for a customer\n */\n\nexport function useLearningCustomerStatistics<TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningCustomerStatisticsQueryOptions(tenantId,params,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 getLearningCustomerCourseStatisticsUrl = (tenantId: number,\n params: LearningCustomerCourseStatisticsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/reports/tenants/${tenantId}/courses?${stringifiedParams}` : `/learning/reports/tenants/${tenantId}/courses`\n}\n\n/**\n * List only courses having activity records for this tenant in the interval, ordered by distinct active learners descending then course ID. Feedback is left joined for those courses; feedback-only courses do not appear. Requires scoped ADMIN/SUPPORT staff authority and refuses support impersonation. Distinct learner counts overlap between courses and must not be summed as a distinct tenant total. Activity uses inclusive startsOn and exclusive endsBefore accounting dates; feedback uses midnight Europe/Paris boundaries. Intervals must span 1–366 days. Active learners are distinct users with activity records, activeSeconds sums recorded seconds, and lessonActivityRecords counts stored activity rows, not completions or sessions. Feedback is counted independently by creation time; averageRating is null with no feedback and otherwise rounded to two decimals.\n * @summary List staff course statistics for a customer\n */\nexport const learningCustomerCourseStatistics = async (tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: Parameters<typeof request>[1]): Promise<LearningCourseStatsPage> => {\n\n return request<LearningCourseStatsPage>(getLearningCustomerCourseStatisticsUrl(tenantId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningCustomerCourseStatisticsQueryKey = (tenantId: number,\n params?: LearningCustomerCourseStatisticsParams,) => {\n return [\n `/learning/reports/tenants/${tenantId}/courses`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningCustomerCourseStatisticsQueryOptions = <TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningCustomerCourseStatisticsQueryKey(tenantId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>> = ({ signal }) => learningCustomerCourseStatistics(tenantId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: tenantId !== null && tenantId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningCustomerCourseStatisticsQueryResult = NonNullable<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>>\nexport type LearningCustomerCourseStatisticsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningCustomerCourseStatistics<TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCustomerCourseStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCustomerCourseStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCustomerCourseStatistics<TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCustomerCourseStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCustomerCourseStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCustomerCourseStatistics<TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List staff course statistics for a customer\n */\n\nexport function useLearningCustomerCourseStatistics<TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningCustomerCourseStatisticsQueryOptions(tenantId,params,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\n"],"mappings":";;;;;;;;;;;AAuDA,MAAM,gBAAqC,OAAU,aAAqC;CACxF,MAAM,SAAS,EAAE,SAAS;CAC1B,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;EAGpC,IAAI,QAAQ,YAAY;EACxB,OAAO,eAAe,QAAQ,KAAK;GACjC,YAAY;GACZ,cAAc;GACd,WAAY,MAAkC;EAChD,CAAC;CACH;CACA,OAAO;AACT;AAEA,MAAa,qCAAqC,aAC9C,aAAsB;CAKxB,OAAO,+BAA+B,YAAY,aAAa,SAAS;AAC1E;;;;;AAMA,MAAa,8BAA8B,OAAO,aAC9C,UACA,4BAAwD,YAA2D;CAEnH,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAAc,kCAAkC,aAAY,QAAQ,GACzE;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,0BAA0B;CACjD,CACF;AAAE;AAMF,MAAa,kDAAkD,CAAC,6BAA6B;AAE7F,MAAa,iDACW,YACyH;CAEjJ,MAAM,cAAc,0CAA0C;CAC9D,MAAM,EAAC,UAAU,iBAAiB,SAAS,mBAAkB,UACvD,QAAQ,YAAY,iBAAiB,QAAQ,YAAY,QAAQ,SAAS,cAC1E,UACE;EAAC,GAAG;EAAS,UAAU;GAAC,GAAG,QAAQ;GAAU;EAAW;CAAC,IACzD;EAAC,UAAU,EAAE,YAAa;EAAG,SAAS,KAAA;CAAS;CAKjD,MAAM,cAAuI,UAAU;EACnJ,MAAM,EAAC,aAAY,UAAS,SAAQ,SAAS,CAAC;EAE9C,OAAQ,4BAA4B,aAAY,UAAS,MAAK,cAAc;CAC9E;CAON,OAAQ;EAAE;EAAY,GAAG;CAAgB;AAAC;;;;AAU5C,MAAa,kCACW,SACrB,gBAKQ;CACL,OAAO,YAAY,8CAA8C,OAAO,GAAG,WAAW;AACxF;AACA,MAAa,kCAAkC,UAC/C,WAA4C;CAC9C,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,4BAA4B,SAAS,cAAc,sBAAsB,4BAA4B,SAAS;AACtJ;;;;;AAMA,MAAa,2BAA2B,OAAO,UAC3C,QAAwC,YAA8E;CAExH,OAAO,QAAiC,+BAA+B,UAAS,MAAM,GACtF;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAMF,MAAa,uCAAuC,UAChD,WAA6C;CAC7C,OAAO,CACP,4BAA4B,SAAS,cAAc,GAAI,SAAS,CAAC,MAAM,IAAI,CAAC,CAC5E;AACA;AAGJ,MAAa,2CAA8K,UACvL,QAAwC,YACvC;CAEL,MAAM,EAAC,OAAO,cAAc,SAAS,mBAAkB,WAAW,CAAC;CAEjE,MAAM,WAAY,cAAc,YAAY,oCAAoC,UAAS,MAAM;CAI7F,MAAM,WAAgF,EAAE,aAAa,yBAAyB,UAAS,QAAQ;EAAE;EAAQ,GAAG;CAAe,CAAC;CAM7K,OAAQ;EAAE;EAAU;EAAS,SAAS,aAAa,QAAQ,aAAa,KAAA;EAAW,GAAG;CAAY;AACrG;;;;AAqCA,SAAgB,4BACf,UACG,QAAwC,SACzC,aACiF;CAElF,MAAM,eAAe,wCAAwC,UAAS,QAAO,OAAO;CAEpF,MAAM,QAAQ,SAAS,cAAc,WAAW;CAEhD,OAAO,aAAa,OAAO,aAAa,QAAQ;AAClD;AAOA,MAAa,6BAA6B,UACtC,WAAwC;CAC1C,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,qBAAqB,SAAS,YAAY,sBAAsB,qBAAqB,SAAS;AACtI;;;;;AAMA,MAAa,sBAAsB,OAAO,UACtC,QAAoC,YAA2E;CAEjH,OAAO,QAA8B,0BAA0B,UAAS,MAAM,GAC9E;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAMF,MAAa,kCAAkC,UAC3C,WAAwC;CACxC,OAAO,CACP,qBAAqB,SAAS,YAAY,GAAI,SAAS,CAAC,MAAM,IAAI,CAAC,CACnE;AACA;AAGJ,MAAa,sCAAoK,UAC7K,QAAoC,YACnC;CAEL,MAAM,EAAC,OAAO,cAAc,SAAS,mBAAkB,WAAW,CAAC;CAEjE,MAAM,WAAY,cAAc,YAAY,+BAA+B,UAAS,MAAM;CAIxF,MAAM,WAA2E,EAAE,aAAa,oBAAoB,UAAS,QAAQ;EAAE;EAAQ,GAAG;CAAe,CAAC;CAMnK,OAAQ;EAAE;EAAU;EAAS,SAAS,aAAa,QAAQ,aAAa,KAAA;EAAW,GAAG;CAAY;AACrG;;;;AAqCA,SAAgB,uBACf,UACG,QAAoC,SACrC,aACiF;CAElF,MAAM,eAAe,mCAAmC,UAAS,QAAO,OAAO;CAE/E,MAAM,QAAQ,SAAS,cAAc,WAAW;CAEhD,OAAO,aAAa,OAAO,aAAa,QAAQ;AAClD;AAOA,MAAa,gCAAgC,aAAsB;CAKjE,OAAO,qBAAqB,SAAS;AACvC;;;;;AAMA,MAAa,yBAAyB,OAAO,UACzC,uBAA8C,YAA2E;CAEzH,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAA8B,6BAA6B,QAAQ,GACxE;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,qBAAqB;CAC5C,CACF;AAAE;AAMF,MAAa,6CAA6C,CAAC,wBAAwB;AAEnF,MAAa,4CACW,YAC+G;CAEvI,MAAM,cAAc,qCAAqC;CACzD,MAAM,EAAC,UAAU,iBAAiB,SAAS,mBAAkB,UACvD,QAAQ,YAAY,iBAAiB,QAAQ,YAAY,QAAQ,SAAS,cAC1E,UACE;EAAC,GAAG;EAAS,UAAU;GAAC,GAAG,QAAQ;GAAU;EAAW;CAAC,IACzD;EAAC,UAAU,EAAE,YAAa;EAAG,SAAS,KAAA;CAAS;CAKjD,MAAM,cAA6H,UAAU;EACzI,MAAM,EAAC,UAAS,SAAQ,SAAS,CAAC;EAElC,OAAQ,uBAAuB,UAAS,MAAK,cAAc;CAC7D;CAON,OAAQ;EAAE;EAAY,GAAG;CAAgB;AAAC;;;;AAU5C,MAAa,6BACW,SACrB,gBAKQ;CACL,OAAO,YAAY,yCAAyC,OAAO,GAAG,WAAW;AACnF;AACA,MAAa,8BAA8B,aAAsB;CAKnE,OAAO,qBAAqB,SAAS;AACvC;;;;;AAMA,MAAa,uBAAuB,OAAO,UAAkB,YAAyE;CAEpI,OAAO,QAA4B,2BAA2B,QAAQ,GACtE;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAMF,MAAa,2CAA2C,CAAC,sBAAsB;AAE/E,MAAa,0CACW,YAC2G;CAEnI,MAAM,cAAc,mCAAmC;CACvD,MAAM,EAAC,UAAU,iBAAiB,SAAS,mBAAkB,UACvD,QAAQ,YAAY,iBAAiB,QAAQ,YAAY,QAAQ,SAAS,cAC1E,UACE;EAAC,GAAG;EAAS,UAAU;GAAC,GAAG,QAAQ;GAAU;EAAW;CAAC,IACzD;EAAC,UAAU,EAAE,YAAa;EAAG,SAAS,KAAA;CAAS;CAKjD,MAAM,cAAyH,UAAU;EACrI,MAAM,EAAC,aAAY,SAAS,CAAC;EAE7B,OAAQ,qBAAqB,UAAS,cAAc;CACtD;CAON,OAAQ;EAAE;EAAY,GAAG;CAAgB;AAAC;;;;AAU5C,MAAa,2BACW,SACrB,gBAKQ;CACL,OAAO,YAAY,uCAAuC,OAAO,GAAG,WAAW;AACjF;AACA,MAAa,6CAA6C,aAC1D,UACA,WAAuD;CACzD,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,gCAAgC,YAAY,aAAa,SAAS,GAAG,sBAAsB,gCAAgC,YAAY,aAAa;AAC5L;;;;;AAMA,MAAa,sCAAsC,OAAO,aACtD,UACA,QAAmD,YAAgF;CAErI,OAAO,QAAmC,0CAA0C,aAAY,UAAS,MAAM,GAC/G;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAMF,MAAa,kDAAkD,aAC3D,UACA,WAAwD;CACxD,OAAO,CACP,gCAAgC,YAAY,aAAa,YAAY,GAAI,SAAS,CAAC,MAAM,IAAI,CAAC,CAC9F;AACA;AAGJ,MAAa,sDAAoM,aAC7M,UACA,QAAmD,YAClD;CAEL,MAAM,EAAC,OAAO,cAAc,SAAS,mBAAkB,WAAW,CAAC;CAEjE,MAAM,WAAY,cAAc,YAAY,+CAA+C,aAAY,UAAS,MAAM;CAIpH,MAAM,WAA2F,EAAE,aAAa,oCAAoC,aAAY,UAAS,QAAQ;EAAE;EAAQ,GAAG;CAAe,CAAC;CAM/M,OAAQ;EAAE;EAAU;EAAS,SAAS,gBAAgB,QAAQ,gBAAgB,KAAA,KAAa,aAAa,QAAQ,aAAa,KAAA;EAAW,GAAG;CAAY;AAC1J;;;;AAwCA,SAAgB,uCACf,aACG,UACA,QAAmD,SACpD,aACiF;CAElF,MAAM,eAAe,mDAAmD,aAAY,UAAS,QAAO,OAAO;CAE3G,MAAM,QAAQ,SAAS,cAAc,WAAW;CAEhD,OAAO,aAAa,OAAO,aAAa,QAAQ;AAClD;AAOA,MAAa,iCAAiC,WAA4C;CACxF,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,4BAA4B,sBAAsB;AAC1F;;;;;AAMA,MAAa,0BAA0B,OAAO,QAAwC,YAAiF;CAErK,OAAO,QAAoC,8BAA8B,MAAM,GAC/E;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAMF,MAAa,sCAAsC,WAA4C;CAC3F,OAAO,CACP,4BAA4B,GAAI,SAAS,CAAC,MAAM,IAAI,CAAC,CACrD;AACA;AAGJ,MAAa,0CAA4K,QAAwC,YAC5N;CAEL,MAAM,EAAC,OAAO,cAAc,SAAS,mBAAkB,WAAW,CAAC;CAEjE,MAAM,WAAY,cAAc,YAAY,mCAAmC,MAAM;CAInF,MAAM,WAA+E,EAAE,aAAa,wBAAwB,QAAQ;EAAE;EAAQ,GAAG;CAAe,CAAC;CAMlK,OAAQ;EAAE;EAAU;EAAS,GAAG;CAAY;AAC/C;;;;AAkCA,SAAgB,2BACf,QAAwC,SACtC,aACiF;CAElF,MAAM,eAAe,uCAAuC,QAAO,OAAO;CAE1E,MAAM,QAAQ,SAAS,cAAc,WAAW;CAEhD,OAAO,aAAa,OAAO,aAAa,QAAQ;AAClD;AAOA,MAAa,oCAAoC,UAC7C,WAA8C;CAChD,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,6BAA6B,SAAS,GAAG,sBAAsB,6BAA6B;AACpI;;;;;AAMA,MAAa,6BAA6B,OAAO,UAC7C,QAA0C,YAA8E;CAE1H,OAAO,QAAiC,iCAAiC,UAAS,MAAM,GACxF;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAMF,MAAa,yCAAyC,UAClD,WAA+C;CAC/C,OAAO,CACP,6BAA6B,YAAY,GAAI,SAAS,CAAC,MAAM,IAAI,CAAC,CAClE;AACA;AAGJ,MAAa,6CAAkL,UAC3L,QAA0C,YACzC;CAEL,MAAM,EAAC,OAAO,cAAc,SAAS,mBAAkB,WAAW,CAAC;CAEjE,MAAM,WAAY,cAAc,YAAY,sCAAsC,UAAS,MAAM;CAI/F,MAAM,WAAkF,EAAE,aAAa,2BAA2B,UAAS,QAAQ;EAAE;EAAQ,GAAG;CAAe,CAAC;CAMjL,OAAQ;EAAE;EAAU;EAAS,SAAS,aAAa,QAAQ,aAAa,KAAA;EAAW,GAAG;CAAY;AACrG;;;;AAqCA,SAAgB,8BACf,UACG,QAA0C,SAC3C,aACiF;CAElF,MAAM,eAAe,0CAA0C,UAAS,QAAO,OAAO;CAEtF,MAAM,QAAQ,SAAS,cAAc,WAAW;CAEhD,OAAO,aAAa,OAAO,aAAa,QAAQ;AAClD;AAOA,MAAa,0CAA0C,UACnD,WAAoD;CACtD,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,6BAA6B,SAAS,WAAW,sBAAsB,6BAA6B,SAAS;AACrJ;;;;;AAMA,MAAa,mCAAmC,OAAO,UACnD,QAAgD,YAA8E;CAEhI,OAAO,QAAiC,uCAAuC,UAAS,MAAM,GAC9F;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAMF,MAAa,+CAA+C,UACxD,WAAqD;CACrD,OAAO,CACP,6BAA6B,SAAS,WAAW,GAAI,SAAS,CAAC,MAAM,IAAI,CAAC,CAC1E;AACA;AAGJ,MAAa,mDAA8L,UACvM,QAAgD,YAC/C;CAEL,MAAM,EAAC,OAAO,cAAc,SAAS,mBAAkB,WAAW,CAAC;CAEjE,MAAM,WAAY,cAAc,YAAY,4CAA4C,UAAS,MAAM;CAIrG,MAAM,WAAwF,EAAE,aAAa,iCAAiC,UAAS,QAAQ;EAAE;EAAQ,GAAG;CAAe,CAAC;CAM7L,OAAQ;EAAE;EAAU;EAAS,SAAS,aAAa,QAAQ,aAAa,KAAA;EAAW,GAAG;CAAY;AACrG;;;;AAqCA,SAAgB,oCACf,UACG,QAAgD,SACjD,aACiF;CAElF,MAAM,eAAe,gDAAgD,UAAS,QAAO,OAAO;CAE5F,MAAM,QAAQ,SAAS,cAAc,WAAW;CAEhD,OAAO,aAAa,OAAO,aAAa,QAAQ;AAClD"}
|
|
1
|
+
{"version":3,"file":"biblio-learning-feedback.js","names":[],"sources":["../../src/react/biblio-learning-feedback/biblio-learning-feedback.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.15.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 HTTPExceptionResponse,\n LearningAuthorStatisticsParams,\n LearningCatalogueCustomerStatisticsParams,\n LearningCourseStatsPage,\n LearningCourseStatsRead,\n LearningCustomerCourseStatisticsParams,\n LearningCustomerGrantWrite,\n LearningCustomerStatisticsParams,\n LearningCustomerStatsRead,\n LearningFeedbackPage,\n LearningFeedbackRead,\n LearningFeedbackWrite,\n LearningOwnFeedbackParams,\n LearningReportingScopePage,\n LearningReportingScopesParams,\n LearningSurveyRead,\n LearningTenantStatsRead,\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 getLearningSetCustomerReporterUrl = (catalogueId: number,\n tenantId: number,) => {\n\n\n\n\n return `/learning/author/catalogues/${catalogueId}/customers/${tenantId}/reporters`\n}\n\n/**\n * Enable or disable reporting for exactly this catalogue, customer and user. Requires catalogue review authority or global commercial authority; a finance-only catalogue grant cannot manage reporters. Enabling requires an active independent member of the customer; disabling can revoke a former member. This does not grant general tenant administration or course access. Success returns no body.\n * @summary Grant or revoke a catalogue/customer reporter\n */\nexport const learningSetCustomerReporter = async (catalogueId: number,\n tenantId: number,\n learningCustomerGrantWrite: LearningCustomerGrantWrite, 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>(getLearningSetCustomerReporterUrl(catalogueId,tenantId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningCustomerGrantWrite)\n }\n);}\n\n\n\n\n\nexport const getLearningSetCustomerReporterMutationKey = () => ['learningSetCustomerReporter'] as const;\n\nexport const getLearningSetCustomerReporterMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSetCustomerReporter>>, TError,LearningSetCustomerReporterMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningSetCustomerReporter>>, TError,LearningSetCustomerReporterMutationVariables, TContext> => {\n\nconst mutationKey = getLearningSetCustomerReporterMutationKey();\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 learningSetCustomerReporter>>, LearningSetCustomerReporterMutationVariables> = (props) => {\n const {catalogueId,tenantId,data} = props ?? {};\n\n return learningSetCustomerReporter(catalogueId,tenantId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningSetCustomerReporterMutationResult = NonNullable<Awaited<ReturnType<typeof learningSetCustomerReporter>>>\n export type LearningSetCustomerReporterMutationBody = BodyType<LearningCustomerGrantWrite>\n export type LearningSetCustomerReporterMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningSetCustomerReporterMutationVariables = {catalogueId: number;tenantId: number;data: BodyType<LearningCustomerGrantWrite>}\n\n /**\n * @summary Grant or revoke a catalogue/customer reporter\n */\nexport const useLearningSetCustomerReporter = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSetCustomerReporter>>, TError,LearningSetCustomerReporterMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningSetCustomerReporter>>,\n TError,\n LearningSetCustomerReporterMutationVariables,\n TContext\n > => {\n return useMutation(getLearningSetCustomerReporterMutationOptions(options), queryClient);\n }\n export const getLearningAuthorStatisticsUrl = (courseId: number,\n params: LearningAuthorStatisticsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/author/courses/${courseId}/statistics?${stringifiedParams}` : `/learning/author/courses/${courseId}/statistics`\n}\n\n/**\n * Aggregate this course across all recorded tenant contexts. Requires an assigned course author, a reviewer for its active catalogue, or a global ADMIN/SUPPORT read operator. It does not expose individual learner records. Dependent profiles and support impersonation are refused. Activity uses inclusive startsOn and exclusive endsBefore accounting dates; feedback uses midnight Europe/Paris boundaries. Intervals must span 1–366 days. Active learners are distinct users with activity records, activeSeconds sums recorded seconds, and lessonActivityRecords counts stored activity rows, not completions or sessions. Feedback is counted independently by creation time; averageRating is null with no feedback and otherwise rounded to two decimals.\n * @summary Read aggregate statistics for an authored course\n */\nexport const learningAuthorStatistics = async (courseId: number,\n params: LearningAuthorStatisticsParams, options?: Parameters<typeof request>[1]): Promise<LearningCourseStatsRead> => {\n\n return request<LearningCourseStatsRead>(getLearningAuthorStatisticsUrl(courseId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningAuthorStatisticsQueryKey = (courseId: number,\n params?: LearningAuthorStatisticsParams,) => {\n return [\n `/learning/author/courses/${courseId}/statistics`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningAuthorStatisticsQueryOptions = <TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(courseId: number,\n params: LearningAuthorStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningAuthorStatisticsQueryKey(courseId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningAuthorStatistics>>> = ({ signal }) => learningAuthorStatistics(courseId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: courseId !== null && courseId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningAuthorStatisticsQueryResult = NonNullable<Awaited<ReturnType<typeof learningAuthorStatistics>>>\nexport type LearningAuthorStatisticsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningAuthorStatistics<TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: LearningAuthorStatisticsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningAuthorStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningAuthorStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningAuthorStatistics<TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: LearningAuthorStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningAuthorStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningAuthorStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningAuthorStatistics<TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: LearningAuthorStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read aggregate statistics for an authored course\n */\n\nexport function useLearningAuthorStatistics<TData = Awaited<ReturnType<typeof learningAuthorStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: LearningAuthorStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningAuthorStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningAuthorStatisticsQueryOptions(courseId,params,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 getLearningOwnFeedbackUrl = (courseId: number,\n params?: LearningOwnFeedbackParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/courses/${courseId}/feedback?${stringifiedParams}` : `/learning/courses/${courseId}/feedback`\n}\n\n/**\n * Page only the effective profile’s feedback for the course, newest creation time then ID first. Includes native and historical records. An unmatched course ID returns an empty page, not another learner’s feedback.\n * @summary List this profile’s course feedback\n */\nexport const learningOwnFeedback = async (courseId: number,\n params?: LearningOwnFeedbackParams, options?: Parameters<typeof request>[1]): Promise<LearningFeedbackPage> => {\n\n return request<LearningFeedbackPage>(getLearningOwnFeedbackUrl(courseId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningOwnFeedbackQueryKey = (courseId: number,\n params?: LearningOwnFeedbackParams,) => {\n return [\n `/learning/courses/${courseId}/feedback`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningOwnFeedbackQueryOptions = <TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(courseId: number,\n params?: LearningOwnFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningOwnFeedbackQueryKey(courseId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningOwnFeedback>>> = ({ signal }) => learningOwnFeedback(courseId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: courseId !== null && courseId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningOwnFeedbackQueryResult = NonNullable<Awaited<ReturnType<typeof learningOwnFeedback>>>\nexport type LearningOwnFeedbackQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningOwnFeedback<TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params: undefined | LearningOwnFeedbackParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningOwnFeedback>>,\n TError,\n Awaited<ReturnType<typeof learningOwnFeedback>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningOwnFeedback<TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params?: LearningOwnFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningOwnFeedback>>,\n TError,\n Awaited<ReturnType<typeof learningOwnFeedback>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningOwnFeedback<TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params?: LearningOwnFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List this profile’s course feedback\n */\n\nexport function useLearningOwnFeedback<TData = Awaited<ReturnType<typeof learningOwnFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n courseId: number,\n params?: LearningOwnFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningOwnFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningOwnFeedbackQueryOptions(courseId,params,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 getLearningSubmitFeedbackUrl = (courseId: number,) => {\n\n\n\n\n return `/learning/courses/${courseId}/feedback`\n}\n\n/**\n * Create or replace the selected profile’s native feedback at its current enrollment progress. Requires a current enrollment with positive progress. A different progress value produces a separate record; imported feedback is not overwritten. Tenant attribution comes from the latest learning session. Support impersonation is refused.\n * @summary Save private feedback at current course progress\n */\nexport const learningSubmitFeedback = async (courseId: number,\n learningFeedbackWrite: LearningFeedbackWrite, options?: Parameters<typeof request>[1]): Promise<LearningFeedbackRead> => {\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<LearningFeedbackRead>(getLearningSubmitFeedbackUrl(courseId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningFeedbackWrite)\n }\n);}\n\n\n\n\n\nexport const getLearningSubmitFeedbackMutationKey = () => ['learningSubmitFeedback'] as const;\n\nexport const getLearningSubmitFeedbackMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSubmitFeedback>>, TError,LearningSubmitFeedbackMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningSubmitFeedback>>, TError,LearningSubmitFeedbackMutationVariables, TContext> => {\n\nconst mutationKey = getLearningSubmitFeedbackMutationKey();\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 learningSubmitFeedback>>, LearningSubmitFeedbackMutationVariables> = (props) => {\n const {courseId,data} = props ?? {};\n\n return learningSubmitFeedback(courseId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningSubmitFeedbackMutationResult = NonNullable<Awaited<ReturnType<typeof learningSubmitFeedback>>>\n export type LearningSubmitFeedbackMutationBody = BodyType<LearningFeedbackWrite>\n export type LearningSubmitFeedbackMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningSubmitFeedbackMutationVariables = {courseId: number;data: BodyType<LearningFeedbackWrite>}\n\n /**\n * @summary Save private feedback at current course progress\n */\nexport const useLearningSubmitFeedback = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningSubmitFeedback>>, TError,LearningSubmitFeedbackMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningSubmitFeedback>>,\n TError,\n LearningSubmitFeedbackMutationVariables,\n TContext\n > => {\n return useMutation(getLearningSubmitFeedbackMutationOptions(options), queryClient);\n }\n export const getLearningCreateSurveyUrl = (courseId: number,) => {\n\n\n\n\n return `/learning/courses/${courseId}/survey-link`\n}\n\n/**\n * Create a 30-day Typeform invitation bound to the current profile, course, current positive progress and latest learning tenant. The URL contains only an opaque mozaik_token, never patron IDs or email. The Typeform form must define that hidden field. Limited to 3 requests per 10 minutes, 10 per hour and 20 per day per profile; support impersonation is refused.\n * @summary Create a private course survey invitation\n */\nexport const learningCreateSurvey = async (courseId: number, options?: Parameters<typeof request>[1]): Promise<LearningSurveyRead> => {\n\n return request<LearningSurveyRead>(getLearningCreateSurveyUrl(courseId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningCreateSurveyMutationKey = () => ['learningCreateSurvey'] as const;\n\nexport const getLearningCreateSurveyMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningCreateSurvey>>, TError,LearningCreateSurveyMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof learningCreateSurvey>>, TError,LearningCreateSurveyMutationVariables, TContext> => {\n\nconst mutationKey = getLearningCreateSurveyMutationKey();\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 learningCreateSurvey>>, LearningCreateSurveyMutationVariables> = (props) => {\n const {courseId} = props ?? {};\n\n return learningCreateSurvey(courseId,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type LearningCreateSurveyMutationResult = NonNullable<Awaited<ReturnType<typeof learningCreateSurvey>>>\n\n export type LearningCreateSurveyMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type LearningCreateSurveyMutationVariables = {courseId: number}\n\n /**\n * @summary Create a private course survey invitation\n */\nexport const useLearningCreateSurvey = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof learningCreateSurvey>>, TError,LearningCreateSurveyMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof learningCreateSurvey>>,\n TError,\n LearningCreateSurveyMutationVariables,\n TContext\n > => {\n return useMutation(getLearningCreateSurveyMutationOptions(options), queryClient);\n }\n export const getLearningCatalogueCustomerStatisticsUrl = (catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/reports/catalogues/${catalogueId}/customers/${tenantId}?${stringifiedParams}` : `/learning/reports/catalogues/${catalogueId}/customers/${tenantId}`\n}\n\n/**\n * Aggregate only the requested customer and courses in the requested active catalogue. Allowed for global read operators, catalogue reviewers/finance holders, or an active customer reporter still affiliated with that customer. Unauthorized scopes are concealed as 404; support impersonation is refused. Activity uses inclusive startsOn and exclusive endsBefore accounting dates; feedback uses midnight Europe/Paris boundaries. Intervals must span 1–366 days. Active learners are distinct users with activity records, activeSeconds sums recorded seconds, and lessonActivityRecords counts stored activity rows, not completions or sessions. Feedback is counted independently by creation time; averageRating is null with no feedback and otherwise rounded to two decimals.\n * @summary Read a catalogue/customer learning summary\n */\nexport const learningCatalogueCustomerStatistics = async (catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: Parameters<typeof request>[1]): Promise<LearningCustomerStatsRead> => {\n\n return request<LearningCustomerStatsRead>(getLearningCatalogueCustomerStatisticsUrl(catalogueId,tenantId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningCatalogueCustomerStatisticsQueryKey = (catalogueId: number,\n tenantId: number,\n params?: LearningCatalogueCustomerStatisticsParams,) => {\n return [\n `/learning/reports/catalogues/${catalogueId}/customers/${tenantId}`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningCatalogueCustomerStatisticsQueryOptions = <TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningCatalogueCustomerStatisticsQueryKey(catalogueId,tenantId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>> = ({ signal }) => learningCatalogueCustomerStatistics(catalogueId,tenantId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: catalogueId !== null && catalogueId !== undefined && tenantId !== null && tenantId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningCatalogueCustomerStatisticsQueryResult = NonNullable<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>>\nexport type LearningCatalogueCustomerStatisticsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningCatalogueCustomerStatistics<TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCatalogueCustomerStatistics<TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCatalogueCustomerStatistics<TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read a catalogue/customer learning summary\n */\n\nexport function useLearningCatalogueCustomerStatistics<TData = Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n catalogueId: number,\n tenantId: number,\n params: LearningCatalogueCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCatalogueCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningCatalogueCustomerStatisticsQueryOptions(catalogueId,tenantId,params,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 getLearningReportingScopesUrl = (params?: LearningReportingScopesParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/reports/scopes?${stringifiedParams}` : `/learning/reports/scopes`\n}\n\n/**\n * Page active catalogue/customer grants held by this effective profile where the catalogue remains active and the profile is still a primary-tenant or MEMBER-role affiliate. Ordered by catalogue then tenant ID. This discovery list contains customer mandates, not every scope available through global or catalogue authority. Support impersonation is refused.\n * @summary List the profile’s customer reporting mandates\n */\nexport const learningReportingScopes = async (params?: LearningReportingScopesParams, options?: Parameters<typeof request>[1]): Promise<LearningReportingScopePage> => {\n\n return request<LearningReportingScopePage>(getLearningReportingScopesUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningReportingScopesQueryKey = (params?: LearningReportingScopesParams,) => {\n return [\n `/learning/reports/scopes`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningReportingScopesQueryOptions = <TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: LearningReportingScopesParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningReportingScopesQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningReportingScopes>>> = ({ signal }) => learningReportingScopes(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningReportingScopesQueryResult = NonNullable<Awaited<ReturnType<typeof learningReportingScopes>>>\nexport type LearningReportingScopesQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningReportingScopes<TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | LearningReportingScopesParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningReportingScopes>>,\n TError,\n Awaited<ReturnType<typeof learningReportingScopes>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningReportingScopes<TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: LearningReportingScopesParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningReportingScopes>>,\n TError,\n Awaited<ReturnType<typeof learningReportingScopes>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningReportingScopes<TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: LearningReportingScopesParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List the profile’s customer reporting mandates\n */\n\nexport function useLearningReportingScopes<TData = Awaited<ReturnType<typeof learningReportingScopes>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: LearningReportingScopesParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningReportingScopes>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningReportingScopesQueryOptions(params,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 getLearningCustomerStatisticsUrl = (tenantId: number,\n params: LearningCustomerStatisticsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/reports/tenants/${tenantId}?${stringifiedParams}` : `/learning/reports/tenants/${tenantId}`\n}\n\n/**\n * Aggregate all recorded learning activity and feedback attributed to this tenant. Requires ADMIN or SUPPORT staff authority within the tenant staff scope; customer reporter grants alone do not authorize this endpoint. Support impersonation is refused. Activity uses inclusive startsOn and exclusive endsBefore accounting dates; feedback uses midnight Europe/Paris boundaries. Intervals must span 1–366 days. Active learners are distinct users with activity records, activeSeconds sums recorded seconds, and lessonActivityRecords counts stored activity rows, not completions or sessions. Feedback is counted independently by creation time; averageRating is null with no feedback and otherwise rounded to two decimals.\n * @summary Read staff learning totals for a customer\n */\nexport const learningCustomerStatistics = async (tenantId: number,\n params: LearningCustomerStatisticsParams, options?: Parameters<typeof request>[1]): Promise<LearningTenantStatsRead> => {\n\n return request<LearningTenantStatsRead>(getLearningCustomerStatisticsUrl(tenantId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningCustomerStatisticsQueryKey = (tenantId: number,\n params?: LearningCustomerStatisticsParams,) => {\n return [\n `/learning/reports/tenants/${tenantId}`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningCustomerStatisticsQueryOptions = <TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number,\n params: LearningCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningCustomerStatisticsQueryKey(tenantId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningCustomerStatistics>>> = ({ signal }) => learningCustomerStatistics(tenantId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: tenantId !== null && tenantId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningCustomerStatisticsQueryResult = NonNullable<Awaited<ReturnType<typeof learningCustomerStatistics>>>\nexport type LearningCustomerStatisticsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningCustomerStatistics<TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerStatisticsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCustomerStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCustomerStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCustomerStatistics<TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCustomerStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCustomerStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCustomerStatistics<TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read staff learning totals for a customer\n */\n\nexport function useLearningCustomerStatistics<TData = Awaited<ReturnType<typeof learningCustomerStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningCustomerStatisticsQueryOptions(tenantId,params,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 getLearningCustomerCourseStatisticsUrl = (tenantId: number,\n params: LearningCustomerCourseStatisticsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/learning/reports/tenants/${tenantId}/courses?${stringifiedParams}` : `/learning/reports/tenants/${tenantId}/courses`\n}\n\n/**\n * List only courses having activity records for this tenant in the interval, ordered by distinct active learners descending then course ID. Feedback is left joined for those courses; feedback-only courses do not appear. Requires scoped ADMIN/SUPPORT staff authority and refuses support impersonation. Distinct learner counts overlap between courses and must not be summed as a distinct tenant total. Activity uses inclusive startsOn and exclusive endsBefore accounting dates; feedback uses midnight Europe/Paris boundaries. Intervals must span 1–366 days. Active learners are distinct users with activity records, activeSeconds sums recorded seconds, and lessonActivityRecords counts stored activity rows, not completions or sessions. Feedback is counted independently by creation time; averageRating is null with no feedback and otherwise rounded to two decimals.\n * @summary List staff course statistics for a customer\n */\nexport const learningCustomerCourseStatistics = async (tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: Parameters<typeof request>[1]): Promise<LearningCourseStatsPage> => {\n\n return request<LearningCourseStatsPage>(getLearningCustomerCourseStatisticsUrl(tenantId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getLearningCustomerCourseStatisticsQueryKey = (tenantId: number,\n params?: LearningCustomerCourseStatisticsParams,) => {\n return [\n `/learning/reports/tenants/${tenantId}/courses`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getLearningCustomerCourseStatisticsQueryOptions = <TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getLearningCustomerCourseStatisticsQueryKey(tenantId,params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>> = ({ signal }) => learningCustomerCourseStatistics(tenantId,params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: tenantId !== null && tenantId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type LearningCustomerCourseStatisticsQueryResult = NonNullable<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>>\nexport type LearningCustomerCourseStatisticsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useLearningCustomerCourseStatistics<TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCustomerCourseStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCustomerCourseStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCustomerCourseStatistics<TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof learningCustomerCourseStatistics>>,\n TError,\n Awaited<ReturnType<typeof learningCustomerCourseStatistics>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useLearningCustomerCourseStatistics<TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List staff course statistics for a customer\n */\n\nexport function useLearningCustomerCourseStatistics<TData = Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number,\n params: LearningCustomerCourseStatisticsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof learningCustomerCourseStatistics>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getLearningCustomerCourseStatisticsQueryOptions(tenantId,params,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\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
2
|
+
import { Ba as LearningRoyaltyPeriodWrite, Ga as LearningRoyaltyInvoiceWrite, Ha as LearningRoyaltyPeriodRead, Ja as LearningRoyaltyBudgetListRead, Js as LearningChannelWrite, Ka as LearningRoyaltyInvoiceRead, Ko as LearningListRoyaltyPeriodsParams, La as LearningRoyaltySettlementWrite, Lc as LearningAssetRead, Qa as LearningRoyaltyAllocationPage, Ra as LearningRoyaltySettlementPage, Va as LearningRoyaltyPeriodPage, Wa as LearningRoyaltyPaidWrite, Xo as LearningListPayeeSettlementsParams, Xs as LearningChannelRead, Ya as LearningRoyaltyBudgetRead, Yo as LearningListPayeesParams, Ys as LearningChannelListRead, Za as LearningRoyaltyApprovalWrite, Zo as LearningListPayeeAllocationsParams, a as ValidationErrorResponse, do as LearningPayeePage, eo as LearningRoyaltyAgreementWrite, fo as LearningPayeeRead, gl as HTTPExceptionResponse, go as LearningPayeeDocumentPage, ho as LearningPayeeDocumentsParams, ma as LearningUploadRead, no as LearningRoyaltyAgreementEndWrite, po as LearningPayeeDocumentUploadWrite, qa as LearningRoyaltyBudgetWrite, qo as LearningListRoyaltyAllocationsParams, qs as LearningContractChannelWrite, ro as LearningRoyaltyAdjustmentWrite, to as LearningRoyaltyAgreementRead, uo as LearningPayeeWrite, za as LearningRoyaltySettlementRead } from "../chunks/index.js";
|
|
3
3
|
import { a as ErrorType, c as request, n as BodyType } from "../chunks/client.js";
|
|
4
4
|
import { DataTag, DefinedInitialDataOptions, DefinedUseQueryResult, QueryClient, QueryKey, UndefinedInitialDataOptions, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
|
|
5
5
|
//#region src/react/biblio-learning-finance/biblio-learning-finance.d.ts
|
|
@@ -7,7 +7,7 @@ import { useMutation, useQuery } from "@tanstack/react-query";
|
|
|
7
7
|
* Do not edit manually.
|
|
8
8
|
* Mozaik backend
|
|
9
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.
|
|
10
|
+
* OpenAPI spec version: 0.15.0
|
|
11
11
|
*/
|
|
12
12
|
const withQueryKey = (query, queryKey) => {
|
|
13
13
|
const result = { queryKey };
|