@learnorama/mozaik-sdk 0.12.3-staging.46.1 → 0.13.0-staging.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -0
- package/dist/api/account.d.ts +1 -1
- package/dist/api/account.js.map +1 -1
- package/dist/api/admin-catalogue.d.ts +1 -1
- package/dist/api/admin-catalogue.js.map +1 -1
- package/dist/api/admin-consumption.d.ts +1 -1
- package/dist/api/admin-consumption.js.map +1 -1
- package/dist/api/admin-contracts.d.ts +1 -1
- package/dist/api/admin-contracts.js.map +1 -1
- package/dist/api/admin-desk.d.ts +1 -1
- package/dist/api/admin-desk.js.map +1 -1
- package/dist/api/admin-licenses.d.ts +1 -1
- package/dist/api/admin-licenses.js.map +1 -1
- package/dist/api/admin-partner-selections.d.ts +1 -1
- package/dist/api/admin-partner-selections.js.map +1 -1
- package/dist/api/admin-patrons.d.ts +1 -1
- package/dist/api/admin-patrons.js.map +1 -1
- package/dist/api/admin-reviews.d.ts +1 -1
- package/dist/api/admin-reviews.js.map +1 -1
- package/dist/api/admin-roles.d.ts +1 -1
- package/dist/api/admin-roles.js.map +1 -1
- package/dist/api/admin-support.d.ts +1 -1
- package/dist/api/admin-support.js.map +1 -1
- package/dist/api/admin-tenants.d.ts +1 -1
- package/dist/api/admin-tenants.js.map +1 -1
- package/dist/api/admin-tutoring.d.ts +1 -1
- package/dist/api/admin-tutoring.js.map +1 -1
- package/dist/api/auth.d.ts +1 -1
- package/dist/api/auth.js.map +1 -1
- package/dist/api/biblio-billing-webhooks.d.ts +18 -0
- package/dist/api/biblio-billing-webhooks.js +62 -0
- package/dist/api/biblio-billing-webhooks.js.map +1 -0
- package/dist/api/biblio-billing.d.ts +192 -0
- package/dist/api/biblio-billing.js +645 -0
- package/dist/api/biblio-billing.js.map +1 -0
- package/dist/api/biblio-catalogue.d.ts +1 -1
- package/dist/api/biblio-catalogue.js.map +1 -1
- package/dist/api/biblio-home.d.ts +1 -1
- package/dist/api/biblio-home.js.map +1 -1
- package/dist/api/biblio-learning-author-profiles.d.ts +108 -0
- package/dist/api/biblio-learning-author-profiles.js +331 -0
- package/dist/api/biblio-learning-author-profiles.js.map +1 -0
- package/dist/api/biblio-learning-authoring.d.ts +168 -0
- package/dist/api/biblio-learning-authoring.js +586 -0
- package/dist/api/biblio-learning-authoring.js.map +1 -0
- package/dist/api/biblio-learning-editorial.d.ts +54 -0
- package/dist/api/biblio-learning-editorial.js +149 -0
- package/dist/api/biblio-learning-editorial.js.map +1 -0
- package/dist/api/biblio-learning-feedback.d.ts +60 -0
- package/dist/api/biblio-learning-feedback.js +180 -0
- package/dist/api/biblio-learning-feedback.js.map +1 -0
- package/dist/api/biblio-learning-finance.d.ts +186 -0
- package/dist/api/biblio-learning-finance.js +622 -0
- package/dist/api/biblio-learning-finance.js.map +1 -0
- package/dist/api/biblio-learning-integrations.d.ts +60 -0
- package/dist/api/biblio-learning-integrations.js +215 -0
- package/dist/api/biblio-learning-integrations.js.map +1 -0
- package/dist/api/biblio-learning-membership.d.ts +24 -0
- package/dist/api/biblio-learning-membership.js +69 -0
- package/dist/api/biblio-learning-membership.js.map +1 -0
- package/dist/api/biblio-learning.d.ts +222 -0
- package/dist/api/biblio-learning.js +697 -0
- package/dist/api/biblio-learning.js.map +1 -0
- package/dist/api/biblio-library.d.ts +1 -1
- package/dist/api/biblio-library.js.map +1 -1
- package/dist/api/biblio-nextory.d.ts +1 -1
- package/dist/api/biblio-nextory.js.map +1 -1
- package/dist/api/biblio-press.d.ts +1 -1
- package/dist/api/biblio-press.js.map +1 -1
- package/dist/api/biblio-search.d.ts +1 -1
- package/dist/api/biblio-search.js.map +1 -1
- package/dist/api/biblio-telemetry.d.ts +1 -1
- package/dist/api/biblio-telemetry.js.map +1 -1
- package/dist/api/consumption.d.ts +1 -1
- package/dist/api/consumption.js.map +1 -1
- package/dist/api/cvs-app.d.ts +1 -1
- package/dist/api/cvs-app.js.map +1 -1
- package/dist/api/cvs-documents.d.ts +1 -1
- package/dist/api/cvs-documents.js.map +1 -1
- package/dist/api/cvs-favorites.d.ts +1 -1
- package/dist/api/cvs-favorites.js.map +1 -1
- package/dist/api/cvs-ils.d.ts +1 -1
- package/dist/api/cvs-ils.js.map +1 -1
- package/dist/api/cvs-loans.d.ts +1 -1
- package/dist/api/cvs-loans.js.map +1 -1
- package/dist/api/cvs-payments.d.ts +1 -1
- package/dist/api/cvs-payments.js.map +1 -1
- package/dist/api/cvs-streaming.d.ts +1 -1
- package/dist/api/cvs-streaming.js.map +1 -1
- package/dist/api/index.d.ts +11 -1
- package/dist/api/index.js +11 -1
- package/dist/api/partner-catalogue.d.ts +1 -1
- package/dist/api/partner-catalogue.js.map +1 -1
- package/dist/api/partner-reader.d.ts +1 -1
- package/dist/api/partner-reader.js.map +1 -1
- package/dist/api/profiles.d.ts +1 -1
- package/dist/api/profiles.js.map +1 -1
- package/dist/api/search.d.ts +1 -1
- package/dist/api/search.js.map +1 -1
- package/dist/api/tutoring-catalogue.d.ts +1 -1
- package/dist/api/tutoring-catalogue.js.map +1 -1
- package/dist/api/tutoring-chat.d.ts +1 -1
- package/dist/api/tutoring-chat.js.map +1 -1
- package/dist/api/tutoring-dispatch.d.ts +1 -1
- package/dist/api/tutoring-dispatch.js.map +1 -1
- package/dist/api/tutoring-practitioner.d.ts +1 -1
- package/dist/api/tutoring-practitioner.js.map +1 -1
- package/dist/api/tutoring-requests.d.ts +1 -1
- package/dist/api/tutoring-requests.js.map +1 -1
- package/dist/chunks/client2.d.ts +1 -1
- package/dist/chunks/connection.d.ts +1 -1
- package/dist/chunks/index.d.ts +10062 -3487
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/models.d.ts +2 -2
- package/dist/models.js +329 -1
- package/dist/models.js.map +1 -1
- package/dist/react/account.d.ts +1 -1
- package/dist/react/account.js +1 -1
- package/dist/react/account.js.map +1 -1
- package/dist/react/admin-catalogue.d.ts +1 -1
- package/dist/react/admin-catalogue.js +1 -1
- package/dist/react/admin-catalogue.js.map +1 -1
- package/dist/react/admin-consumption.d.ts +1 -1
- package/dist/react/admin-consumption.js +1 -1
- package/dist/react/admin-consumption.js.map +1 -1
- package/dist/react/admin-contracts.d.ts +1 -1
- package/dist/react/admin-contracts.js +1 -1
- package/dist/react/admin-contracts.js.map +1 -1
- package/dist/react/admin-desk.d.ts +1 -1
- package/dist/react/admin-desk.js +1 -1
- package/dist/react/admin-desk.js.map +1 -1
- package/dist/react/admin-licenses.d.ts +1 -1
- package/dist/react/admin-licenses.js +1 -1
- package/dist/react/admin-licenses.js.map +1 -1
- package/dist/react/admin-partner-selections.d.ts +1 -1
- package/dist/react/admin-partner-selections.js +1 -1
- package/dist/react/admin-partner-selections.js.map +1 -1
- package/dist/react/admin-patrons.d.ts +1 -1
- package/dist/react/admin-patrons.js +1 -1
- package/dist/react/admin-patrons.js.map +1 -1
- package/dist/react/admin-reviews.d.ts +1 -1
- package/dist/react/admin-reviews.js +1 -1
- package/dist/react/admin-reviews.js.map +1 -1
- package/dist/react/admin-roles.d.ts +1 -1
- package/dist/react/admin-roles.js +1 -1
- package/dist/react/admin-roles.js.map +1 -1
- package/dist/react/admin-support.d.ts +1 -1
- package/dist/react/admin-support.js +1 -1
- package/dist/react/admin-support.js.map +1 -1
- package/dist/react/admin-tenants.d.ts +1 -1
- package/dist/react/admin-tenants.js +1 -1
- package/dist/react/admin-tenants.js.map +1 -1
- package/dist/react/admin-tutoring.d.ts +1 -1
- package/dist/react/admin-tutoring.js +1 -1
- package/dist/react/admin-tutoring.js.map +1 -1
- package/dist/react/auth.d.ts +1 -1
- package/dist/react/auth.js +1 -1
- package/dist/react/auth.js.map +1 -1
- package/dist/react/biblio-billing-webhooks.d.ts +56 -0
- package/dist/react/biblio-billing-webhooks.js +126 -0
- package/dist/react/biblio-billing-webhooks.js.map +1 -0
- package/dist/react/biblio-billing.d.ts +876 -0
- package/dist/react/biblio-billing.js +1491 -0
- package/dist/react/biblio-billing.js.map +1 -0
- package/dist/react/biblio-catalogue.d.ts +1 -1
- package/dist/react/biblio-catalogue.js +1 -1
- package/dist/react/biblio-catalogue.js.map +1 -1
- package/dist/react/biblio-home.d.ts +1 -1
- package/dist/react/biblio-home.js +1 -1
- package/dist/react/biblio-home.js.map +1 -1
- package/dist/react/biblio-learning-author-profiles.d.ts +513 -0
- package/dist/react/biblio-learning-author-profiles.js +795 -0
- package/dist/react/biblio-learning-author-profiles.js.map +1 -0
- package/dist/react/biblio-learning-authoring.d.ts +745 -0
- package/dist/react/biblio-learning-authoring.js +1335 -0
- package/dist/react/biblio-learning-authoring.js.map +1 -0
- package/dist/react/biblio-learning-editorial.d.ts +264 -0
- package/dist/react/biblio-learning-editorial.js +371 -0
- package/dist/react/biblio-learning-editorial.js.map +1 -0
- package/dist/react/biblio-learning-feedback.d.ts +280 -0
- package/dist/react/biblio-learning-feedback.js +433 -0
- package/dist/react/biblio-learning-feedback.js.map +1 -0
- package/dist/react/biblio-learning-finance.d.ts +868 -0
- package/dist/react/biblio-learning-finance.js +1439 -0
- package/dist/react/biblio-learning-finance.js.map +1 -0
- package/dist/react/biblio-learning-integrations.d.ts +237 -0
- package/dist/react/biblio-learning-integrations.js +483 -0
- package/dist/react/biblio-learning-integrations.js.map +1 -0
- package/dist/react/biblio-learning-membership.d.ts +99 -0
- package/dist/react/biblio-learning-membership.js +165 -0
- package/dist/react/biblio-learning-membership.js.map +1 -0
- package/dist/react/biblio-learning.d.ts +1047 -0
- package/dist/react/biblio-learning.js +1667 -0
- package/dist/react/biblio-learning.js.map +1 -0
- package/dist/react/biblio-library.d.ts +1 -1
- package/dist/react/biblio-library.js +1 -1
- package/dist/react/biblio-library.js.map +1 -1
- package/dist/react/biblio-nextory.d.ts +1 -1
- package/dist/react/biblio-nextory.js +1 -1
- package/dist/react/biblio-nextory.js.map +1 -1
- package/dist/react/biblio-press.d.ts +1 -1
- package/dist/react/biblio-press.js +1 -1
- package/dist/react/biblio-press.js.map +1 -1
- package/dist/react/biblio-search.d.ts +1 -1
- package/dist/react/biblio-search.js +1 -1
- package/dist/react/biblio-search.js.map +1 -1
- package/dist/react/biblio-telemetry.d.ts +1 -1
- package/dist/react/biblio-telemetry.js +1 -1
- package/dist/react/biblio-telemetry.js.map +1 -1
- package/dist/react/chat.d.ts +1 -1
- package/dist/react/consumption.d.ts +1 -1
- package/dist/react/consumption.js +1 -1
- package/dist/react/consumption.js.map +1 -1
- package/dist/react/cvs-app.d.ts +1 -1
- package/dist/react/cvs-app.js +1 -1
- package/dist/react/cvs-app.js.map +1 -1
- package/dist/react/cvs-documents.d.ts +1 -1
- package/dist/react/cvs-documents.js +1 -1
- package/dist/react/cvs-documents.js.map +1 -1
- package/dist/react/cvs-favorites.d.ts +1 -1
- package/dist/react/cvs-favorites.js +1 -1
- package/dist/react/cvs-favorites.js.map +1 -1
- package/dist/react/cvs-ils.d.ts +1 -1
- package/dist/react/cvs-ils.js +1 -1
- package/dist/react/cvs-ils.js.map +1 -1
- package/dist/react/cvs-loans.d.ts +1 -1
- package/dist/react/cvs-loans.js +1 -1
- package/dist/react/cvs-loans.js.map +1 -1
- package/dist/react/cvs-payments.d.ts +1 -1
- package/dist/react/cvs-payments.js +1 -1
- package/dist/react/cvs-payments.js.map +1 -1
- package/dist/react/cvs-streaming.d.ts +1 -1
- package/dist/react/cvs-streaming.js +1 -1
- package/dist/react/cvs-streaming.js.map +1 -1
- package/dist/react/index.d.ts +11 -1
- package/dist/react/index.js +11 -1
- package/dist/react/partner-catalogue.d.ts +1 -1
- package/dist/react/partner-catalogue.js +1 -1
- package/dist/react/partner-catalogue.js.map +1 -1
- package/dist/react/partner-reader.d.ts +1 -1
- package/dist/react/partner-reader.js +1 -1
- package/dist/react/partner-reader.js.map +1 -1
- package/dist/react/profiles.d.ts +1 -1
- package/dist/react/profiles.js +1 -1
- package/dist/react/profiles.js.map +1 -1
- package/dist/react/search.d.ts +1 -1
- package/dist/react/search.js +1 -1
- package/dist/react/search.js.map +1 -1
- package/dist/react/tutoring-catalogue.d.ts +1 -1
- package/dist/react/tutoring-catalogue.js +1 -1
- package/dist/react/tutoring-catalogue.js.map +1 -1
- package/dist/react/tutoring-chat.d.ts +1 -1
- package/dist/react/tutoring-chat.js +1 -1
- package/dist/react/tutoring-chat.js.map +1 -1
- package/dist/react/tutoring-dispatch.d.ts +1 -1
- package/dist/react/tutoring-dispatch.js +1 -1
- package/dist/react/tutoring-dispatch.js.map +1 -1
- package/dist/react/tutoring-practitioner.d.ts +1 -1
- package/dist/react/tutoring-practitioner.js +1 -1
- package/dist/react/tutoring-practitioner.js.map +1 -1
- package/dist/react/tutoring-requests.d.ts +1 -1
- package/dist/react/tutoring-requests.js +1 -1
- package/dist/react/tutoring-requests.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"biblio-learning-authoring.js","names":[],"sources":["../../src/api/biblio-learning-authoring/biblio-learning-authoring.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.13.0\n */\nimport type {\n CourseAuthorRevisionRead,\n CourseReviewWrite,\n CourseRevisionPage,\n CourseRevisionRead,\n CourseRevisionWriteInput,\n LearningAssessmentWriteInput,\n LearningAssetRead,\n LearningAssetWrite,\n LearningCaptionWrite,\n LearningCatalogueGrantWrite,\n LearningCatalogueListRead,\n LearningCatalogueRead,\n LearningCatalogueWrite,\n LearningCourseAdminPage,\n LearningCourseAdminRead,\n LearningCourseCreateWrite,\n LearningCourseSettingsWrite,\n LearningLibraryDocumentRead,\n LearningLibraryPage,\n LearningLibraryRead,\n LearningLibraryVersionPage,\n LearningLibraryVersionRead,\n LearningLibraryVersionWrite,\n LearningLibraryWrite,\n LearningListAuthorCoursesParams,\n LearningListLibrariesParams,\n LearningListLibraryVersionsParams,\n LearningListRevisionsParams,\n LearningPathAdminRead,\n LearningPathAssessmentRead,\n LearningPathWrite\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getLearningListAuthorCataloguesUrl = () => {\n\n\n\n\n return `/learning/author/catalogues`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Lists active catalogues with creation, review or finance authority. Review permission also enables creation; finance permission alone does not. The collection is ordered by catalogue ID and is not paginated.\n * @summary List my authoring catalogues\n */\nexport const learningListAuthorCatalogues = async ( options?: Parameters<typeof request>[1]): Promise<LearningCatalogueListRead> => {\n\n return request<LearningCatalogueListRead>(getLearningListAuthorCataloguesUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningCreateAuthorCatalogueUrl = () => {\n\n\n\n\n return `/learning/author/catalogues`\n}\n\n/**\n * Requires global catalogue write authority and rejects support impersonation. Creates an active authoring catalogue; the returned capability flags describe the operator making this request.\n * @summary Create a learning catalogue\n */\nexport const learningCreateAuthorCatalogue = async (learningCatalogueWrite: LearningCatalogueWrite, options?: Parameters<typeof request>[1]): Promise<LearningCatalogueRead> => {\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<LearningCatalogueRead>(getLearningCreateAuthorCatalogueUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningCatalogueWrite)\n }\n);}\n\n\nexport const getLearningSetCatalogueAuthorityUrl = (catalogueId: number,) => {\n\n\n\n\n return `/learning/author/catalogues/${catalogueId}/authority`\n}\n\n/**\n * Requires global catalogue write authority. Replaces all three grants for the selected active independent account, including revocation when all flags are false. The reason is recorded for audit. Successful updates return 204 with no response body.\n * @summary Replace an author's catalogue permissions\n */\nexport const learningSetCatalogueAuthority = async (catalogueId: number,\n learningCatalogueGrantWrite: LearningCatalogueGrantWrite, 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>(getLearningSetCatalogueAuthorityUrl(catalogueId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningCatalogueGrantWrite)\n }\n);}\n\n\nexport const getLearningListAuthorCoursesUrl = (params?: LearningListAuthorCoursesParams,) => {\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?${stringifiedParams}` : `/learning/author/courses`\n}\n\n/**\n * Returns courses assigned to the effective author and courses in active catalogues they may review. Global administrators and support readers can see all courses. Dependent profiles and support impersonation are refused. Pagination counts this authorized scope and sorts by course ID ascending; draft courses are included.\n * @summary List courses available to the author\n */\nexport const learningListAuthorCourses = async (params?: LearningListAuthorCoursesParams, options?: Parameters<typeof request>[1]): Promise<LearningCourseAdminPage> => {\n\n return request<LearningCourseAdminPage>(getLearningListAuthorCoursesUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningCreateCourseUrl = () => {\n\n\n\n\n return `/learning/author/courses`\n}\n\n/**\n * Create an inactive course from a title in an authorized catalogue, then register media and create an edition. Binding an existing catalogue contentId, or creating without catalogueId, requires global administration. Assigning other authors requires curator authority. Publication activates a new course; this request alone does not make it readable.\n * @summary Create a native course shell\n */\nexport const learningCreateCourse = async (learningCourseCreateWrite: LearningCourseCreateWrite, options?: Parameters<typeof request>[1]): Promise<LearningCourseAdminRead> => {\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<LearningCourseAdminRead>(getLearningCreateCourseUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningCourseCreateWrite)\n }\n);}\n\n\nexport const getLearningUpdateCourseSettingsUrl = (courseId: number,) => {\n\n\n\n\n return `/learning/author/courses/${courseId}`\n}\n\n/**\n * Requires course curator or global administrator authority and an audit reason. Non-null scalar fields replace their current values; null or omitted values leave them unchanged. authorIds replaces the complete author set, including clearing it with an empty list. A course must have a published edition before isActive can be true.\n * @summary Update publication and author settings\n */\nexport const learningUpdateCourseSettings = async (courseId: number,\n learningCourseSettingsWrite: LearningCourseSettingsWrite, options?: Parameters<typeof request>[1]): Promise<LearningCourseAdminRead> => {\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<LearningCourseAdminRead>(getLearningUpdateCourseSettingsUrl(courseId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningCourseSettingsWrite)\n }\n);}\n\n\nexport const getLearningRegisterAssetUrl = (courseId: number,) => {\n\n\n\n\n return `/learning/author/courses/${courseId}/assets`\n}\n\n/**\n * Requires edit authority on the course. Registers an immutable media reference for use in edition definitions. Vimeo requires a numeric video ID; external resources require HTTPS without credentials; HTML is sanitized; storage keys must identify an existing object under this author's learning prefix. The response identifies the asset and does not issue a playback URL. For new file bytes use the upload reservation workflow.\n * @summary Register a course media resource\n */\nexport const learningRegisterAsset = async (courseId: number,\n learningAssetWrite: LearningAssetWrite, options?: Parameters<typeof request>[1]): Promise<LearningAssetRead> => {\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<LearningAssetRead>(getLearningRegisterAssetUrl(courseId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningAssetWrite)\n }\n);}\n\n\nexport const getLearningAttachCaptionsUrl = (courseId: number,\n assetId: number,) => {\n\n\n\n\n return `/learning/author/courses/${courseId}/assets/${assetId}/captions`\n}\n\n/**\n * Requires course edit authority. First upload validated UTF-8 WebVTT to the same course, then reference its asset ID here. Returns a new immutable media variant; existing editions keep their original asset. Repeating the original asset, caption asset and language returns the existing variant. Put the returned assetId into a draft edition to publish the captions.\n * @summary Create a captioned variant of course audio or video\n */\nexport const learningAttachCaptions = async (courseId: number,\n assetId: number,\n learningCaptionWrite: LearningCaptionWrite, options?: Parameters<typeof request>[1]): Promise<LearningAssetRead> => {\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<LearningAssetRead>(getLearningAttachCaptionsUrl(courseId,assetId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningCaptionWrite)\n }\n);}\n\n\nexport const getLearningListRevisionsUrl = (courseId: number,\n params?: LearningListRevisionsParams,) => {\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}/revisions?${stringifiedParams}` : `/learning/author/courses/${courseId}/revisions`\n}\n\n/**\n * Requires read authority on this course. Returns draft, submitted, published, rejected and superseded editions, newest version first. version identifies the course edition; editVersion is the optimistic concurrency counter within a working edition.\n * @summary List the course's edition history\n */\nexport const learningListRevisions = async (courseId: number,\n params?: LearningListRevisionsParams, options?: Parameters<typeof request>[1]): Promise<CourseRevisionPage> => {\n\n return request<CourseRevisionPage>(getLearningListRevisionsUrl(courseId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningCreateRevisionUrl = (courseId: number,) => {\n\n\n\n\n return `/learning/author/courses/${courseId}/revisions`\n}\n\n/**\n * Requires course edit authority. Creates a complete edition with the next version number; only one draft or submitted edition may exist for a course. Asset and library references must be available to this course. Chapters contain 1–2000 lessons with unique keys across the edition; the serialized authoring definition is limited to 2,000,000 bytes. Published editions and existing enrollments remain pinned to their definitions.\n * @summary Create the next draft edition\n */\nexport const learningCreateRevision = async (courseId: number,\n courseRevisionWriteInput: CourseRevisionWriteInput, options?: Parameters<typeof request>[1]): Promise<CourseRevisionRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<CourseRevisionRead>(getLearningCreateRevisionUrl(courseId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(courseRevisionWriteInput)\n }\n);}\n\n\nexport const getLearningReadAuthorRevisionUrl = (courseId: number,\n revisionId: number,) => {\n\n\n\n\n return `/learning/author/courses/${courseId}/revisions/${revisionId}`\n}\n\n/**\n * Requires authoring read authority and checks that revisionId belongs to courseId. Returns editorial content, lessons, resources, vocabularies and private assessment solutions. Read revision.editVersion before replacing a changed definition. This author-only representation includes grading keys that are deliberately absent from reader questions.\n * @summary Read a complete editable edition definition\n */\nexport const learningReadAuthorRevision = async (courseId: number,\n revisionId: number, options?: Parameters<typeof request>[1]): Promise<CourseAuthorRevisionRead> => {\n\n return request<CourseAuthorRevisionRead>(getLearningReadAuthorRevisionUrl(courseId,revisionId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningReplaceRevisionUrl = (courseId: number,\n revisionId: number,) => {\n\n\n\n\n return `/learning/author/courses/${courseId}/revisions/${revisionId}`\n}\n\n/**\n * Replaces the entire editorial and lesson graph of a draft or rejected edition. Send the editVersion last read as expectedEditVersion. An identical definition is an idempotent replay; a changed definition requires a matching version and increments editVersion. A changed rejected edition returns to draft and clears its review note and submission date. Published and submitted editions cannot be edited.\n * @summary Replace a draft edition with concurrency protection\n */\nexport const learningReplaceRevision = async (courseId: number,\n revisionId: number,\n courseRevisionWriteInput: CourseRevisionWriteInput, options?: Parameters<typeof request>[1]): Promise<CourseRevisionRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<CourseRevisionRead>(getLearningReplaceRevisionUrl(courseId,revisionId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(courseRevisionWriteInput)\n }\n);}\n\n\nexport const getLearningReviewRevisionUrl = (courseId: number,\n revisionId: number,) => {\n\n\n\n\n return `/learning/author/courses/${courseId}/revisions/${revisionId}/review`\n}\n\n/**\n * Requires course curator or global administrator authority. Approval revalidates materials, publishes this edition, supersedes its published predecessor, updates catalogue editorial fields and activates the course. Existing readers retain their selected edition until they explicitly upgrade. Rejection returns the edition for editing. Every decision requires a review note; repeated decisions return 409 once the edition leaves submitted.\n * @summary Publish or reject a submitted edition\n */\nexport const learningReviewRevision = async (courseId: number,\n revisionId: number,\n courseReviewWrite: CourseReviewWrite, options?: Parameters<typeof request>[1]): Promise<CourseRevisionRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<CourseRevisionRead>(getLearningReviewRevisionUrl(courseId,revisionId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(courseReviewWrite)\n }\n);}\n\n\nexport const getLearningSubmitRevisionUrl = (courseId: number,\n revisionId: number,) => {\n\n\n\n\n return `/learning/author/courses/${courseId}/revisions/${revisionId}/submit`\n}\n\n/**\n * Requires course edit authority. Moves draft to submitted and records submittedAt; reviewers can then approve or reject it. Submission locks the definition against editing. This transition is not replay-idempotent: submitting an already submitted edition returns 409.\n * @summary Submit a draft edition for review\n */\nexport const learningSubmitRevision = async (courseId: number,\n revisionId: number, options?: Parameters<typeof request>[1]): Promise<CourseRevisionRead> => {\n\n return request<CourseRevisionRead>(getLearningSubmitRevisionUrl(courseId,revisionId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getLearningListLibrariesUrl = (params?: LearningListLibrariesParams,) => {\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/libraries?${stringifiedParams}` : `/learning/author/libraries`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Lists owned or shared libraries for creators, all libraries in reviewable active catalogues for reviewers, and all libraries for global operators. Ordered by library ID. publishedVersion=0 means no native published version is selected.\n * @summary List reusable teaching libraries\n */\nexport const learningListLibraries = async (params?: LearningListLibrariesParams, options?: Parameters<typeof request>[1]): Promise<LearningLibraryPage> => {\n\n return request<LearningLibraryPage>(getLearningListLibrariesUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningCreateLibraryUrl = () => {\n\n\n\n\n return `/learning/author/libraries`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Creates an empty assessment or vocabulary container owned by the caller. A null catalogueId requires global authority. shared allows catalogue peers to reuse published material; it does not grant them editing rights. Create a version separately.\n * @summary Create a reusable teaching library\n */\nexport const learningCreateLibrary = async (learningLibraryWrite: LearningLibraryWrite, options?: Parameters<typeof request>[1]): Promise<LearningLibraryRead> => {\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<LearningLibraryRead>(getLearningCreateLibraryUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningLibraryWrite)\n }\n);}\n\n\nexport const getLearningListLibraryVersionsUrl = (libraryId: number,\n params?: LearningListLibraryVersionsParams,) => {\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/libraries/${libraryId}/versions?${stringifiedParams}` : `/learning/author/libraries/${libraryId}/versions`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by version descending. Owners, reviewers and global operators can read drafts; other eligible users see published and superseded versions only. sealed is authoritative for editing: imported or referenced material can be sealed even with a draft status.\n * @summary List versions of a teaching library\n */\nexport const learningListLibraryVersions = async (libraryId: number,\n params?: LearningListLibraryVersionsParams, options?: Parameters<typeof request>[1]): Promise<LearningLibraryVersionPage> => {\n\n return request<LearningLibraryVersionPage>(getLearningListLibraryVersionsUrl(libraryId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningCreateLibraryVersionUrl = (libraryId: number,) => {\n\n\n\n\n return `/learning/author/libraries/${libraryId}/versions`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires library ownership, catalogue review authority or global authority for writes; sharing only permits reuse and reading published versions. Creates the next numbered draft without changing any previous definition. Supply exactly one assessment or vocabulary matching the library kind. There must be no submitted version or unsealed working draft. Sealed source drafts do not block a successor. Referenced questions must be published and accessible; sourceLessonKeys are not accepted for libraries.\n * @summary Create a successor library version\n */\nexport const learningCreateLibraryVersion = async (libraryId: number,\n learningLibraryVersionWrite: LearningLibraryVersionWrite, options?: Parameters<typeof request>[1]): Promise<LearningLibraryVersionRead> => {\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<LearningLibraryVersionRead>(getLearningCreateLibraryVersionUrl(libraryId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningLibraryVersionWrite)\n }\n);}\n\n\nexport const getLearningReadLibraryVersionUrl = (libraryId: number,\n version: number,) => {\n\n\n\n\n return `/learning/author/libraries/${libraryId}/versions/${version}`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Returns the full authoring definition and stable question references. version is the library's sequential version number, not materialId. Draft visibility is restricted to owner/reviewer/global operator. Answer keys are part of this private authoring contract. A sealed source snapshot must be copied into a successor to change it.\n * @summary Read a teaching library version\n */\nexport const learningReadLibraryVersion = async (libraryId: number,\n version: number, options?: Parameters<typeof request>[1]): Promise<LearningLibraryDocumentRead> => {\n\n return request<LearningLibraryDocumentRead>(getLearningReadLibraryVersionUrl(libraryId,version),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningReplaceLibraryVersionUrl = (libraryId: number,\n version: number,) => {\n\n\n\n\n return `/learning/author/libraries/${libraryId}/versions/${version}`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires library ownership, catalogue review authority or global authority for writes; sharing only permits reuse and reading published versions. Replaces an unsealed draft or rejected version. Supply the current expectedEditVersion when changing the definition; a semantic no-op returns the same version. Submitted, published, superseded, imported and referenced definitions are immutable. Create a successor for sealed material instead. Exactly one matching assessment or vocabulary is required.\n * @summary Replace an editable library definition\n */\nexport const learningReplaceLibraryVersion = async (libraryId: number,\n version: number,\n learningLibraryVersionWrite: LearningLibraryVersionWrite, options?: Parameters<typeof request>[1]): Promise<LearningLibraryVersionRead> => {\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<LearningLibraryVersionRead>(getLearningReplaceLibraryVersionUrl(libraryId,version),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningLibraryVersionWrite)\n }\n);}\n\n\nexport const getLearningReviewLibraryVersionUrl = (libraryId: number,\n version: number,) => {\n\n\n\n\n return `/learning/author/libraries/${libraryId}/versions/${version}/review`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires catalogue review or global authority. Approval revalidates resources, publishes this version and supersedes the previously published version. Rejection records the decision and makes an unpinned definition editable again. The supplied note is audited; it is not a field of the returned version summary.\n * @summary Approve or reject a submitted library version\n */\nexport const learningReviewLibraryVersion = async (libraryId: number,\n version: number,\n courseReviewWrite: CourseReviewWrite, options?: Parameters<typeof request>[1]): Promise<LearningLibraryVersionRead> => {\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<LearningLibraryVersionRead>(getLearningReviewLibraryVersionUrl(libraryId,version),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(courseReviewWrite)\n }\n);}\n\n\nexport const getLearningSubmitLibraryVersionUrl = (libraryId: number,\n version: number,) => {\n\n\n\n\n return `/learning/author/libraries/${libraryId}/versions/${version}/submit`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires library ownership, catalogue review authority or global authority for writes; sharing only permits reuse and reading published versions. Only an unsealed draft can be submitted. Submission locks its definition pending review; it does not publish the material. Source snapshots and referenced drafts require a successor before submission.\n * @summary Submit a library draft for review\n */\nexport const learningSubmitLibraryVersion = async (libraryId: number,\n version: number, options?: Parameters<typeof request>[1]): Promise<LearningLibraryVersionRead> => {\n\n return request<LearningLibraryVersionRead>(getLearningSubmitLibraryVersionUrl(libraryId,version),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getLearningCreatePathUrl = () => {\n\n\n\n\n return `/learning/author/paths`\n}\n\n/**\n * Requires review authority for the chosen catalogue, or global authority for a null catalogueId. Creates a path with ordered, unique content IDs; these are catalogue content identities, not revision IDs. Creators without review permission cannot curate paths. Active publication requires active content and eligible catalogue resources.\n * @summary Create a curated learning path\n */\nexport const learningCreatePath = async (learningPathWrite: LearningPathWrite, options?: Parameters<typeof request>[1]): Promise<LearningPathAdminRead> => {\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<LearningPathAdminRead>(getLearningCreatePathUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningPathWrite)\n }\n);}\n\n\nexport const getLearningReadAuthorPathUrl = (pathId: number,) => {\n\n\n\n\n return `/learning/author/paths/${pathId}`\n}\n\n/**\n * Requires review authority for the path's original catalogue or global authority. Returns the complete ordered definition and its current editVersion; use that counter in the next replacement request.\n * @summary Read a path's authoring definition\n */\nexport const learningReadAuthorPath = async (pathId: number, options?: Parameters<typeof request>[1]): Promise<LearningPathAdminRead> => {\n\n return request<LearningPathAdminRead>(getLearningReadAuthorPathUrl(pathId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningUpdatePathUrl = (pathId: number,) => {\n\n\n\n\n return `/learning/author/paths/${pathId}`\n}\n\n/**\n * Requires review authority for the original catalogue or global authority. Replaces the entire definition and step ordering, increments editVersion, and requires expectedEditVersion to match. The catalogue cannot change. Setting isActive=true requires all referenced content to be active; step visibility for readers still follows their existing access grants.\n * @summary Replace and optionally publish a learning path\n */\nexport const learningUpdatePath = async (pathId: number,\n learningPathWrite: LearningPathWrite, options?: Parameters<typeof request>[1]): Promise<LearningPathAdminRead> => {\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<LearningPathAdminRead>(getLearningUpdatePathUrl(pathId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningPathWrite)\n }\n);}\n\n\nexport const getLearningCreatePathAssessmentUrl = (pathId: number,) => {\n\n\n\n\n return `/learning/author/paths/${pathId}/assessments`\n}\n\n/**\n * Requires path catalogue review authority or global authority. Creates a new assessment with kind=final and explicit questions or published questionRefs; sourceLessonKeys are not accepted. References must come from courses in this path. Existing assessments are immutable; withdraw one and create another when replacing it.\n * @summary Add a final assessment to a learning path\n */\nexport const learningCreatePathAssessment = async (pathId: number,\n learningAssessmentWriteInput: LearningAssessmentWriteInput, options?: Parameters<typeof request>[1]): Promise<LearningPathAssessmentRead> => {\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<LearningPathAssessmentRead>(getLearningCreatePathAssessmentUrl(pathId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningAssessmentWriteInput)\n }\n);}\n\n\nexport const getLearningWithdrawPathAssessmentUrl = (pathId: number,\n assessmentId: number,) => {\n\n\n\n\n return `/learning/author/paths/${pathId}/assessments/${assessmentId}`\n}\n\n/**\n * Requires path catalogue review authority or global authority. Marks the selected assessment inactive while retaining its identity and recorded evidence. assessmentId must belong to pathId. Repeating withdrawal leaves it inactive. Success returns 204 with no response body.\n * @summary Withdraw a path assessment\n */\nexport const learningWithdrawPathAssessment = async (pathId: number,\n assessmentId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getLearningWithdrawPathAssessmentUrl(pathId,assessmentId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\n"],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
|
|
2
|
+
import { Co as LearningEditorialMessageRead, Eo as LearningEditorialFragmentDetailRead, Io as LearningCourseMessagesParams, Ns as LearningAssetRead, Po as LearningCourseRevisionFragmentsParams, So as LearningEditorialMessagePage, Xo as LearningCatalogueMessagesParams, Yo as LearningCatalogueRevisionFragmentsParams, vi as LearningSubmissionHistoryParams, wo as LearningEditorialFragmentPage, xo as LearningEditorialMessageWrite, yi as LearningSubmissionHistoryPage } from "../chunks/index.js";
|
|
3
|
+
import { c as request } from "../chunks/client.js";
|
|
4
|
+
//#region src/api/biblio-learning-editorial/biblio-learning-editorial.d.ts
|
|
5
|
+
export declare const getLearningCatalogueMessagesUrl: (catalogueId: number, params?: LearningCatalogueMessagesParams) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires catalogue review authority. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by message ID, including subjects not linked to a native course. sourceObjectClass and sourceObjectId are exact source-subject selectors and must be supplied together; they never grant access to another catalogue.
|
|
8
|
+
* @summary List a catalogue's private editorial archive
|
|
9
|
+
*/
|
|
10
|
+
export declare const learningCatalogueMessages: (catalogueId: number, params?: LearningCatalogueMessagesParams, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialMessagePage>;
|
|
11
|
+
export declare const getLearningCatalogueRevisionFragmentsUrl: (catalogueId: number, params?: LearningCatalogueRevisionFragmentsParams) => string;
|
|
12
|
+
/**
|
|
13
|
+
* Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires catalogue review authority. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. Ordered by fragment ID. Optional sourceObjectClass/sourceObjectId must be supplied together and match exactly; this archive can include subjects without a native course mapping.
|
|
14
|
+
* @summary List a catalogue's imported revision fragments
|
|
15
|
+
*/
|
|
16
|
+
export declare const learningCatalogueRevisionFragments: (catalogueId: number, params?: LearningCatalogueRevisionFragmentsParams, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialFragmentPage>;
|
|
17
|
+
export declare const getLearningCourseMessagesUrl: (courseId: number, params?: LearningCourseMessagesParams) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Requires course read-authoring authority; support impersonation is rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by message ID. Omitting revisionId includes all course messages; specifying it returns only that revision's messages and requires the revision to belong to courseId. Imported discussion can preserve unknown userId and createdAt.
|
|
20
|
+
* @summary List private course editorial messages
|
|
21
|
+
*/
|
|
22
|
+
export declare const learningCourseMessages: (courseId: number, params?: LearningCourseMessagesParams, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialMessagePage>;
|
|
23
|
+
export declare const getLearningAddEditorialMessageUrl: (courseId: number) => string;
|
|
24
|
+
/**
|
|
25
|
+
* Requires course edit authority, catalogue review authority or global authority; support impersonation is rejected. Appends an attributed message without changing the course definition. Optional revisionId must identify a revision of this course. Omit it or use null for a course-level discussion.
|
|
26
|
+
* @summary Add a private course editorial message
|
|
27
|
+
*/
|
|
28
|
+
export declare const learningAddEditorialMessage: (courseId: number, learningEditorialMessageWrite: LearningEditorialMessageWrite, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialMessageRead>;
|
|
29
|
+
export declare const getLearningCourseRevisionFragmentsUrl: (courseId: number, params?: LearningCourseRevisionFragmentsParams) => string;
|
|
30
|
+
/**
|
|
31
|
+
* Requires course read-authoring authority and rejects support impersonation. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. Summaries are ordered by fragment ID; use the fragment detail route for retained source bytes.
|
|
32
|
+
* @summary List a course's imported revision fragments
|
|
33
|
+
*/
|
|
34
|
+
export declare const learningCourseRevisionFragments: (courseId: number, params?: LearningCourseRevisionFragmentsParams, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialFragmentPage>;
|
|
35
|
+
export declare const getLearningRevisionFragmentUrl: (fragmentId: number) => string;
|
|
36
|
+
/**
|
|
37
|
+
* Requires read-authoring authority on a linked course, or review authority on its catalogue when no course is linked. Unscoped fragments are unavailable. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. sourcePayload is opaque base64 source evidence, not a complete native course definition. sourcePayloadSha256 records its evidence digest; payload retention may be absent.
|
|
38
|
+
* @summary Read a private imported revision fragment
|
|
39
|
+
*/
|
|
40
|
+
export declare const learningRevisionFragment: (fragmentId: number, options?: Parameters<typeof request>[1]) => Promise<LearningEditorialFragmentDetailRead>;
|
|
41
|
+
export declare const getLearningSubmissionHistoryUrl: (params?: LearningSubmissionHistoryParams) => string;
|
|
42
|
+
/**
|
|
43
|
+
* Returns only the effective profile's imported submission evidence; support impersonation is rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by submission ID. A record attests that a submission existed, without inventing an attempt, date, grade or correction. assetId can be null when no retained file is linked.
|
|
44
|
+
* @summary List my historical exercise submissions
|
|
45
|
+
*/
|
|
46
|
+
export declare const learningSubmissionHistory: (params?: LearningSubmissionHistoryParams, options?: Parameters<typeof request>[1]) => Promise<LearningSubmissionHistoryPage>;
|
|
47
|
+
export declare const getLearningSubmissionHistoryResourceUrl: (submissionId: number) => string;
|
|
48
|
+
/**
|
|
49
|
+
* Requires ownership of both the historical submission and its active, unshared submission asset. Support impersonation is rejected. Returns a delivery descriptor rather than file bytes; absence of a retained asset returns 404 and does not erase the submission evidence.
|
|
50
|
+
* @summary Get my historical submission's private resource
|
|
51
|
+
*/
|
|
52
|
+
export declare const learningSubmissionHistoryResource: (submissionId: number, options?: Parameters<typeof request>[1]) => Promise<LearningAssetRead>;
|
|
53
|
+
//#endregion
|
|
54
|
+
//# sourceMappingURL=biblio-learning-editorial.d.ts.map
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
|
|
2
|
+
import { r as request } from "../chunks/client.js";
|
|
3
|
+
//#region src/api/biblio-learning-editorial/biblio-learning-editorial.ts
|
|
4
|
+
const getLearningCatalogueMessagesUrl = (catalogueId, params) => {
|
|
5
|
+
const normalizedParams = new URLSearchParams();
|
|
6
|
+
Object.entries(params || {}).forEach(([key, value]) => {
|
|
7
|
+
if (value !== void 0) normalizedParams.append(key, value === null ? "null" : String(value));
|
|
8
|
+
});
|
|
9
|
+
const stringifiedParams = normalizedParams.toString();
|
|
10
|
+
return stringifiedParams.length > 0 ? `/learning/author/catalogues/${catalogueId}/messages?${stringifiedParams}` : `/learning/author/catalogues/${catalogueId}/messages`;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires catalogue review authority. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by message ID, including subjects not linked to a native course. sourceObjectClass and sourceObjectId are exact source-subject selectors and must be supplied together; they never grant access to another catalogue.
|
|
14
|
+
* @summary List a catalogue's private editorial archive
|
|
15
|
+
*/
|
|
16
|
+
const learningCatalogueMessages = async (catalogueId, params, options) => {
|
|
17
|
+
return request(getLearningCatalogueMessagesUrl(catalogueId, params), {
|
|
18
|
+
...options,
|
|
19
|
+
method: "GET"
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
const getLearningCatalogueRevisionFragmentsUrl = (catalogueId, params) => {
|
|
23
|
+
const normalizedParams = new URLSearchParams();
|
|
24
|
+
Object.entries(params || {}).forEach(([key, value]) => {
|
|
25
|
+
if (value !== void 0) normalizedParams.append(key, value === null ? "null" : String(value));
|
|
26
|
+
});
|
|
27
|
+
const stringifiedParams = normalizedParams.toString();
|
|
28
|
+
return stringifiedParams.length > 0 ? `/learning/author/catalogues/${catalogueId}/revision-fragments?${stringifiedParams}` : `/learning/author/catalogues/${catalogueId}/revision-fragments`;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires catalogue review authority. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. Ordered by fragment ID. Optional sourceObjectClass/sourceObjectId must be supplied together and match exactly; this archive can include subjects without a native course mapping.
|
|
32
|
+
* @summary List a catalogue's imported revision fragments
|
|
33
|
+
*/
|
|
34
|
+
const learningCatalogueRevisionFragments = async (catalogueId, params, options) => {
|
|
35
|
+
return request(getLearningCatalogueRevisionFragmentsUrl(catalogueId, params), {
|
|
36
|
+
...options,
|
|
37
|
+
method: "GET"
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const getLearningCourseMessagesUrl = (courseId, params) => {
|
|
41
|
+
const normalizedParams = new URLSearchParams();
|
|
42
|
+
Object.entries(params || {}).forEach(([key, value]) => {
|
|
43
|
+
if (value !== void 0) normalizedParams.append(key, value === null ? "null" : String(value));
|
|
44
|
+
});
|
|
45
|
+
const stringifiedParams = normalizedParams.toString();
|
|
46
|
+
return stringifiedParams.length > 0 ? `/learning/author/courses/${courseId}/messages?${stringifiedParams}` : `/learning/author/courses/${courseId}/messages`;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Requires course read-authoring authority; support impersonation is rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by message ID. Omitting revisionId includes all course messages; specifying it returns only that revision's messages and requires the revision to belong to courseId. Imported discussion can preserve unknown userId and createdAt.
|
|
50
|
+
* @summary List private course editorial messages
|
|
51
|
+
*/
|
|
52
|
+
const learningCourseMessages = async (courseId, params, options) => {
|
|
53
|
+
return request(getLearningCourseMessagesUrl(courseId, params), {
|
|
54
|
+
...options,
|
|
55
|
+
method: "GET"
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const getLearningAddEditorialMessageUrl = (courseId) => {
|
|
59
|
+
return `/learning/author/courses/${courseId}/messages`;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Requires course edit authority, catalogue review authority or global authority; support impersonation is rejected. Appends an attributed message without changing the course definition. Optional revisionId must identify a revision of this course. Omit it or use null for a course-level discussion.
|
|
63
|
+
* @summary Add a private course editorial message
|
|
64
|
+
*/
|
|
65
|
+
const learningAddEditorialMessage = async (courseId, learningEditorialMessageWrite, options) => {
|
|
66
|
+
const getHeaders = (h) => {
|
|
67
|
+
if (!h) return {};
|
|
68
|
+
if (h instanceof Headers) return Object.fromEntries(h.entries());
|
|
69
|
+
if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
|
|
70
|
+
const headers = {};
|
|
71
|
+
for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
|
|
72
|
+
return headers;
|
|
73
|
+
};
|
|
74
|
+
return request(getLearningAddEditorialMessageUrl(courseId), {
|
|
75
|
+
...options,
|
|
76
|
+
method: "POST",
|
|
77
|
+
headers: {
|
|
78
|
+
"Content-Type": "application/json",
|
|
79
|
+
...getHeaders(options?.headers)
|
|
80
|
+
},
|
|
81
|
+
body: JSON.stringify(learningEditorialMessageWrite)
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
const getLearningCourseRevisionFragmentsUrl = (courseId, params) => {
|
|
85
|
+
const normalizedParams = new URLSearchParams();
|
|
86
|
+
Object.entries(params || {}).forEach(([key, value]) => {
|
|
87
|
+
if (value !== void 0) normalizedParams.append(key, value === null ? "null" : String(value));
|
|
88
|
+
});
|
|
89
|
+
const stringifiedParams = normalizedParams.toString();
|
|
90
|
+
return stringifiedParams.length > 0 ? `/learning/author/courses/${courseId}/revision-fragments?${stringifiedParams}` : `/learning/author/courses/${courseId}/revision-fragments`;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Requires course read-authoring authority and rejects support impersonation. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. Summaries are ordered by fragment ID; use the fragment detail route for retained source bytes.
|
|
94
|
+
* @summary List a course's imported revision fragments
|
|
95
|
+
*/
|
|
96
|
+
const learningCourseRevisionFragments = async (courseId, params, options) => {
|
|
97
|
+
return request(getLearningCourseRevisionFragmentsUrl(courseId, params), {
|
|
98
|
+
...options,
|
|
99
|
+
method: "GET"
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
const getLearningRevisionFragmentUrl = (fragmentId) => {
|
|
103
|
+
return `/learning/author/revision-fragments/${fragmentId}`;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Requires read-authoring authority on a linked course, or review authority on its catalogue when no course is linked. Unscoped fragments are unavailable. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. sourcePayload is opaque base64 source evidence, not a complete native course definition. sourcePayloadSha256 records its evidence digest; payload retention may be absent.
|
|
107
|
+
* @summary Read a private imported revision fragment
|
|
108
|
+
*/
|
|
109
|
+
const learningRevisionFragment = async (fragmentId, options) => {
|
|
110
|
+
return request(getLearningRevisionFragmentUrl(fragmentId), {
|
|
111
|
+
...options,
|
|
112
|
+
method: "GET"
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
const getLearningSubmissionHistoryUrl = (params) => {
|
|
116
|
+
const normalizedParams = new URLSearchParams();
|
|
117
|
+
Object.entries(params || {}).forEach(([key, value]) => {
|
|
118
|
+
if (value !== void 0) normalizedParams.append(key, value === null ? "null" : String(value));
|
|
119
|
+
});
|
|
120
|
+
const stringifiedParams = normalizedParams.toString();
|
|
121
|
+
return stringifiedParams.length > 0 ? `/learning/submissions/history?${stringifiedParams}` : `/learning/submissions/history`;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Returns only the effective profile's imported submission evidence; support impersonation is rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by submission ID. A record attests that a submission existed, without inventing an attempt, date, grade or correction. assetId can be null when no retained file is linked.
|
|
125
|
+
* @summary List my historical exercise submissions
|
|
126
|
+
*/
|
|
127
|
+
const learningSubmissionHistory = async (params, options) => {
|
|
128
|
+
return request(getLearningSubmissionHistoryUrl(params), {
|
|
129
|
+
...options,
|
|
130
|
+
method: "GET"
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
const getLearningSubmissionHistoryResourceUrl = (submissionId) => {
|
|
134
|
+
return `/learning/submissions/history/${submissionId}/resource`;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Requires ownership of both the historical submission and its active, unshared submission asset. Support impersonation is rejected. Returns a delivery descriptor rather than file bytes; absence of a retained asset returns 404 and does not erase the submission evidence.
|
|
138
|
+
* @summary Get my historical submission's private resource
|
|
139
|
+
*/
|
|
140
|
+
const learningSubmissionHistoryResource = async (submissionId, options) => {
|
|
141
|
+
return request(getLearningSubmissionHistoryResourceUrl(submissionId), {
|
|
142
|
+
...options,
|
|
143
|
+
method: "GET"
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
//#endregion
|
|
147
|
+
export { getLearningAddEditorialMessageUrl, getLearningCatalogueMessagesUrl, getLearningCatalogueRevisionFragmentsUrl, getLearningCourseMessagesUrl, getLearningCourseRevisionFragmentsUrl, getLearningRevisionFragmentUrl, getLearningSubmissionHistoryResourceUrl, getLearningSubmissionHistoryUrl, learningAddEditorialMessage, learningCatalogueMessages, learningCatalogueRevisionFragments, learningCourseMessages, learningCourseRevisionFragments, learningRevisionFragment, learningSubmissionHistory, learningSubmissionHistoryResource };
|
|
148
|
+
|
|
149
|
+
//# sourceMappingURL=biblio-learning-editorial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"biblio-learning-editorial.js","names":[],"sources":["../../src/api/biblio-learning-editorial/biblio-learning-editorial.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.13.0\n */\nimport type {\n LearningAssetRead,\n LearningCatalogueMessagesParams,\n LearningCatalogueRevisionFragmentsParams,\n LearningCourseMessagesParams,\n LearningCourseRevisionFragmentsParams,\n LearningEditorialFragmentDetailRead,\n LearningEditorialFragmentPage,\n LearningEditorialMessagePage,\n LearningEditorialMessageRead,\n LearningEditorialMessageWrite,\n LearningSubmissionHistoryPage,\n LearningSubmissionHistoryParams\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getLearningCatalogueMessagesUrl = (catalogueId: number,\n params?: LearningCatalogueMessagesParams,) => {\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/catalogues/${catalogueId}/messages?${stringifiedParams}` : `/learning/author/catalogues/${catalogueId}/messages`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires catalogue review authority. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by message ID, including subjects not linked to a native course. sourceObjectClass and sourceObjectId are exact source-subject selectors and must be supplied together; they never grant access to another catalogue.\n * @summary List a catalogue's private editorial archive\n */\nexport const learningCatalogueMessages = async (catalogueId: number,\n params?: LearningCatalogueMessagesParams, options?: Parameters<typeof request>[1]): Promise<LearningEditorialMessagePage> => {\n\n return request<LearningEditorialMessagePage>(getLearningCatalogueMessagesUrl(catalogueId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningCatalogueRevisionFragmentsUrl = (catalogueId: number,\n params?: LearningCatalogueRevisionFragmentsParams,) => {\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/catalogues/${catalogueId}/revision-fragments?${stringifiedParams}` : `/learning/author/catalogues/${catalogueId}/revision-fragments`\n}\n\n/**\n * Requires the effective independent author profile and the relevant catalogue, ownership or global authority. Support impersonation is rejected. Requires catalogue review authority. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. Ordered by fragment ID. Optional sourceObjectClass/sourceObjectId must be supplied together and match exactly; this archive can include subjects without a native course mapping.\n * @summary List a catalogue's imported revision fragments\n */\nexport const learningCatalogueRevisionFragments = async (catalogueId: number,\n params?: LearningCatalogueRevisionFragmentsParams, options?: Parameters<typeof request>[1]): Promise<LearningEditorialFragmentPage> => {\n\n return request<LearningEditorialFragmentPage>(getLearningCatalogueRevisionFragmentsUrl(catalogueId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningCourseMessagesUrl = (courseId: number,\n params?: LearningCourseMessagesParams,) => {\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}/messages?${stringifiedParams}` : `/learning/author/courses/${courseId}/messages`\n}\n\n/**\n * Requires course read-authoring authority; support impersonation is rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by message ID. Omitting revisionId includes all course messages; specifying it returns only that revision's messages and requires the revision to belong to courseId. Imported discussion can preserve unknown userId and createdAt.\n * @summary List private course editorial messages\n */\nexport const learningCourseMessages = async (courseId: number,\n params?: LearningCourseMessagesParams, options?: Parameters<typeof request>[1]): Promise<LearningEditorialMessagePage> => {\n\n return request<LearningEditorialMessagePage>(getLearningCourseMessagesUrl(courseId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningAddEditorialMessageUrl = (courseId: number,) => {\n\n\n\n\n return `/learning/author/courses/${courseId}/messages`\n}\n\n/**\n * Requires course edit authority, catalogue review authority or global authority; support impersonation is rejected. Appends an attributed message without changing the course definition. Optional revisionId must identify a revision of this course. Omit it or use null for a course-level discussion.\n * @summary Add a private course editorial message\n */\nexport const learningAddEditorialMessage = async (courseId: number,\n learningEditorialMessageWrite: LearningEditorialMessageWrite, options?: Parameters<typeof request>[1]): Promise<LearningEditorialMessageRead> => {\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<LearningEditorialMessageRead>(getLearningAddEditorialMessageUrl(courseId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(learningEditorialMessageWrite)\n }\n);}\n\n\nexport const getLearningCourseRevisionFragmentsUrl = (courseId: number,\n params?: LearningCourseRevisionFragmentsParams,) => {\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}/revision-fragments?${stringifiedParams}` : `/learning/author/courses/${courseId}/revision-fragments`\n}\n\n/**\n * Requires course read-authoring authority and rejects support impersonation. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. Summaries are ordered by fragment ID; use the fragment detail route for retained source bytes.\n * @summary List a course's imported revision fragments\n */\nexport const learningCourseRevisionFragments = async (courseId: number,\n params?: LearningCourseRevisionFragmentsParams, options?: Parameters<typeof request>[1]): Promise<LearningEditorialFragmentPage> => {\n\n return request<LearningEditorialFragmentPage>(getLearningCourseRevisionFragmentsUrl(courseId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningRevisionFragmentUrl = (fragmentId: number,) => {\n\n\n\n\n return `/learning/author/revision-fragments/${fragmentId}`\n}\n\n/**\n * Requires read-authoring authority on a linked course, or review authority on its catalogue when no course is linked. Unscoped fragments are unavailable. A fragment is partial source evidence, not a complete native revision or a replayable patch. Missing source dates and publication facts remain unknown; neither version labels nor source status prove publication. sourcePayload is opaque base64 source evidence, not a complete native course definition. sourcePayloadSha256 records its evidence digest; payload retention may be absent.\n * @summary Read a private imported revision fragment\n */\nexport const learningRevisionFragment = async (fragmentId: number, options?: Parameters<typeof request>[1]): Promise<LearningEditorialFragmentDetailRead> => {\n\n return request<LearningEditorialFragmentDetailRead>(getLearningRevisionFragmentUrl(fragmentId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningSubmissionHistoryUrl = (params?: LearningSubmissionHistoryParams,) => {\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/submissions/history?${stringifiedParams}` : `/learning/submissions/history`\n}\n\n/**\n * Returns only the effective profile's imported submission evidence; support impersonation is rejected. Results are filtered to the caller's scope before pagination; page is one-based and limit is bounded by the shared pagination contract. Ordered by submission ID. A record attests that a submission existed, without inventing an attempt, date, grade or correction. assetId can be null when no retained file is linked.\n * @summary List my historical exercise submissions\n */\nexport const learningSubmissionHistory = async (params?: LearningSubmissionHistoryParams, options?: Parameters<typeof request>[1]): Promise<LearningSubmissionHistoryPage> => {\n\n return request<LearningSubmissionHistoryPage>(getLearningSubmissionHistoryUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getLearningSubmissionHistoryResourceUrl = (submissionId: number,) => {\n\n\n\n\n return `/learning/submissions/history/${submissionId}/resource`\n}\n\n/**\n * Requires ownership of both the historical submission and its active, unshared submission asset. Support impersonation is rejected. Returns a delivery descriptor rather than file bytes; absence of a retained asset returns 404 and does not erase the submission evidence.\n * @summary Get my historical submission's private resource\n */\nexport const learningSubmissionHistoryResource = async (submissionId: number, options?: Parameters<typeof request>[1]): Promise<LearningAssetRead> => {\n\n return request<LearningAssetRead>(getLearningSubmissionHistoryResourceUrl(submissionId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
|
|
2
|
+
import { Ao as LearningCustomerCourseStatisticsParams, Do as LearningCustomerStatsRead, La as LearningOwnFeedbackParams, Mo as LearningCourseStatsRead, Oo as LearningCustomerStatisticsParams, _i as LearningSurveyRead, _o as LearningFeedbackPage, ea as LearningReportingScopesParams, es as LearningCatalogueCustomerStatisticsParams, gi as LearningTenantStatsRead, go as LearningFeedbackWrite, jo as LearningCourseStatsPage, ko as LearningCustomerGrantWrite, rs as LearningAuthorStatisticsParams, ta as LearningReportingScopePage, vo as LearningFeedbackRead } from "../chunks/index.js";
|
|
3
|
+
import { c as request } from "../chunks/client.js";
|
|
4
|
+
//#region src/api/biblio-learning-feedback/biblio-learning-feedback.d.ts
|
|
5
|
+
export declare const getLearningSetCustomerReporterUrl: (catalogueId: number, tenantId: number) => string;
|
|
6
|
+
/**
|
|
7
|
+
* 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.
|
|
8
|
+
* @summary Grant or revoke a catalogue/customer reporter
|
|
9
|
+
*/
|
|
10
|
+
export declare const learningSetCustomerReporter: (catalogueId: number, tenantId: number, learningCustomerGrantWrite: LearningCustomerGrantWrite, options?: Parameters<typeof request>[1]) => Promise<void>;
|
|
11
|
+
export declare const getLearningAuthorStatisticsUrl: (courseId: number, params: LearningAuthorStatisticsParams) => string;
|
|
12
|
+
/**
|
|
13
|
+
* 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.
|
|
14
|
+
* @summary Read aggregate statistics for an authored course
|
|
15
|
+
*/
|
|
16
|
+
export declare const learningAuthorStatistics: (courseId: number, params: LearningAuthorStatisticsParams, options?: Parameters<typeof request>[1]) => Promise<LearningCourseStatsRead>;
|
|
17
|
+
export declare const getLearningOwnFeedbackUrl: (courseId: number, params?: LearningOwnFeedbackParams) => string;
|
|
18
|
+
/**
|
|
19
|
+
* 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.
|
|
20
|
+
* @summary List this profile’s course feedback
|
|
21
|
+
*/
|
|
22
|
+
export declare const learningOwnFeedback: (courseId: number, params?: LearningOwnFeedbackParams, options?: Parameters<typeof request>[1]) => Promise<LearningFeedbackPage>;
|
|
23
|
+
export declare const getLearningSubmitFeedbackUrl: (courseId: number) => string;
|
|
24
|
+
/**
|
|
25
|
+
* 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.
|
|
26
|
+
* @summary Save private feedback at current course progress
|
|
27
|
+
*/
|
|
28
|
+
export declare const learningSubmitFeedback: (courseId: number, learningFeedbackWrite: LearningFeedbackWrite, options?: Parameters<typeof request>[1]) => Promise<LearningFeedbackRead>;
|
|
29
|
+
export declare const getLearningCreateSurveyUrl: (courseId: number) => string;
|
|
30
|
+
/**
|
|
31
|
+
* 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.
|
|
32
|
+
* @summary Create a private course survey invitation
|
|
33
|
+
*/
|
|
34
|
+
export declare const learningCreateSurvey: (courseId: number, options?: Parameters<typeof request>[1]) => Promise<LearningSurveyRead>;
|
|
35
|
+
export declare const getLearningCatalogueCustomerStatisticsUrl: (catalogueId: number, tenantId: number, params: LearningCatalogueCustomerStatisticsParams) => string;
|
|
36
|
+
/**
|
|
37
|
+
* 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.
|
|
38
|
+
* @summary Read a catalogue/customer learning summary
|
|
39
|
+
*/
|
|
40
|
+
export declare const learningCatalogueCustomerStatistics: (catalogueId: number, tenantId: number, params: LearningCatalogueCustomerStatisticsParams, options?: Parameters<typeof request>[1]) => Promise<LearningCustomerStatsRead>;
|
|
41
|
+
export declare const getLearningReportingScopesUrl: (params?: LearningReportingScopesParams) => string;
|
|
42
|
+
/**
|
|
43
|
+
* 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.
|
|
44
|
+
* @summary List the profile’s customer reporting mandates
|
|
45
|
+
*/
|
|
46
|
+
export declare const learningReportingScopes: (params?: LearningReportingScopesParams, options?: Parameters<typeof request>[1]) => Promise<LearningReportingScopePage>;
|
|
47
|
+
export declare const getLearningCustomerStatisticsUrl: (tenantId: number, params: LearningCustomerStatisticsParams) => string;
|
|
48
|
+
/**
|
|
49
|
+
* 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.
|
|
50
|
+
* @summary Read staff learning totals for a customer
|
|
51
|
+
*/
|
|
52
|
+
export declare const learningCustomerStatistics: (tenantId: number, params: LearningCustomerStatisticsParams, options?: Parameters<typeof request>[1]) => Promise<LearningTenantStatsRead>;
|
|
53
|
+
export declare const getLearningCustomerCourseStatisticsUrl: (tenantId: number, params: LearningCustomerCourseStatisticsParams) => string;
|
|
54
|
+
/**
|
|
55
|
+
* 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.
|
|
56
|
+
* @summary List staff course statistics for a customer
|
|
57
|
+
*/
|
|
58
|
+
export declare const learningCustomerCourseStatistics: (tenantId: number, params: LearningCustomerCourseStatisticsParams, options?: Parameters<typeof request>[1]) => Promise<LearningCourseStatsPage>;
|
|
59
|
+
//#endregion
|
|
60
|
+
//# sourceMappingURL=biblio-learning-feedback.d.ts.map
|