@learnorama/mozaik-sdk 0.12.3-staging.46.1 → 0.12.4-staging.47.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/README.md +25 -0
  2. package/dist/api/account.d.ts +1 -1
  3. package/dist/api/account.js.map +1 -1
  4. package/dist/api/admin-catalogue.js.map +1 -1
  5. package/dist/api/admin-consumption.js.map +1 -1
  6. package/dist/api/admin-contracts.d.ts +1 -1
  7. package/dist/api/admin-contracts.js.map +1 -1
  8. package/dist/api/admin-desk.d.ts +1 -1
  9. package/dist/api/admin-desk.js.map +1 -1
  10. package/dist/api/admin-licenses.js.map +1 -1
  11. package/dist/api/admin-partner-selections.d.ts +1 -1
  12. package/dist/api/admin-partner-selections.js.map +1 -1
  13. package/dist/api/admin-patrons.js.map +1 -1
  14. package/dist/api/admin-reviews.js.map +1 -1
  15. package/dist/api/admin-roles.js.map +1 -1
  16. package/dist/api/admin-support.js.map +1 -1
  17. package/dist/api/admin-tenants.js.map +1 -1
  18. package/dist/api/admin-tutoring.d.ts +1 -1
  19. package/dist/api/admin-tutoring.js.map +1 -1
  20. package/dist/api/auth.d.ts +1 -1
  21. package/dist/api/auth.js.map +1 -1
  22. package/dist/api/biblio-catalogue.d.ts +1 -1
  23. package/dist/api/biblio-catalogue.js.map +1 -1
  24. package/dist/api/biblio-home.js.map +1 -1
  25. package/dist/api/biblio-library.d.ts +1 -1
  26. package/dist/api/biblio-library.js.map +1 -1
  27. package/dist/api/biblio-nextory.js.map +1 -1
  28. package/dist/api/biblio-press.js.map +1 -1
  29. package/dist/api/biblio-search.js.map +1 -1
  30. package/dist/api/biblio-telemetry.js.map +1 -1
  31. package/dist/api/consumption.js.map +1 -1
  32. package/dist/api/cvs-app.js.map +1 -1
  33. package/dist/api/cvs-documents.js.map +1 -1
  34. package/dist/api/cvs-favorites.js.map +1 -1
  35. package/dist/api/cvs-ils.js.map +1 -1
  36. package/dist/api/cvs-loans.d.ts +1 -1
  37. package/dist/api/cvs-loans.js.map +1 -1
  38. package/dist/api/cvs-payments.js.map +1 -1
  39. package/dist/api/cvs-streaming.js.map +1 -1
  40. package/dist/api/partner-catalogue.js.map +1 -1
  41. package/dist/api/partner-reader.js.map +1 -1
  42. package/dist/api/profiles.js.map +1 -1
  43. package/dist/api/search.d.ts +1 -1
  44. package/dist/api/search.js.map +1 -1
  45. package/dist/api/tutoring-catalogue.js.map +1 -1
  46. package/dist/api/tutoring-chat.d.ts +1 -1
  47. package/dist/api/tutoring-chat.js.map +1 -1
  48. package/dist/api/tutoring-dispatch.js.map +1 -1
  49. package/dist/api/tutoring-practitioner.js.map +1 -1
  50. package/dist/api/tutoring-requests.d.ts +1 -1
  51. package/dist/api/tutoring-requests.js.map +1 -1
  52. package/dist/chunks/client2.d.ts +1 -1
  53. package/dist/chunks/index.d.ts +263 -239
  54. package/dist/index.d.ts +3 -3
  55. package/dist/index.js +3 -3
  56. package/dist/index.js.map +1 -1
  57. package/dist/models.d.ts +2 -2
  58. package/dist/models.js.map +1 -1
  59. package/dist/react/account.d.ts +1 -1
  60. package/dist/react/account.js +1 -1
  61. package/dist/react/account.js.map +1 -1
  62. package/dist/react/admin-catalogue.js +1 -1
  63. package/dist/react/admin-catalogue.js.map +1 -1
  64. package/dist/react/admin-consumption.js +1 -1
  65. package/dist/react/admin-consumption.js.map +1 -1
  66. package/dist/react/admin-contracts.d.ts +1 -1
  67. package/dist/react/admin-contracts.js +1 -1
  68. package/dist/react/admin-contracts.js.map +1 -1
  69. package/dist/react/admin-desk.d.ts +1 -1
  70. package/dist/react/admin-desk.js +1 -1
  71. package/dist/react/admin-desk.js.map +1 -1
  72. package/dist/react/admin-licenses.js +1 -1
  73. package/dist/react/admin-licenses.js.map +1 -1
  74. package/dist/react/admin-partner-selections.d.ts +1 -1
  75. package/dist/react/admin-partner-selections.js +1 -1
  76. package/dist/react/admin-partner-selections.js.map +1 -1
  77. package/dist/react/admin-patrons.js +1 -1
  78. package/dist/react/admin-patrons.js.map +1 -1
  79. package/dist/react/admin-reviews.js +1 -1
  80. package/dist/react/admin-reviews.js.map +1 -1
  81. package/dist/react/admin-roles.js +1 -1
  82. package/dist/react/admin-roles.js.map +1 -1
  83. package/dist/react/admin-support.js +1 -1
  84. package/dist/react/admin-support.js.map +1 -1
  85. package/dist/react/admin-tenants.js +1 -1
  86. package/dist/react/admin-tenants.js.map +1 -1
  87. package/dist/react/admin-tutoring.d.ts +1 -1
  88. package/dist/react/admin-tutoring.js +1 -1
  89. package/dist/react/admin-tutoring.js.map +1 -1
  90. package/dist/react/auth.d.ts +1 -1
  91. package/dist/react/auth.js +1 -1
  92. package/dist/react/auth.js.map +1 -1
  93. package/dist/react/biblio-catalogue.d.ts +1 -1
  94. package/dist/react/biblio-catalogue.js +1 -1
  95. package/dist/react/biblio-catalogue.js.map +1 -1
  96. package/dist/react/biblio-home.js +1 -1
  97. package/dist/react/biblio-home.js.map +1 -1
  98. package/dist/react/biblio-library.d.ts +1 -1
  99. package/dist/react/biblio-library.js +1 -1
  100. package/dist/react/biblio-library.js.map +1 -1
  101. package/dist/react/biblio-nextory.js +1 -1
  102. package/dist/react/biblio-nextory.js.map +1 -1
  103. package/dist/react/biblio-press.js +1 -1
  104. package/dist/react/biblio-press.js.map +1 -1
  105. package/dist/react/biblio-search.js +1 -1
  106. package/dist/react/biblio-search.js.map +1 -1
  107. package/dist/react/biblio-telemetry.js +1 -1
  108. package/dist/react/biblio-telemetry.js.map +1 -1
  109. package/dist/react/consumption.js +1 -1
  110. package/dist/react/consumption.js.map +1 -1
  111. package/dist/react/cvs-app.js +1 -1
  112. package/dist/react/cvs-app.js.map +1 -1
  113. package/dist/react/cvs-documents.js +1 -1
  114. package/dist/react/cvs-documents.js.map +1 -1
  115. package/dist/react/cvs-favorites.js +1 -1
  116. package/dist/react/cvs-favorites.js.map +1 -1
  117. package/dist/react/cvs-ils.js +1 -1
  118. package/dist/react/cvs-ils.js.map +1 -1
  119. package/dist/react/cvs-loans.d.ts +1 -1
  120. package/dist/react/cvs-loans.js +1 -1
  121. package/dist/react/cvs-loans.js.map +1 -1
  122. package/dist/react/cvs-payments.js +1 -1
  123. package/dist/react/cvs-payments.js.map +1 -1
  124. package/dist/react/cvs-streaming.js +1 -1
  125. package/dist/react/cvs-streaming.js.map +1 -1
  126. package/dist/react/partner-catalogue.js +1 -1
  127. package/dist/react/partner-catalogue.js.map +1 -1
  128. package/dist/react/partner-reader.js +1 -1
  129. package/dist/react/partner-reader.js.map +1 -1
  130. package/dist/react/profiles.js +1 -1
  131. package/dist/react/profiles.js.map +1 -1
  132. package/dist/react/search.d.ts +1 -1
  133. package/dist/react/search.js +1 -1
  134. package/dist/react/search.js.map +1 -1
  135. package/dist/react/tutoring-catalogue.js +1 -1
  136. package/dist/react/tutoring-catalogue.js.map +1 -1
  137. package/dist/react/tutoring-chat.d.ts +1 -1
  138. package/dist/react/tutoring-chat.js +1 -1
  139. package/dist/react/tutoring-chat.js.map +1 -1
  140. package/dist/react/tutoring-dispatch.js +1 -1
  141. package/dist/react/tutoring-dispatch.js.map +1 -1
  142. package/dist/react/tutoring-practitioner.js +1 -1
  143. package/dist/react/tutoring-practitioner.js.map +1 -1
  144. package/dist/react/tutoring-requests.d.ts +1 -1
  145. package/dist/react/tutoring-requests.js +1 -1
  146. package/dist/react/tutoring-requests.js.map +1 -1
  147. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"partner-catalogue.js","names":[],"sources":["../../src/api/partner-catalogue/partner-catalogue.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n ListMediaParams,\n ListPartnerSelectionMediaParams,\n ListPartnerSelectionsParams,\n PartnerCategoryListRead,\n PartnerFacetsRead,\n PartnerFavoriteListRead,\n PartnerHomeRead,\n PartnerMediaPage,\n PartnerMediaRead,\n PartnerProvider,\n PartnerSelectionListRead,\n ReadPartnerFacetsParams,\n ReadPartnerHomeParams\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListPartnerCategoriesUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/categories`\n}\n\n/**\n * The provider's taxonomy, with a count per node for this caller's slice.\n *\n * Counts come from ``partner_category_total`` and are summed across languages,\n * because the menu shows one number and the rollup is keyed per language. A\n * node with no matching rollup row reports ``0`` rather than being hidden: the\n * tree shape is stable, and a branch that vanishes because today's import found\n * nothing in it is harder to reason about than one that reads zero.\n * @summary List Partner Categories\n */\nexport const listPartnerCategories = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<PartnerCategoryListRead> => {\n\n return request<PartnerCategoryListRead>(getListPartnerCategoriesUrl(provider),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadPartnerFacetsUrl = (provider: PartnerProvider,\n params?: ReadPartnerFacetsParams,) => {\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 ? `/partners/${provider}/facets?${stringifiedParams}` : `/partners/${provider}/facets`\n}\n\n/**\n * Available languages and shelves in this profile's visible catalogue.\n *\n * Values are usable directly in ``/media`` filters, including the empty\n * language value for titles whose provider supplied no language. Each facet\n * drops its own filter so alternatives remain reachable.\n * @summary Read Partner Facets\n */\nexport const readPartnerFacets = async (provider: PartnerProvider,\n params?: ReadPartnerFacetsParams, options?: Parameters<typeof request>[1]): Promise<PartnerFacetsRead> => {\n\n return request<PartnerFacetsRead>(getReadPartnerFacetsUrl(provider,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListPartnerFavoritesUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/favorites`\n}\n\n/**\n * This reader's bookmarks, filtered to what they may still see.\n *\n * The filter matters: a title can become adult-only, or leave the plan, between\n * being bookmarked and being listed. The legacy joined favourites to media with\n * no visibility predicate at all.\n * @summary List Partner Favorites\n */\nexport const listPartnerFavorites = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<PartnerFavoriteListRead> => {\n\n return request<PartnerFavoriteListRead>(getListPartnerFavoritesUrl(provider),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getRemovePartnerFavoriteUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/favorites/${mediaId}`\n}\n\n/**\n * Remove a bookmark. Idempotent, and deliberately not visibility-filtered.\n *\n * A reader must be able to unbookmark a title they can no longer see —\n * otherwise a media leaving their plan strands a row they have no way to\n * remove.\n * @summary Remove Partner Favorite\n */\nexport const removePartnerFavorite = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getRemovePartnerFavoriteUrl(provider,mediaId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getAddPartnerFavoriteUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/favorites/${mediaId}`\n}\n\n/**\n * Bookmark a title. Idempotent.\n *\n * ``PUT``/``DELETE`` rather than the legacy's ``POST /toggle-favorite.json``. A\n * toggle is not idempotent, and the legacy's had no uniqueness behind it: two\n * tabs toggling at once left two rows, and un-toggling then removed one of\n * them, so the title stayed bookmarked.\n * @summary Add Partner Favorite\n */\nexport const addPartnerFavorite = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getAddPartnerFavoriteUrl(provider,mediaId),\n {\n ...options,\n method: 'PUT'\n\n\n }\n);}\n\n\nexport const getReadPartnerHomeUrl = (provider: PartnerProvider,\n params?: ReadPartnerHomeParams,) => {\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 ? `/partners/${provider}/home-feed?${stringifiedParams}` : `/partners/${provider}/home-feed`\n}\n\n/**\n * Visible shelves, favourites and locally saved readings for this profile.\n *\n * At most ``limit`` cards per section. No provider request, reader URL, licence\n * allocation or consumption event is produced by browsing this home.\n * @summary Read Partner Home\n */\nexport const readPartnerHome = async (provider: PartnerProvider,\n params?: ReadPartnerHomeParams, options?: Parameters<typeof request>[1]): Promise<PartnerHomeRead> => {\n\n return request<PartnerHomeRead>(getReadPartnerHomeUrl(provider,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListMediaUrl = (provider: PartnerProvider,\n params?: ListMediaParams,) => {\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 ? `/partners/${provider}/media?${stringifiedParams}` : `/partners/${provider}/media`\n}\n\n/**\n * A page of the catalogue.\n *\n * ``q`` ranks through Elasticsearch and then **intersects** with the same\n * visibility subquery as an unfiltered listing — the index knows nothing about\n * plans or ages, so authorisation happens here whatever the index returns. An\n * index that is missing or unreachable yields no candidates, which reads as an\n * empty page rather than an unfiltered one.\n *\n * A search result keeps the index's ranking rather than applying ``order``:\n * re-sorting relevance by publication date discards the only thing the search\n * contributed. That is why ``order`` is ignored when ``q`` is present, not\n * silently combined with it.\n * @summary List Media\n */\nexport const listMedia = async (provider: PartnerProvider,\n params?: ListMediaParams, options?: Parameters<typeof request>[1]): Promise<PartnerMediaPage> => {\n\n return request<PartnerMediaPage>(getListMediaUrl(provider,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadMediaUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/media/${mediaId}`\n}\n\n/**\n * One title.\n *\n * A media outside the caller's slice is ``404``, not ``403``: whether an adult\n * title exists is itself something a minor's client should not be able to\n * determine, and the legacy's detail page dereferenced an unknown id straight\n * into a 500.\n * @summary Read Media\n */\nexport const readMedia = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<PartnerMediaRead> => {\n\n return request<PartnerMediaRead>(getReadMediaUrl(provider,mediaId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListPartnerSelectionsUrl = (provider: PartnerProvider,\n params?: ListPartnerSelectionsParams,) => {\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 ? `/partners/${provider}/selections?${stringifiedParams}` : `/partners/${provider}/selections`\n}\n\n/**\n * The published bands of one page, in the order they hold there.\n *\n * Titles and ids only: each band loads its own media through the endpoint\n * below, as every other shelf on these pages does.\n *\n * A band standing on the other shelf is absent rather than empty — see\n * ``cat.visible_selections`` for why that is a listing decision and not a\n * filtering one. A page nobody curated answers an empty list, which is what a\n * page with no bands looks like; it is not a 404.\n * @summary List Partner Selections\n */\nexport const listPartnerSelections = async (provider: PartnerProvider,\n params?: ListPartnerSelectionsParams, options?: Parameters<typeof request>[1]): Promise<PartnerSelectionListRead> => {\n\n return request<PartnerSelectionListRead>(getListPartnerSelectionsUrl(provider,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListPartnerSelectionMediaUrl = (provider: PartnerProvider,\n selectionId: number,\n params?: ListPartnerSelectionMediaParams,) => {\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 ? `/partners/${provider}/selections/${selectionId}/media?${stringifiedParams}` : `/partners/${provider}/selections/${selectionId}/media`\n}\n\n/**\n * What one band holds, in the order an editor arranged it.\n *\n * The band is checked against the same visibility as the listing, so a band\n * for the other shelf is a ``404`` rather than an empty page: whether a\n * library band exists is not something a reader without one should learn by\n * its id answering differently.\n *\n * Its contents go through ``visible_media`` like any other listing. A band is\n * an editorial arrangement, never an entitlement: a title that left the\n * catalogue, turned adult-only or fell outside this caller's plan is absent\n * here too, and the total counts what remains rather than what was curated.\n *\n * **Pagination only, and that is the whole contract.** A band is an\n * arrangement: the order *is* the content, and an editor who placed twelve\n * covers did not place them alphabetically or by language. It took\n * ``PartnerMediaQuery`` and applied none of ``media_type``, ``category_id``,\n * ``language``, ``q`` or ``order`` — a caller filtering a band got the band,\n * which is worse than being refused, because nothing said so.\n *\n * The legacy accepts no caller filter here either. Its band listing applies\n * ``MediaFilter::forReader`` — the reader's shelf, the catalogue's own media\n * types and the adult gate — all three properties of the reader, none of them\n * a request parameter.\n * @summary List Partner Selection Media\n */\nexport const listPartnerSelectionMedia = async (provider: PartnerProvider,\n selectionId: number,\n params?: ListPartnerSelectionMediaParams, options?: Parameters<typeof request>[1]): Promise<PartnerMediaPage> => {\n\n return request<PartnerMediaPage>(getListPartnerSelectionMediaUrl(provider,selectionId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"partner-catalogue.js","names":[],"sources":["../../src/api/partner-catalogue/partner-catalogue.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.4\n */\nimport type {\n ListMediaParams,\n ListPartnerSelectionMediaParams,\n ListPartnerSelectionsParams,\n PartnerCategoryListRead,\n PartnerFacetsRead,\n PartnerFavoriteListRead,\n PartnerHomeRead,\n PartnerMediaPage,\n PartnerMediaRead,\n PartnerProvider,\n PartnerSelectionListRead,\n ReadPartnerFacetsParams,\n ReadPartnerHomeParams\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListPartnerCategoriesUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/categories`\n}\n\n/**\n * The provider's taxonomy, with a count per node for this caller's slice.\n *\n * Counts come from ``partner_category_total`` and are summed across languages,\n * because the menu shows one number and the rollup is keyed per language. A\n * node with no matching rollup row reports ``0`` rather than being hidden: the\n * tree shape is stable, and a branch that vanishes because today's import found\n * nothing in it is harder to reason about than one that reads zero.\n * @summary List Partner Categories\n */\nexport const listPartnerCategories = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<PartnerCategoryListRead> => {\n\n return request<PartnerCategoryListRead>(getListPartnerCategoriesUrl(provider),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadPartnerFacetsUrl = (provider: PartnerProvider,\n params?: ReadPartnerFacetsParams,) => {\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 ? `/partners/${provider}/facets?${stringifiedParams}` : `/partners/${provider}/facets`\n}\n\n/**\n * Available languages and shelves in this profile's visible catalogue.\n *\n * Values are usable directly in ``/media`` filters, including the empty\n * language value for titles whose provider supplied no language. Each facet\n * drops its own filter so alternatives remain reachable.\n * @summary Read Partner Facets\n */\nexport const readPartnerFacets = async (provider: PartnerProvider,\n params?: ReadPartnerFacetsParams, options?: Parameters<typeof request>[1]): Promise<PartnerFacetsRead> => {\n\n return request<PartnerFacetsRead>(getReadPartnerFacetsUrl(provider,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListPartnerFavoritesUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/favorites`\n}\n\n/**\n * This reader's bookmarks, filtered to what they may still see.\n *\n * The filter matters: a title can become adult-only, or leave the plan, between\n * being bookmarked and being listed. The legacy joined favourites to media with\n * no visibility predicate at all.\n * @summary List Partner Favorites\n */\nexport const listPartnerFavorites = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<PartnerFavoriteListRead> => {\n\n return request<PartnerFavoriteListRead>(getListPartnerFavoritesUrl(provider),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getRemovePartnerFavoriteUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/favorites/${mediaId}`\n}\n\n/**\n * Remove a bookmark. Idempotent, and deliberately not visibility-filtered.\n *\n * A reader must be able to unbookmark a title they can no longer see —\n * otherwise a media leaving their plan strands a row they have no way to\n * remove.\n * @summary Remove Partner Favorite\n */\nexport const removePartnerFavorite = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getRemovePartnerFavoriteUrl(provider,mediaId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getAddPartnerFavoriteUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/favorites/${mediaId}`\n}\n\n/**\n * Bookmark a title. Idempotent.\n *\n * ``PUT``/``DELETE`` rather than the legacy's ``POST /toggle-favorite.json``. A\n * toggle is not idempotent, and the legacy's had no uniqueness behind it: two\n * tabs toggling at once left two rows, and un-toggling then removed one of\n * them, so the title stayed bookmarked.\n * @summary Add Partner Favorite\n */\nexport const addPartnerFavorite = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getAddPartnerFavoriteUrl(provider,mediaId),\n {\n ...options,\n method: 'PUT'\n\n\n }\n);}\n\n\nexport const getReadPartnerHomeUrl = (provider: PartnerProvider,\n params?: ReadPartnerHomeParams,) => {\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 ? `/partners/${provider}/home-feed?${stringifiedParams}` : `/partners/${provider}/home-feed`\n}\n\n/**\n * Visible shelves, favourites and locally saved readings for this profile.\n *\n * At most ``limit`` cards per section. No provider request, reader URL, licence\n * allocation or consumption event is produced by browsing this home.\n * @summary Read Partner Home\n */\nexport const readPartnerHome = async (provider: PartnerProvider,\n params?: ReadPartnerHomeParams, options?: Parameters<typeof request>[1]): Promise<PartnerHomeRead> => {\n\n return request<PartnerHomeRead>(getReadPartnerHomeUrl(provider,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListMediaUrl = (provider: PartnerProvider,\n params?: ListMediaParams,) => {\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 ? `/partners/${provider}/media?${stringifiedParams}` : `/partners/${provider}/media`\n}\n\n/**\n * A page of the catalogue.\n *\n * ``q`` ranks through Elasticsearch and then **intersects** with the same\n * visibility subquery as an unfiltered listing — the index knows nothing about\n * plans or ages, so authorisation happens here whatever the index returns. An\n * index that is missing or unreachable yields no candidates, which reads as an\n * empty page rather than an unfiltered one.\n *\n * A search result keeps the index's ranking rather than applying ``order``:\n * re-sorting relevance by publication date discards the only thing the search\n * contributed. That is why ``order`` is ignored when ``q`` is present, not\n * silently combined with it.\n * @summary List Media\n */\nexport const listMedia = async (provider: PartnerProvider,\n params?: ListMediaParams, options?: Parameters<typeof request>[1]): Promise<PartnerMediaPage> => {\n\n return request<PartnerMediaPage>(getListMediaUrl(provider,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadMediaUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/media/${mediaId}`\n}\n\n/**\n * One title.\n *\n * A media outside the caller's slice is ``404``, not ``403``: whether an adult\n * title exists is itself something a minor's client should not be able to\n * determine, and the legacy's detail page dereferenced an unknown id straight\n * into a 500.\n * @summary Read Media\n */\nexport const readMedia = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<PartnerMediaRead> => {\n\n return request<PartnerMediaRead>(getReadMediaUrl(provider,mediaId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListPartnerSelectionsUrl = (provider: PartnerProvider,\n params?: ListPartnerSelectionsParams,) => {\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 ? `/partners/${provider}/selections?${stringifiedParams}` : `/partners/${provider}/selections`\n}\n\n/**\n * The published bands of one page, in the order they hold there.\n *\n * Titles and ids only: each band loads its own media through the endpoint\n * below, as every other shelf on these pages does.\n *\n * A band standing on the other shelf is absent rather than empty — see\n * ``cat.visible_selections`` for why that is a listing decision and not a\n * filtering one. A page nobody curated answers an empty list, which is what a\n * page with no bands looks like; it is not a 404.\n * @summary List Partner Selections\n */\nexport const listPartnerSelections = async (provider: PartnerProvider,\n params?: ListPartnerSelectionsParams, options?: Parameters<typeof request>[1]): Promise<PartnerSelectionListRead> => {\n\n return request<PartnerSelectionListRead>(getListPartnerSelectionsUrl(provider,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListPartnerSelectionMediaUrl = (provider: PartnerProvider,\n selectionId: number,\n params?: ListPartnerSelectionMediaParams,) => {\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 ? `/partners/${provider}/selections/${selectionId}/media?${stringifiedParams}` : `/partners/${provider}/selections/${selectionId}/media`\n}\n\n/**\n * What one band holds, in the order an editor arranged it.\n *\n * The band is checked against the same visibility as the listing, so a band\n * for the other shelf is a ``404`` rather than an empty page: whether a\n * library band exists is not something a reader without one should learn by\n * its id answering differently.\n *\n * Its contents go through ``visible_media`` like any other listing. A band is\n * an editorial arrangement, never an entitlement: a title that left the\n * catalogue, turned adult-only or fell outside this caller's plan is absent\n * here too, and the total counts what remains rather than what was curated.\n *\n * **Pagination only, and that is the whole contract.** A band is an\n * arrangement: the order *is* the content, and an editor who placed twelve\n * covers did not place them alphabetically or by language. It took\n * ``PartnerMediaQuery`` and applied none of ``media_type``, ``category_id``,\n * ``language``, ``q`` or ``order`` — a caller filtering a band got the band,\n * which is worse than being refused, because nothing said so.\n *\n * The legacy accepts no caller filter here either. Its band listing applies\n * ``MediaFilter::forReader`` — the reader's shelf, the catalogue's own media\n * types and the adult gate — all three properties of the reader, none of them\n * a request parameter.\n * @summary List Partner Selection Media\n */\nexport const listPartnerSelectionMedia = async (provider: PartnerProvider,\n selectionId: number,\n params?: ListPartnerSelectionMediaParams, options?: Parameters<typeof request>[1]): Promise<PartnerMediaPage> => {\n\n return request<PartnerMediaPage>(getListPartnerSelectionMediaUrl(provider,selectionId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"partner-reader.js","names":[],"sources":["../../src/api/partner-reader/partner-reader.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n CurrentReadingListRead,\n PartnerProvider,\n ReadPackageParams,\n ReaderPackageRead,\n ReadingPositionRead,\n ReadingPositionWrite,\n YouScribeAuthRead,\n YouScribeReaderRead\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getReadPackageUrl = (provider: PartnerProvider,\n mediaId: number,\n params?: ReadPackageParams,) => {\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 ? `/partners/${provider}/media/${mediaId}/package?${stringifiedParams}` : `/partners/${provider}/media/${mediaId}/package`\n}\n\n/**\n * Where to fetch the content itself.\n *\n * The returned URL is a short-lived DRM-wrapped credential. It is not cached\n * here and should not be stored by the client.\n *\n * Opens a consumption lease, so the read appears in the ledger and counts\n * against the establishment's live seats like any other. Its id comes back in\n * ``lease``: keep it alive with ``PUT /consumption/{eventId}`` and drop it with\n * ``DELETE`` when the reader closes. A client that does neither is not broken\n * — the reaper closes the lease about a minute after the last heartbeat — but\n * every such read is a seat held past the end of it.\n *\n * Re-opening the same title returns the lease already held rather than a\n * second one, so a page reload does not leak a seat.\n * @summary Read Package\n */\nexport const readPackage = async (provider: PartnerProvider,\n mediaId: number,\n params?: ReadPackageParams, options?: Parameters<typeof request>[1]): Promise<ReaderPackageRead> => {\n\n return request<ReaderPackageRead>(getReadPackageUrl(provider,mediaId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadPositionUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/media/${mediaId}/position`\n}\n\n/**\n * The last synchronized local position, or the partner's when none is saved.\n *\n * ``404`` when the partner holds no position — a book never opened has no\n * place to return to, and reporting zero would make a client jump a reader who\n * *is* mid-book back to the start if the call ever failed soft.\n * @summary Read Position\n */\nexport const readPosition = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<ReadingPositionRead> => {\n\n return request<ReadingPositionRead>(getReadPositionUrl(provider,mediaId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getWritePositionUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/media/${mediaId}/position`\n}\n\n/**\n * Synchronize and save progress, with the partner's metering alongside it.\n *\n * ``usage_blocks`` is forwarded before a new position, matching the legacy's\n * call order. The two reports are independent: an older position may carry\n * usage the partner has not received yet.\n *\n * Only a strictly newer ``reachedAt`` replaces the saved position. Stale or\n * duplicate writes return that saved position without updating it upstream.\n * Provided usage blocks are still forwarded, including on retries; the\n * partner's deduplication contract is unknown. Conflicting positions at the\n * same instant return 409 before any outbound write.\n * Progress is a resume point, not a measurement of time spent reading.\n * @summary Write Position\n */\nexport const writePosition = async (provider: PartnerProvider,\n mediaId: number,\n readingPositionWrite: ReadingPositionWrite, options?: Parameters<typeof request>[1]): Promise<ReadingPositionRead> => {\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<ReadingPositionRead>(getWritePositionUrl(provider,mediaId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(readingPositionWrite)\n }\n);}\n\n\nexport const getOpenNativeReaderUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/media/${mediaId}/reader-auth`\n}\n\n/**\n * Authorize a YouScribe native title and open its consumption lease.\n *\n * Pass externalId and token to the YouScribe SDK. Mozaik requests keep using\n * mediaId. Renew lease.eventId while the reader is open and close it when the\n * reader exits; reopening the same title reuses its active lease.\n * @summary Open Native Reader\n */\nexport const openNativeReader = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<YouScribeReaderRead> => {\n\n return request<YouScribeReaderRead>(getOpenNativeReaderUrl(provider,mediaId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getListCurrentReadingsUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/readings`\n}\n\n/**\n * The partner's own \"continue reading\" list, joined back to our catalogue.\n *\n * Entries the partner knows and our catalogue does not are dropped rather than\n * surfaced with a null id: the import runs nightly and the partner's list is\n * live, so a title added today is genuinely not browsable here yet, and a card\n * that cannot be opened is worse than one that is absent.\n * @summary List Current Readings\n */\nexport const listCurrentReadings = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<CurrentReadingListRead> => {\n\n return request<CurrentReadingListRead>(getListCurrentReadingsUrl(provider),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadNativeAuthUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/user/auth`\n}\n\n/**\n * YouScribe native SDK credentials for the selected, authorized profile.\n *\n * Equivalent to the legacy YouScribe user/auth endpoint. This does not create\n * a licence or a consumption event. Open a title through its reader-auth POST\n * to obtain the lease used for consumption heartbeats. The token is personal:\n * never persist it, log it, or share it between profiles.\n * @summary Read Native Auth\n */\nexport const readNativeAuth = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<YouScribeAuthRead> => {\n\n return request<YouScribeAuthRead>(getReadNativeAuthUrl(provider),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getOpenNativeAuthUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/user/auth`\n}\n\n/**\n * Open the YouScribe reader for this profile, provisioning on first use.\n *\n * Call only on the user's explicit reader-opening action. This can create a\n * paid subscription. Never prefetch it during login, onboarding or browsing.\n * Existing seats are reused; new seats require medium authentication assurance.\n * For a selected title use POST /media/{mediaId}/reader-auth to also obtain\n * the consumption lease. GET /user/auth never provisions.\n * @summary Open Native Auth\n */\nexport const openNativeAuth = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<YouScribeAuthRead> => {\n\n return request<YouScribeAuthRead>(getOpenNativeAuthUrl(provider),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAoBA,MAAa,qBAAqB,UAC9B,SACA,WAAgC;CAClC,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,aAAa,SAAS,SAAS,QAAQ,WAAW,sBAAsB,aAAa,SAAS,SAAS,QAAQ;AACvJ;;;;;;;;;;;;;;;;;;AAmBA,MAAa,cAAc,OAAO,UAC9B,SACA,QAA4B,YAAwE;CAEtG,OAAO,QAA2B,kBAAkB,UAAS,SAAQ,MAAM,GAC3E;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,sBAAsB,UAC/B,YAAqB;CAKvB,OAAO,aAAa,SAAS,SAAS,QAAQ;AAChD;;;;;;;;;AAUA,MAAa,eAAe,OAAO,UAC/B,SAAiB,YAA0E;CAE7F,OAAO,QAA6B,mBAAmB,UAAS,OAAO,GACvE;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,uBAAuB,UAChC,YAAqB;CAKvB,OAAO,aAAa,SAAS,SAAS,QAAQ;AAChD;;;;;;;;;;;;;;;;AAiBA,MAAa,gBAAgB,OAAO,UAChC,SACA,sBAA4C,YAA0E;CAEtH,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAA6B,oBAAoB,UAAS,OAAO,GACtE;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,oBAAoB;CAC3C,CACF;AAAE;AAGF,MAAa,0BAA0B,UACnC,YAAqB;CAKvB,OAAO,aAAa,SAAS,SAAS,QAAQ;AAChD;;;;;;;;;AAUA,MAAa,mBAAmB,OAAO,UACnC,SAAiB,YAA0E;CAE7F,OAAO,QAA6B,uBAAuB,UAAS,OAAO,GAC3E;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,6BAA6B,aAA+B;CAKvE,OAAO,aAAa,SAAS;AAC/B;;;;;;;;;;AAWA,MAAa,sBAAsB,OAAO,UAA2B,YAA6E;CAEhJ,OAAO,QAAgC,0BAA0B,QAAQ,GACzE;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,wBAAwB,aAA+B;CAKlE,OAAO,aAAa,SAAS;AAC/B;;;;;;;;;;AAWA,MAAa,iBAAiB,OAAO,UAA2B,YAAwE;CAEtI,OAAO,QAA2B,qBAAqB,QAAQ,GAC/D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,wBAAwB,aAA+B;CAKlE,OAAO,aAAa,SAAS;AAC/B;;;;;;;;;;;AAYA,MAAa,iBAAiB,OAAO,UAA2B,YAAwE;CAEtI,OAAO,QAA2B,qBAAqB,QAAQ,GAC/D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
1
+ {"version":3,"file":"partner-reader.js","names":[],"sources":["../../src/api/partner-reader/partner-reader.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.4\n */\nimport type {\n CurrentReadingListRead,\n PartnerProvider,\n ReadPackageParams,\n ReaderPackageRead,\n ReadingPositionRead,\n ReadingPositionWrite,\n YouScribeAuthRead,\n YouScribeReaderRead\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getReadPackageUrl = (provider: PartnerProvider,\n mediaId: number,\n params?: ReadPackageParams,) => {\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 ? `/partners/${provider}/media/${mediaId}/package?${stringifiedParams}` : `/partners/${provider}/media/${mediaId}/package`\n}\n\n/**\n * Where to fetch the content itself.\n *\n * The returned URL is a short-lived DRM-wrapped credential. It is not cached\n * here and should not be stored by the client.\n *\n * Opens a consumption lease, so the read appears in the ledger and counts\n * against the establishment's live seats like any other. Its id comes back in\n * ``lease``: keep it alive with ``PUT /consumption/{eventId}`` and drop it with\n * ``DELETE`` when the reader closes. A client that does neither is not broken\n * — the reaper closes the lease about a minute after the last heartbeat — but\n * every such read is a seat held past the end of it.\n *\n * Re-opening the same title returns the lease already held rather than a\n * second one, so a page reload does not leak a seat.\n * @summary Read Package\n */\nexport const readPackage = async (provider: PartnerProvider,\n mediaId: number,\n params?: ReadPackageParams, options?: Parameters<typeof request>[1]): Promise<ReaderPackageRead> => {\n\n return request<ReaderPackageRead>(getReadPackageUrl(provider,mediaId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadPositionUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/media/${mediaId}/position`\n}\n\n/**\n * The last synchronized local position, or the partner's when none is saved.\n *\n * ``404`` when the partner holds no position — a book never opened has no\n * place to return to, and reporting zero would make a client jump a reader who\n * *is* mid-book back to the start if the call ever failed soft.\n * @summary Read Position\n */\nexport const readPosition = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<ReadingPositionRead> => {\n\n return request<ReadingPositionRead>(getReadPositionUrl(provider,mediaId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getWritePositionUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/media/${mediaId}/position`\n}\n\n/**\n * Synchronize and save progress, with the partner's metering alongside it.\n *\n * ``usage_blocks`` is forwarded before a new position, matching the legacy's\n * call order. The two reports are independent: an older position may carry\n * usage the partner has not received yet.\n *\n * Only a strictly newer ``reachedAt`` replaces the saved position. Stale or\n * duplicate writes return that saved position without updating it upstream.\n * Provided usage blocks are still forwarded, including on retries; the\n * partner's deduplication contract is unknown. Conflicting positions at the\n * same instant return 409 before any outbound write.\n * Progress is a resume point, not a measurement of time spent reading.\n * @summary Write Position\n */\nexport const writePosition = async (provider: PartnerProvider,\n mediaId: number,\n readingPositionWrite: ReadingPositionWrite, options?: Parameters<typeof request>[1]): Promise<ReadingPositionRead> => {\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<ReadingPositionRead>(getWritePositionUrl(provider,mediaId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(readingPositionWrite)\n }\n);}\n\n\nexport const getOpenNativeReaderUrl = (provider: PartnerProvider,\n mediaId: number,) => {\n\n\n\n\n return `/partners/${provider}/media/${mediaId}/reader-auth`\n}\n\n/**\n * Authorize a YouScribe native title and open its consumption lease.\n *\n * Pass externalId and token to the YouScribe SDK. Mozaik requests keep using\n * mediaId. Renew lease.eventId while the reader is open and close it when the\n * reader exits; reopening the same title reuses its active lease.\n * @summary Open Native Reader\n */\nexport const openNativeReader = async (provider: PartnerProvider,\n mediaId: number, options?: Parameters<typeof request>[1]): Promise<YouScribeReaderRead> => {\n\n return request<YouScribeReaderRead>(getOpenNativeReaderUrl(provider,mediaId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getListCurrentReadingsUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/readings`\n}\n\n/**\n * The partner's own \"continue reading\" list, joined back to our catalogue.\n *\n * Entries the partner knows and our catalogue does not are dropped rather than\n * surfaced with a null id: the import runs nightly and the partner's list is\n * live, so a title added today is genuinely not browsable here yet, and a card\n * that cannot be opened is worse than one that is absent.\n * @summary List Current Readings\n */\nexport const listCurrentReadings = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<CurrentReadingListRead> => {\n\n return request<CurrentReadingListRead>(getListCurrentReadingsUrl(provider),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getReadNativeAuthUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/user/auth`\n}\n\n/**\n * YouScribe native SDK credentials for the selected, authorized profile.\n *\n * Equivalent to the legacy YouScribe user/auth endpoint. This does not create\n * a licence or a consumption event. Open a title through its reader-auth POST\n * to obtain the lease used for consumption heartbeats. The token is personal:\n * never persist it, log it, or share it between profiles.\n * @summary Read Native Auth\n */\nexport const readNativeAuth = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<YouScribeAuthRead> => {\n\n return request<YouScribeAuthRead>(getReadNativeAuthUrl(provider),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getOpenNativeAuthUrl = (provider: PartnerProvider,) => {\n\n\n\n\n return `/partners/${provider}/user/auth`\n}\n\n/**\n * Open the YouScribe reader for this profile, provisioning on first use.\n *\n * Call only on the user's explicit reader-opening action. This can create a\n * paid subscription. Never prefetch it during login, onboarding or browsing.\n * Existing seats are reused; new seats require medium authentication assurance.\n * For a selected title use POST /media/{mediaId}/reader-auth to also obtain\n * the consumption lease. GET /user/auth never provisions.\n * @summary Open Native Auth\n */\nexport const openNativeAuth = async (provider: PartnerProvider, options?: Parameters<typeof request>[1]): Promise<YouScribeAuthRead> => {\n\n return request<YouScribeAuthRead>(getOpenNativeAuthUrl(provider),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAoBA,MAAa,qBAAqB,UAC9B,SACA,WAAgC;CAClC,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,aAAa,SAAS,SAAS,QAAQ,WAAW,sBAAsB,aAAa,SAAS,SAAS,QAAQ;AACvJ;;;;;;;;;;;;;;;;;;AAmBA,MAAa,cAAc,OAAO,UAC9B,SACA,QAA4B,YAAwE;CAEtG,OAAO,QAA2B,kBAAkB,UAAS,SAAQ,MAAM,GAC3E;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,sBAAsB,UAC/B,YAAqB;CAKvB,OAAO,aAAa,SAAS,SAAS,QAAQ;AAChD;;;;;;;;;AAUA,MAAa,eAAe,OAAO,UAC/B,SAAiB,YAA0E;CAE7F,OAAO,QAA6B,mBAAmB,UAAS,OAAO,GACvE;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,uBAAuB,UAChC,YAAqB;CAKvB,OAAO,aAAa,SAAS,SAAS,QAAQ;AAChD;;;;;;;;;;;;;;;;AAiBA,MAAa,gBAAgB,OAAO,UAChC,SACA,sBAA4C,YAA0E;CAEtH,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAA6B,oBAAoB,UAAS,OAAO,GACtE;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,oBAAoB;CAC3C,CACF;AAAE;AAGF,MAAa,0BAA0B,UACnC,YAAqB;CAKvB,OAAO,aAAa,SAAS,SAAS,QAAQ;AAChD;;;;;;;;;AAUA,MAAa,mBAAmB,OAAO,UACnC,SAAiB,YAA0E;CAE7F,OAAO,QAA6B,uBAAuB,UAAS,OAAO,GAC3E;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,6BAA6B,aAA+B;CAKvE,OAAO,aAAa,SAAS;AAC/B;;;;;;;;;;AAWA,MAAa,sBAAsB,OAAO,UAA2B,YAA6E;CAEhJ,OAAO,QAAgC,0BAA0B,QAAQ,GACzE;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,wBAAwB,aAA+B;CAKlE,OAAO,aAAa,SAAS;AAC/B;;;;;;;;;;AAWA,MAAa,iBAAiB,OAAO,UAA2B,YAAwE;CAEtI,OAAO,QAA2B,qBAAqB,QAAQ,GAC/D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,wBAAwB,aAA+B;CAKlE,OAAO,aAAa,SAAS;AAC/B;;;;;;;;;;;AAYA,MAAa,iBAAiB,OAAO,UAA2B,YAAwE;CAEtI,OAAO,QAA2B,qBAAqB,QAAQ,GAC/D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","names":[],"sources":["../../src/api/profiles/profiles.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n ExitChildProfileWrite,\n GuardianPinResetRead,\n GuardianPinResetWrite,\n GuardianPinWrite,\n HouseholdGuardianListRead,\n HouseholdGuardianWrite,\n HouseholdInvitationAcceptWrite,\n HouseholdInvitationListRead,\n HouseholdInvitationRead,\n HouseholdInvitationWrite,\n IndependentInvitationWrite,\n OpenChildProfileWrite,\n ProfileCreateWrite,\n ProfileListRead,\n ProfileRead,\n ProfileSessionRead,\n ProfileUpdateWrite\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getSetPinUrl = () => {\n\n\n\n\n return `/me/guardian-pin`\n}\n\n/**\n * @summary Set Pin\n */\nexport const setPin = async (guardianPinWrite: GuardianPinWrite, 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>(getSetPinUrl(),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(guardianPinWrite)\n }\n);}\n\n\nexport const getRequestResetUrl = () => {\n\n\n\n\n return `/me/guardian-pin/reset`\n}\n\n/**\n * @summary Request Reset\n */\nexport const requestReset = async ( options?: Parameters<typeof request>[1]): Promise<GuardianPinResetRead> => {\n\n return request<GuardianPinResetRead>(getRequestResetUrl(),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getConfirmResetUrl = () => {\n\n\n\n\n return `/me/guardian-pin/reset/confirm`\n}\n\n/**\n * @summary Confirm Reset\n */\nexport const confirmReset = async (guardianPinResetWrite: GuardianPinResetWrite, 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>(getConfirmResetUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(guardianPinResetWrite)\n }\n);}\n\n\nexport const getProfileSessionUrl = () => {\n\n\n\n\n return `/me/profile-session`\n}\n\n/**\n * Read own, child or validated support context without switching profiles.\n *\n * In support mode actorId is the operator and profileId is the support target.\n * Leave support by removing X-Acting-As and revoking the support session via\n * DELETE /admin/impersonations/{id} without that header. Guardian PIN and\n * child-switch mutations remain unavailable while impersonating.\n * @summary Profile Session\n */\nexport const profileSession = async ( options?: Parameters<typeof request>[1]): Promise<ProfileSessionRead> => {\n\n return request<ProfileSessionRead>(getProfileSessionUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getOpenChildUrl = () => {\n\n\n\n\n return `/me/profile-session/child`\n}\n\n/**\n * @summary Open Child\n */\nexport const openChild = async (openChildProfileWrite: OpenChildProfileWrite, options?: Parameters<typeof request>[1]): Promise<ProfileSessionRead> => {\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<ProfileSessionRead>(getOpenChildUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(openChildProfileWrite)\n }\n);}\n\n\nexport const getExitChildUrl = () => {\n\n\n\n\n return `/me/profile-session/exit`\n}\n\n/**\n * @summary Exit Child\n */\nexport const exitChild = async (exitChildProfileWrite: ExitChildProfileWrite, options?: Parameters<typeof request>[1]): Promise<ProfileSessionRead> => {\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<ProfileSessionRead>(getExitChildUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(exitChildProfileWrite)\n }\n);}\n\n\nexport const getListProfilesUrl = () => {\n\n\n\n\n return `/me/profiles`\n}\n\n/**\n * Holder sees household cards; another adult sees self and supervised children.\n *\n * Cards never grant the right to open another adult's profile. Expired pending\n * invitations remain manageable but no longer reserve capacity.\n * @summary List Profiles\n */\nexport const listProfiles = async ( options?: Parameters<typeof request>[1]): Promise<ProfileListRead> => {\n\n return request<ProfileListRead>(getListProfilesUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getCreateProfileUrl = () => {\n\n\n\n\n return `/me/profiles`\n}\n\n/**\n * @summary Create Profile\n */\nexport const createProfile = async (profileCreateWrite: ProfileCreateWrite, options?: Parameters<typeof request>[1]): Promise<ProfileRead> => {\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<ProfileRead>(getCreateProfileUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(profileCreateWrite)\n }\n);}\n\n\nexport const getGuardianCandidatesUrl = () => {\n\n\n\n\n return `/me/profiles/guardian-candidates`\n}\n\n/**\n * @summary Guardian Candidates\n */\nexport const guardianCandidates = async ( options?: Parameters<typeof request>[1]): Promise<HouseholdGuardianListRead> => {\n\n return request<HouseholdGuardianListRead>(getGuardianCandidatesUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListInvitationsUrl = () => {\n\n\n\n\n return `/me/profiles/invitations`\n}\n\n/**\n * @summary List Invitations\n */\nexport const listInvitations = async ( options?: Parameters<typeof request>[1]): Promise<HouseholdInvitationListRead> => {\n\n return request<HouseholdInvitationListRead>(getListInvitationsUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getInviteAdultUrl = () => {\n\n\n\n\n return `/me/profiles/invitations`\n}\n\n/**\n * @summary Invite Adult\n */\nexport const inviteAdult = async (householdInvitationWrite: HouseholdInvitationWrite, options?: Parameters<typeof request>[1]): Promise<HouseholdInvitationRead> => {\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<HouseholdInvitationRead>(getInviteAdultUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(householdInvitationWrite)\n }\n);}\n\n\nexport const getAcceptInvitationUrl = () => {\n\n\n\n\n return `/me/profiles/invitations/accept`\n}\n\n/**\n * Requires a verified login email; never creates an unrelated root account.\n * @summary Accept Invitation\n */\nexport const acceptInvitation = async (householdInvitationAcceptWrite: HouseholdInvitationAcceptWrite, options?: Parameters<typeof request>[1]): Promise<ProfileRead> => {\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<ProfileRead>(getAcceptInvitationUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(householdInvitationAcceptWrite)\n }\n);}\n\n\nexport const getRevokeInvitationUrl = (invitationId: number,) => {\n\n\n\n\n return `/me/profiles/invitations/${invitationId}`\n}\n\n/**\n * @summary Revoke Invitation\n */\nexport const revokeInvitation = async (invitationId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getRevokeInvitationUrl(invitationId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getResendInvitationUrl = (invitationId: number,) => {\n\n\n\n\n return `/me/profiles/invitations/${invitationId}/resend`\n}\n\n/**\n * @summary Resend Invitation\n */\nexport const resendInvitation = async (invitationId: number, options?: Parameters<typeof request>[1]): Promise<HouseholdInvitationRead> => {\n\n return request<HouseholdInvitationRead>(getResendInvitationUrl(invitationId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getDeleteProfileUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}`\n}\n\n/**\n * Deactivate membership without discarding profile history or its ancestry.\n * @summary Delete Profile\n */\nexport const deleteProfile = async (profileId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getDeleteProfileUrl(profileId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getReadProfileUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}`\n}\n\n/**\n * @summary Read Profile\n */\nexport const readProfile = async (profileId: number, options?: Parameters<typeof request>[1]): Promise<ProfileRead> => {\n\n return request<ProfileRead>(getReadProfileUrl(profileId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getUpdateProfileUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}`\n}\n\n/**\n * @summary Update Profile\n */\nexport const updateProfile = async (profileId: number,\n profileUpdateWrite: ProfileUpdateWrite, options?: Parameters<typeof request>[1]): Promise<ProfileRead> => {\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<ProfileRead>(getUpdateProfileUrl(profileId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(profileUpdateWrite)\n }\n);}\n\n\nexport const getListGuardiansUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}/guardians`\n}\n\n/**\n * @summary List Guardians\n */\nexport const listGuardians = async (profileId: number, options?: Parameters<typeof request>[1]): Promise<HouseholdGuardianListRead> => {\n\n return request<HouseholdGuardianListRead>(getListGuardiansUrl(profileId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getAddGuardianUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}/guardians`\n}\n\n/**\n * @summary Add Guardian\n */\nexport const addGuardian = async (profileId: number,\n householdGuardianWrite: HouseholdGuardianWrite, options?: Parameters<typeof request>[1]): Promise<HouseholdGuardianListRead> => {\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<HouseholdGuardianListRead>(getAddGuardianUrl(profileId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(householdGuardianWrite)\n }\n);}\n\n\nexport const getRemoveGuardianUrl = (profileId: number,\n adultId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}/guardians/${adultId}`\n}\n\n/**\n * @summary Remove Guardian\n */\nexport const removeGuardian = async (profileId: number,\n adultId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getRemoveGuardianUrl(profileId,adultId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getInviteIndependentMinorUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}/independent-invitation`\n}\n\n/**\n * @summary Invite Independent Minor\n */\nexport const inviteIndependentMinor = async (profileId: number,\n independentInvitationWrite: IndependentInvitationWrite, options?: Parameters<typeof request>[1]): Promise<HouseholdInvitationRead> => {\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<HouseholdInvitationRead>(getInviteIndependentMinorUrl(profileId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(independentInvitationWrite)\n }\n);}\n\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"profiles.js","names":[],"sources":["../../src/api/profiles/profiles.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.4\n */\nimport type {\n ExitChildProfileWrite,\n GuardianPinResetRead,\n GuardianPinResetWrite,\n GuardianPinWrite,\n HouseholdGuardianListRead,\n HouseholdGuardianWrite,\n HouseholdInvitationAcceptWrite,\n HouseholdInvitationListRead,\n HouseholdInvitationRead,\n HouseholdInvitationWrite,\n IndependentInvitationWrite,\n OpenChildProfileWrite,\n ProfileCreateWrite,\n ProfileListRead,\n ProfileRead,\n ProfileSessionRead,\n ProfileUpdateWrite\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getSetPinUrl = () => {\n\n\n\n\n return `/me/guardian-pin`\n}\n\n/**\n * @summary Set Pin\n */\nexport const setPin = async (guardianPinWrite: GuardianPinWrite, 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>(getSetPinUrl(),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(guardianPinWrite)\n }\n);}\n\n\nexport const getRequestResetUrl = () => {\n\n\n\n\n return `/me/guardian-pin/reset`\n}\n\n/**\n * @summary Request Reset\n */\nexport const requestReset = async ( options?: Parameters<typeof request>[1]): Promise<GuardianPinResetRead> => {\n\n return request<GuardianPinResetRead>(getRequestResetUrl(),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getConfirmResetUrl = () => {\n\n\n\n\n return `/me/guardian-pin/reset/confirm`\n}\n\n/**\n * @summary Confirm Reset\n */\nexport const confirmReset = async (guardianPinResetWrite: GuardianPinResetWrite, 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>(getConfirmResetUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(guardianPinResetWrite)\n }\n);}\n\n\nexport const getProfileSessionUrl = () => {\n\n\n\n\n return `/me/profile-session`\n}\n\n/**\n * Read own, child or validated support context without switching profiles.\n *\n * In support mode actorId is the operator and profileId is the support target.\n * Leave support by removing X-Acting-As and revoking the support session via\n * DELETE /admin/impersonations/{id} without that header. Guardian PIN and\n * child-switch mutations remain unavailable while impersonating.\n * @summary Profile Session\n */\nexport const profileSession = async ( options?: Parameters<typeof request>[1]): Promise<ProfileSessionRead> => {\n\n return request<ProfileSessionRead>(getProfileSessionUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getOpenChildUrl = () => {\n\n\n\n\n return `/me/profile-session/child`\n}\n\n/**\n * @summary Open Child\n */\nexport const openChild = async (openChildProfileWrite: OpenChildProfileWrite, options?: Parameters<typeof request>[1]): Promise<ProfileSessionRead> => {\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<ProfileSessionRead>(getOpenChildUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(openChildProfileWrite)\n }\n);}\n\n\nexport const getExitChildUrl = () => {\n\n\n\n\n return `/me/profile-session/exit`\n}\n\n/**\n * @summary Exit Child\n */\nexport const exitChild = async (exitChildProfileWrite: ExitChildProfileWrite, options?: Parameters<typeof request>[1]): Promise<ProfileSessionRead> => {\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<ProfileSessionRead>(getExitChildUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(exitChildProfileWrite)\n }\n);}\n\n\nexport const getListProfilesUrl = () => {\n\n\n\n\n return `/me/profiles`\n}\n\n/**\n * Holder sees household cards; another adult sees self and supervised children.\n *\n * Cards never grant the right to open another adult's profile. Expired pending\n * invitations remain manageable but no longer reserve capacity.\n * @summary List Profiles\n */\nexport const listProfiles = async ( options?: Parameters<typeof request>[1]): Promise<ProfileListRead> => {\n\n return request<ProfileListRead>(getListProfilesUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getCreateProfileUrl = () => {\n\n\n\n\n return `/me/profiles`\n}\n\n/**\n * @summary Create Profile\n */\nexport const createProfile = async (profileCreateWrite: ProfileCreateWrite, options?: Parameters<typeof request>[1]): Promise<ProfileRead> => {\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<ProfileRead>(getCreateProfileUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(profileCreateWrite)\n }\n);}\n\n\nexport const getGuardianCandidatesUrl = () => {\n\n\n\n\n return `/me/profiles/guardian-candidates`\n}\n\n/**\n * @summary Guardian Candidates\n */\nexport const guardianCandidates = async ( options?: Parameters<typeof request>[1]): Promise<HouseholdGuardianListRead> => {\n\n return request<HouseholdGuardianListRead>(getGuardianCandidatesUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListInvitationsUrl = () => {\n\n\n\n\n return `/me/profiles/invitations`\n}\n\n/**\n * @summary List Invitations\n */\nexport const listInvitations = async ( options?: Parameters<typeof request>[1]): Promise<HouseholdInvitationListRead> => {\n\n return request<HouseholdInvitationListRead>(getListInvitationsUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getInviteAdultUrl = () => {\n\n\n\n\n return `/me/profiles/invitations`\n}\n\n/**\n * @summary Invite Adult\n */\nexport const inviteAdult = async (householdInvitationWrite: HouseholdInvitationWrite, options?: Parameters<typeof request>[1]): Promise<HouseholdInvitationRead> => {\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<HouseholdInvitationRead>(getInviteAdultUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(householdInvitationWrite)\n }\n);}\n\n\nexport const getAcceptInvitationUrl = () => {\n\n\n\n\n return `/me/profiles/invitations/accept`\n}\n\n/**\n * Requires a verified login email; never creates an unrelated root account.\n * @summary Accept Invitation\n */\nexport const acceptInvitation = async (householdInvitationAcceptWrite: HouseholdInvitationAcceptWrite, options?: Parameters<typeof request>[1]): Promise<ProfileRead> => {\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<ProfileRead>(getAcceptInvitationUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(householdInvitationAcceptWrite)\n }\n);}\n\n\nexport const getRevokeInvitationUrl = (invitationId: number,) => {\n\n\n\n\n return `/me/profiles/invitations/${invitationId}`\n}\n\n/**\n * @summary Revoke Invitation\n */\nexport const revokeInvitation = async (invitationId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getRevokeInvitationUrl(invitationId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getResendInvitationUrl = (invitationId: number,) => {\n\n\n\n\n return `/me/profiles/invitations/${invitationId}/resend`\n}\n\n/**\n * @summary Resend Invitation\n */\nexport const resendInvitation = async (invitationId: number, options?: Parameters<typeof request>[1]): Promise<HouseholdInvitationRead> => {\n\n return request<HouseholdInvitationRead>(getResendInvitationUrl(invitationId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getDeleteProfileUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}`\n}\n\n/**\n * Deactivate membership without discarding profile history or its ancestry.\n * @summary Delete Profile\n */\nexport const deleteProfile = async (profileId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getDeleteProfileUrl(profileId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getReadProfileUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}`\n}\n\n/**\n * @summary Read Profile\n */\nexport const readProfile = async (profileId: number, options?: Parameters<typeof request>[1]): Promise<ProfileRead> => {\n\n return request<ProfileRead>(getReadProfileUrl(profileId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getUpdateProfileUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}`\n}\n\n/**\n * @summary Update Profile\n */\nexport const updateProfile = async (profileId: number,\n profileUpdateWrite: ProfileUpdateWrite, options?: Parameters<typeof request>[1]): Promise<ProfileRead> => {\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<ProfileRead>(getUpdateProfileUrl(profileId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(profileUpdateWrite)\n }\n);}\n\n\nexport const getListGuardiansUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}/guardians`\n}\n\n/**\n * @summary List Guardians\n */\nexport const listGuardians = async (profileId: number, options?: Parameters<typeof request>[1]): Promise<HouseholdGuardianListRead> => {\n\n return request<HouseholdGuardianListRead>(getListGuardiansUrl(profileId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getAddGuardianUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}/guardians`\n}\n\n/**\n * @summary Add Guardian\n */\nexport const addGuardian = async (profileId: number,\n householdGuardianWrite: HouseholdGuardianWrite, options?: Parameters<typeof request>[1]): Promise<HouseholdGuardianListRead> => {\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<HouseholdGuardianListRead>(getAddGuardianUrl(profileId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(householdGuardianWrite)\n }\n);}\n\n\nexport const getRemoveGuardianUrl = (profileId: number,\n adultId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}/guardians/${adultId}`\n}\n\n/**\n * @summary Remove Guardian\n */\nexport const removeGuardian = async (profileId: number,\n adultId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getRemoveGuardianUrl(profileId,adultId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getInviteIndependentMinorUrl = (profileId: number,) => {\n\n\n\n\n return `/me/profiles/${profileId}/independent-invitation`\n}\n\n/**\n * @summary Invite Independent Minor\n */\nexport const inviteIndependentMinor = async (profileId: number,\n independentInvitationWrite: IndependentInvitationWrite, options?: Parameters<typeof request>[1]): Promise<HouseholdInvitationRead> => {\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<HouseholdInvitationRead>(getInviteIndependentMinorUrl(profileId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(independentInvitationWrite)\n }\n);}\n\n\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
 
2
- import { Vc as CatalogueSearchRead, at as SearchEverythingParams } from "../chunks/index.js";
2
+ import { Hc as CatalogueSearchRead, at as SearchEverythingParams } from "../chunks/index.js";
3
3
  import { c as request } from "../chunks/client.js";
4
4
  //#region src/api/search/search.d.ts
5
5
  export declare const getSearchEverythingUrl: (params?: SearchEverythingParams) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","names":[],"sources":["../../src/api/search/search.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n CatalogueSearchRead,\n SearchEverythingParams\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getSearchEverythingUrl = (params?: SearchEverythingParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n const explodeParameters = [\"source\",\"kind\"];\n\n if (Array.isArray(value) && explodeParameters.includes(key)) {\n value.forEach((v) => {\n normalizedParams.append(key, v === null ? 'null' : String(v));\n });\n return;\n }\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 ? `/search?${stringifiedParams}` : `/search`\n}\n\n/**\n * Search every catalogue the caller can reach.\n *\n * Results are one blended list ordered by relevance, with ``popularity`` as\n * the tie-break. ``sources`` and ``kinds`` carry the same result set counted by\n * family, so a client can render tabs instead of a blend without asking twice.\n *\n * A query shorter than two characters returns an empty page with ``200``.\n * @summary Search Everything\n */\nexport const searchEverything = async (params?: SearchEverythingParams, options?: Parameters<typeof request>[1]): Promise<CatalogueSearchRead> => {\n\n return request<CatalogueSearchRead>(getSearchEverythingUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAcA,MAAa,0BAA0B,WAAqC;CAC1E,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAGrD,IAAI,MAAM,QAAQ,KAAK,KAAK,CAFD,UAAS,MAEQ,CAAC,CAAC,SAAS,GAAG,GAAG;GAC3D,MAAM,SAAS,MAAM;IACnB,iBAAiB,OAAO,KAAK,MAAM,OAAO,SAAS,OAAO,CAAC,CAAC;GAC9D,CAAC;GACD;EACF;EAEA,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,WAAW,sBAAsB;AACzE;;;;;;;;;;;AAYA,MAAa,mBAAmB,OAAO,QAAiC,YAA0E;CAEhJ,OAAO,QAA6B,uBAAuB,MAAM,GACjE;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
1
+ {"version":3,"file":"search.js","names":[],"sources":["../../src/api/search/search.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.4\n */\nimport type {\n CatalogueSearchRead,\n SearchEverythingParams\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getSearchEverythingUrl = (params?: SearchEverythingParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n const explodeParameters = [\"source\",\"kind\"];\n\n if (Array.isArray(value) && explodeParameters.includes(key)) {\n value.forEach((v) => {\n normalizedParams.append(key, v === null ? 'null' : String(v));\n });\n return;\n }\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 ? `/search?${stringifiedParams}` : `/search`\n}\n\n/**\n * Search every catalogue the caller can reach.\n *\n * Results are one blended list ordered by relevance, with ``popularity`` as\n * the tie-break. ``sources`` and ``kinds`` carry the same result set counted by\n * family, so a client can render tabs instead of a blend without asking twice.\n *\n * A query shorter than two characters returns an empty page with ``200``.\n * @summary Search Everything\n */\nexport const searchEverything = async (params?: SearchEverythingParams, options?: Parameters<typeof request>[1]): Promise<CatalogueSearchRead> => {\n\n return request<CatalogueSearchRead>(getSearchEverythingUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAcA,MAAa,0BAA0B,WAAqC;CAC1E,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAGrD,IAAI,MAAM,QAAQ,KAAK,KAAK,CAFD,UAAS,MAEQ,CAAC,CAAC,SAAS,GAAG,GAAG;GAC3D,MAAM,SAAS,MAAM;IACnB,iBAAiB,OAAO,KAAK,MAAM,OAAO,SAAS,OAAO,CAAC,CAAC;GAC9D,CAAC;GACD;EACF;EAEA,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,WAAW,sBAAsB;AACzE;;;;;;;;;;;AAYA,MAAa,mBAAmB,OAAO,QAAiC,YAA0E;CAEhJ,OAAO,QAA6B,uBAAuB,MAAM,GACjE;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"tutoring-catalogue.js","names":[],"sources":["../../src/api/tutoring-catalogue/tutoring-catalogue.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n EducationalGoalListRead,\n LevelListRead,\n ListGoalsParams,\n SubjectListRead\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListGoalsUrl = (params?: ListGoalsParams,) => {\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 ? `/tutoring/goals?${stringifiedParams}` : `/tutoring/goals`\n}\n\n/**\n * Goals on offer, optionally narrowed to one request kind.\n *\n * The filter is a containment test against ``applies_to``, which is what the\n * GIN index on that column is for. The legacy asks the same question with four\n * boolean columns and a different ``WHERE`` per surface.\n * @summary List Goals\n */\nexport const listGoals = async (params?: ListGoalsParams, options?: Parameters<typeof request>[1]): Promise<EducationalGoalListRead> => {\n\n return request<EducationalGoalListRead>(getListGoalsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListLevelsUrl = () => {\n\n\n\n\n return `/tutoring/levels`\n}\n\n/**\n * Every school level, in teaching order rather than alphabetical.\n * @summary List Levels\n */\nexport const listLevels = async ( options?: Parameters<typeof request>[1]): Promise<LevelListRead> => {\n\n return request<LevelListRead>(getListLevelsUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListSubjectsUrl = () => {\n\n\n\n\n return `/tutoring/subjects`\n}\n\n/**\n * Every subject a pupil may ask about, in display order.\n *\n * Authenticated, though the data is not secret: the list differs by nothing\n * today, and leaving it open would make it the one tutoring endpoint that does\n * not establish a tenant. Cheap to relax later, expensive to tighten.\n * @summary List Subjects\n */\nexport const listSubjects = async ( options?: Parameters<typeof request>[1]): Promise<SubjectListRead> => {\n\n return request<SubjectListRead>(getListSubjectsUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAgBA,MAAa,mBAAmB,WAA8B;CAC5D,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,mBAAmB,sBAAsB;AACjF;;;;;;;;;AAUA,MAAa,YAAY,OAAO,QAA0B,YAA8E;CAEtI,OAAO,QAAiC,gBAAgB,MAAM,GAC9D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,yBAAyB;CAKpC,OAAO;AACT;;;;;AAMA,MAAa,aAAa,OAAQ,YAAoE;CAEpG,OAAO,QAAuB,iBAAiB,GAC/C;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,2BAA2B;CAKtC,OAAO;AACT;;;;;;;;;AAUA,MAAa,eAAe,OAAQ,YAAsE;CAExG,OAAO,QAAyB,mBAAmB,GACnD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
1
+ {"version":3,"file":"tutoring-catalogue.js","names":[],"sources":["../../src/api/tutoring-catalogue/tutoring-catalogue.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.4\n */\nimport type {\n EducationalGoalListRead,\n LevelListRead,\n ListGoalsParams,\n SubjectListRead\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListGoalsUrl = (params?: ListGoalsParams,) => {\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 ? `/tutoring/goals?${stringifiedParams}` : `/tutoring/goals`\n}\n\n/**\n * Goals on offer, optionally narrowed to one request kind.\n *\n * The filter is a containment test against ``applies_to``, which is what the\n * GIN index on that column is for. The legacy asks the same question with four\n * boolean columns and a different ``WHERE`` per surface.\n * @summary List Goals\n */\nexport const listGoals = async (params?: ListGoalsParams, options?: Parameters<typeof request>[1]): Promise<EducationalGoalListRead> => {\n\n return request<EducationalGoalListRead>(getListGoalsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListLevelsUrl = () => {\n\n\n\n\n return `/tutoring/levels`\n}\n\n/**\n * Every school level, in teaching order rather than alphabetical.\n * @summary List Levels\n */\nexport const listLevels = async ( options?: Parameters<typeof request>[1]): Promise<LevelListRead> => {\n\n return request<LevelListRead>(getListLevelsUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getListSubjectsUrl = () => {\n\n\n\n\n return `/tutoring/subjects`\n}\n\n/**\n * Every subject a pupil may ask about, in display order.\n *\n * Authenticated, though the data is not secret: the list differs by nothing\n * today, and leaving it open would make it the one tutoring endpoint that does\n * not establish a tenant. Cheap to relax later, expensive to tighten.\n * @summary List Subjects\n */\nexport const listSubjects = async ( options?: Parameters<typeof request>[1]): Promise<SubjectListRead> => {\n\n return request<SubjectListRead>(getListSubjectsUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAgBA,MAAa,mBAAmB,WAA8B;CAC5D,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,mBAAmB,sBAAsB;AACjF;;;;;;;;;AAUA,MAAa,YAAY,OAAO,QAA0B,YAA8E;CAEtI,OAAO,QAAiC,gBAAgB,MAAM,GAC9D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,yBAAyB;CAKpC,OAAO;AACT;;;;;AAMA,MAAa,aAAa,OAAQ,YAAoE;CAEpG,OAAO,QAAuB,iBAAiB,GAC/C;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,2BAA2B;CAKtC,OAAO;AACT;;;;;;;;;AAUA,MAAa,eAAe,OAAQ,YAAsE;CAExG,OAAO,QAAyB,mBAAmB,GACnD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
@@ -1,5 +1,5 @@
1
1
 
2
- import { Fc as ChatTicketRead, Jn as MessageRead, Kn as MessageWrite, mr as ListMessagesParams, qn as MessagePage } from "../chunks/index.js";
2
+ import { Ic as ChatTicketRead, Jn as MessageRead, Kn as MessageWrite, mr as ListMessagesParams, qn as MessagePage } from "../chunks/index.js";
3
3
  import { c as request } from "../chunks/client.js";
4
4
  //#region src/api/tutoring-chat/tutoring-chat.d.ts
5
5
  export declare const getMintChatTicketUrl: (requestId: number) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"tutoring-chat.js","names":[],"sources":["../../src/api/tutoring-chat/tutoring-chat.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n ChatTicketRead,\n ListMessagesParams,\n MessagePage,\n MessageRead,\n MessageWrite\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getMintChatTicketUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/chat/ticket`\n}\n\n/**\n * A single-use credential for opening the socket from a browser.\n *\n * Authenticated the ordinary way, with the ordinary bearer token, because this\n * is an ordinary HTTP request. What it returns is what goes in the socket URL.\n * @summary Mint Chat Ticket\n */\nexport const mintChatTicket = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<ChatTicketRead> => {\n\n return request<ChatTicketRead>(getMintChatTicketUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getListMessagesUrl = (requestId: number,\n params?: ListMessagesParams,) => {\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 ? `/tutoring/requests/${requestId}/messages?${stringifiedParams}` : `/tutoring/requests/${requestId}/messages`\n}\n\n/**\n * The conversation so far, newest first.\n *\n * One extra row is fetched to answer ``hasMore`` without a second count. A\n * ``COUNT(*)`` over a thread on every scroll is a table scan for a number no\n * interface displays.\n * @summary List Messages\n */\nexport const listMessages = async (requestId: number,\n params?: ListMessagesParams, options?: Parameters<typeof request>[1]): Promise<MessagePage> => {\n\n return request<MessagePage>(getListMessagesUrl(requestId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getSendMessageUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/messages`\n}\n\n/**\n * Say something, without holding a socket open.\n * @summary Send Message\n */\nexport const sendMessage = async (requestId: number,\n messageWrite: MessageWrite, options?: Parameters<typeof request>[1]): Promise<MessageRead> => {\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<MessageRead>(getSendMessageUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(messageWrite)\n }\n);}\n\n\n"],"mappings":";;;AAiBA,MAAa,wBAAwB,cAAuB;CAK1D,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;AASA,MAAa,iBAAiB,OAAO,WAAmB,YAAqE;CAE3H,OAAO,QAAwB,qBAAqB,SAAS,GAC7D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,sBAAsB,WAC/B,WAAiC;CACnC,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,sBAAsB,UAAU,YAAY,sBAAsB,sBAAsB,UAAU;AAC1I;;;;;;;;;AAUA,MAAa,eAAe,OAAO,WAC/B,QAA6B,YAAkE;CAEjG,OAAO,QAAqB,mBAAmB,WAAU,MAAM,GAC/D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,qBAAqB,cAAuB;CAKvD,OAAO,sBAAsB,UAAU;AACzC;;;;;AAMA,MAAa,cAAc,OAAO,WAC9B,cAA4B,YAAkE;CAE9F,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAAqB,kBAAkB,SAAS,GACrD;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,YAAY;CACnC,CACF;AAAE"}
1
+ {"version":3,"file":"tutoring-chat.js","names":[],"sources":["../../src/api/tutoring-chat/tutoring-chat.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.4\n */\nimport type {\n ChatTicketRead,\n ListMessagesParams,\n MessagePage,\n MessageRead,\n MessageWrite\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getMintChatTicketUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/chat/ticket`\n}\n\n/**\n * A single-use credential for opening the socket from a browser.\n *\n * Authenticated the ordinary way, with the ordinary bearer token, because this\n * is an ordinary HTTP request. What it returns is what goes in the socket URL.\n * @summary Mint Chat Ticket\n */\nexport const mintChatTicket = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<ChatTicketRead> => {\n\n return request<ChatTicketRead>(getMintChatTicketUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getListMessagesUrl = (requestId: number,\n params?: ListMessagesParams,) => {\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 ? `/tutoring/requests/${requestId}/messages?${stringifiedParams}` : `/tutoring/requests/${requestId}/messages`\n}\n\n/**\n * The conversation so far, newest first.\n *\n * One extra row is fetched to answer ``hasMore`` without a second count. A\n * ``COUNT(*)`` over a thread on every scroll is a table scan for a number no\n * interface displays.\n * @summary List Messages\n */\nexport const listMessages = async (requestId: number,\n params?: ListMessagesParams, options?: Parameters<typeof request>[1]): Promise<MessagePage> => {\n\n return request<MessagePage>(getListMessagesUrl(requestId,params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getSendMessageUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/messages`\n}\n\n/**\n * Say something, without holding a socket open.\n * @summary Send Message\n */\nexport const sendMessage = async (requestId: number,\n messageWrite: MessageWrite, options?: Parameters<typeof request>[1]): Promise<MessageRead> => {\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<MessageRead>(getSendMessageUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(messageWrite)\n }\n);}\n\n\n"],"mappings":";;;AAiBA,MAAa,wBAAwB,cAAuB;CAK1D,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;AASA,MAAa,iBAAiB,OAAO,WAAmB,YAAqE;CAE3H,OAAO,QAAwB,qBAAqB,SAAS,GAC7D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,sBAAsB,WAC/B,WAAiC;CACnC,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAErD,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,sBAAsB,UAAU,YAAY,sBAAsB,sBAAsB,UAAU;AAC1I;;;;;;;;;AAUA,MAAa,eAAe,OAAO,WAC/B,QAA6B,YAAkE;CAEjG,OAAO,QAAqB,mBAAmB,WAAU,MAAM,GAC/D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,qBAAqB,cAAuB;CAKvD,OAAO,sBAAsB,UAAU;AACzC;;;;;AAMA,MAAa,cAAc,OAAO,WAC9B,cAA4B,YAAkE;CAE9F,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAAqB,kBAAkB,SAAS,GACrD;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,YAAY;CACnC,CACF;AAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"tutoring-dispatch.js","names":[],"sources":["../../src/api/tutoring-dispatch/tutoring-dispatch.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n ListQueueParams,\n TutoringDispatchWrite,\n TutoringQueuePage\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListQueueUrl = (params?: ListQueueParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n const explodeParameters = [\"status\"];\n\n if (Array.isArray(value) && explodeParameters.includes(key)) {\n value.forEach((v) => {\n normalizedParams.append(key, v === null ? 'null' : String(v));\n });\n return;\n }\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 ? `/tutoring/queue?${stringifiedParams}` : `/tutoring/queue`\n}\n\n/**\n * What is waiting, oldest first.\n *\n * Scoped to the dispatcher's tenant and its descendants. Defaults to the four open statuses, which\n * is what the partial index on the table is built for — pass ``?status=`` to\n * look at something else and the query stops using it, which is the honest\n * trade rather than a hidden one.\n * @summary List Queue\n */\nexport const listQueue = async (params?: ListQueueParams, options?: Parameters<typeof request>[1]): Promise<TutoringQueuePage> => {\n\n return request<TutoringQueuePage>(getListQueueUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getDispatchRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/dispatch`\n}\n\n/**\n * Route it — to somebody named, or to the open pool.\n *\n * Changing the channel here is deliberate and common: pupils pick a classroom\n * and turn out to have no microphone, and the dispatcher is the person who\n * finds that out.\n * @summary Dispatch Request\n */\nexport const dispatchRequest = async (requestId: number,\n tutoringDispatchWrite: TutoringDispatchWrite, 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>(getDispatchRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringDispatchWrite)\n }\n);}\n\n\nexport const getTriageRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/triage`\n}\n\n/**\n * Take a request off the queue to look at it.\n *\n * Separate from dispatching because the legacy's own timestamps separate them —\n * ``picked_by_switchman_at`` then ``validated_at`` — and the gap between the\n * two is the figure that tells you whether the queue is staffed.\n * @summary Triage Request\n */\nexport const triageRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getTriageRequestUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAeA,MAAa,mBAAmB,WAA8B;CAC5D,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAGrD,IAAI,MAAM,QAAQ,KAAK,KAAK,CAFD,QAEiB,CAAC,CAAC,SAAS,GAAG,GAAG;GAC3D,MAAM,SAAS,MAAM;IACnB,iBAAiB,OAAO,KAAK,MAAM,OAAO,SAAS,OAAO,CAAC,CAAC;GAC9D,CAAC;GACD;EACF;EAEA,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,mBAAmB,sBAAsB;AACjF;;;;;;;;;;AAWA,MAAa,YAAY,OAAO,QAA0B,YAAwE;CAEhI,OAAO,QAA2B,gBAAgB,MAAM,GACxD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,yBAAyB,cAAuB;CAK3D,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,kBAAkB,OAAO,WAClC,uBAA8C,YAA2D;CAEzG,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAAc,sBAAsB,SAAS,GAClD;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,qBAAqB;CAC5C,CACF;AAAE;AAGF,MAAa,uBAAuB,cAAuB;CAKzD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,gBAAgB,OAAO,WAAmB,YAA2D;CAEhH,OAAO,QAAc,oBAAoB,SAAS,GAClD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
1
+ {"version":3,"file":"tutoring-dispatch.js","names":[],"sources":["../../src/api/tutoring-dispatch/tutoring-dispatch.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.4\n */\nimport type {\n ListQueueParams,\n TutoringDispatchWrite,\n TutoringQueuePage\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListQueueUrl = (params?: ListQueueParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n const explodeParameters = [\"status\"];\n\n if (Array.isArray(value) && explodeParameters.includes(key)) {\n value.forEach((v) => {\n normalizedParams.append(key, v === null ? 'null' : String(v));\n });\n return;\n }\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 ? `/tutoring/queue?${stringifiedParams}` : `/tutoring/queue`\n}\n\n/**\n * What is waiting, oldest first.\n *\n * Scoped to the dispatcher's tenant and its descendants. Defaults to the four open statuses, which\n * is what the partial index on the table is built for — pass ``?status=`` to\n * look at something else and the query stops using it, which is the honest\n * trade rather than a hidden one.\n * @summary List Queue\n */\nexport const listQueue = async (params?: ListQueueParams, options?: Parameters<typeof request>[1]): Promise<TutoringQueuePage> => {\n\n return request<TutoringQueuePage>(getListQueueUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getDispatchRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/dispatch`\n}\n\n/**\n * Route it — to somebody named, or to the open pool.\n *\n * Changing the channel here is deliberate and common: pupils pick a classroom\n * and turn out to have no microphone, and the dispatcher is the person who\n * finds that out.\n * @summary Dispatch Request\n */\nexport const dispatchRequest = async (requestId: number,\n tutoringDispatchWrite: TutoringDispatchWrite, 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>(getDispatchRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringDispatchWrite)\n }\n);}\n\n\nexport const getTriageRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/triage`\n}\n\n/**\n * Take a request off the queue to look at it.\n *\n * Separate from dispatching because the legacy's own timestamps separate them —\n * ``picked_by_switchman_at`` then ``validated_at`` — and the gap between the\n * two is the figure that tells you whether the queue is staffed.\n * @summary Triage Request\n */\nexport const triageRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getTriageRequestUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAeA,MAAa,mBAAmB,WAA8B;CAC5D,MAAM,mBAAmB,IAAI,gBAAgB;CAE7C,OAAO,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAGrD,IAAI,MAAM,QAAQ,KAAK,KAAK,CAFD,QAEiB,CAAC,CAAC,SAAS,GAAG,GAAG;GAC3D,MAAM,SAAS,MAAM;IACnB,iBAAiB,OAAO,KAAK,MAAM,OAAO,SAAS,OAAO,CAAC,CAAC;GAC9D,CAAC;GACD;EACF;EAEA,IAAI,UAAU,KAAA,GACZ,iBAAiB,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,KAAK,CAAC;CAExE,CAAC;CAED,MAAM,oBAAoB,iBAAiB,SAAS;CAEpD,OAAO,kBAAkB,SAAS,IAAI,mBAAmB,sBAAsB;AACjF;;;;;;;;;;AAWA,MAAa,YAAY,OAAO,QAA0B,YAAwE;CAEhI,OAAO,QAA2B,gBAAgB,MAAM,GACxD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,yBAAyB,cAAuB;CAK3D,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,kBAAkB,OAAO,WAClC,uBAA8C,YAA2D;CAEzG,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAAc,sBAAsB,SAAS,GAClD;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,qBAAqB;CAC5C,CACF;AAAE;AAGF,MAAa,uBAAuB,cAAuB;CAKzD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,gBAAgB,OAAO,WAAmB,YAA2D;CAEhH,OAAO,QAAc,oBAAoB,SAAS,GAClD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"tutoring-practitioner.js","names":[],"sources":["../../src/api/tutoring-practitioner/tutoring-practitioner.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n TutoringAnswerWrite,\n TutoringCloseWrite,\n TutoringRoomRead\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getAnswerRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/answer`\n}\n\n/**\n * Deliver the answer.\n *\n * The body is stored as the answer and any named attachments are re-roled to\n * ``answer`` — they were uploaded against this request, so no id from another\n * request can be attached here.\n * @summary Answer Request\n */\nexport const answerRequest = async (requestId: number,\n tutoringAnswerWrite: TutoringAnswerWrite, 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>(getAnswerRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringAnswerWrite)\n }\n);}\n\n\nexport const getClaimRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/claim`\n}\n\n/**\n * Take a dispatched request.\n *\n * ``409`` if somebody else already holds it. The check and the write are one\n * statement so that two practitioners hitting claim in the same instant cannot\n * both win — the legacy reads then writes, so both do.\n * @summary Claim Request\n */\nexport const claimRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getClaimRequestUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getCloseRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/close`\n}\n\n/**\n * Close a request that will not be answered, with a reason.\n *\n * A dispatcher's job rather than a practitioner's: giving up on a request is a\n * decision about the queue, and the person who could not answer it is not the\n * person who should decide nobody will.\n * @summary Close Request\n */\nexport const closeRequest = async (requestId: number,\n tutoringCloseWrite: TutoringCloseWrite, 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>(getCloseRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringCloseWrite)\n }\n);}\n\n\nexport const getOpenRoomUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/room`\n}\n\n/**\n * Open the room for a live request. The practitioner decides when.\n *\n * Deliberately an explicit action rather than a side effect of claiming, which\n * is what Prof Express does: the teacher presses a button in their own queue,\n * and ``createTeacherVedamoClasssroom`` refuses unless a teacher is assigned.\n * A room provisioned at dispatch is a room the pupil joins alone.\n *\n * Only the assigned practitioner may open it, and only once — a second call\n * returns the room that is already open rather than provisioning another. The\n * legacy has no such check, so pressing its button twice orphans a room the\n * pupil may already hold a link to.\n *\n * ``409`` for a channel with nothing to join, and for a request nobody has\n * claimed.\n * @summary Open Room\n */\nexport const openRoom = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<TutoringRoomRead> => {\n\n return request<TutoringRoomRead>(getOpenRoomUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAeA,MAAa,uBAAuB,cAAuB;CAKzD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,gBAAgB,OAAO,WAChC,qBAA0C,YAA2D;CAErG,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAAc,oBAAoB,SAAS,GAChD;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,mBAAmB;CAC1C,CACF;AAAE;AAGF,MAAa,sBAAsB,cAAuB;CAKxD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,eAAe,OAAO,WAAmB,YAA2D;CAE/G,OAAO,QAAc,mBAAmB,SAAS,GACjD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,sBAAsB,cAAuB;CAKxD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,eAAe,OAAO,WAC/B,oBAAwC,YAA2D;CAEnG,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAAc,mBAAmB,SAAS,GAC/C;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,kBAAkB;CACzC,CACF;AAAE;AAGF,MAAa,kBAAkB,cAAuB;CAKpD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;;;;;;;;;;AAmBA,MAAa,WAAW,OAAO,WAAmB,YAAuE;CAEvH,OAAO,QAA0B,eAAe,SAAS,GACzD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
1
+ {"version":3,"file":"tutoring-practitioner.js","names":[],"sources":["../../src/api/tutoring-practitioner/tutoring-practitioner.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.4\n */\nimport type {\n TutoringAnswerWrite,\n TutoringCloseWrite,\n TutoringRoomRead\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getAnswerRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/answer`\n}\n\n/**\n * Deliver the answer.\n *\n * The body is stored as the answer and any named attachments are re-roled to\n * ``answer`` — they were uploaded against this request, so no id from another\n * request can be attached here.\n * @summary Answer Request\n */\nexport const answerRequest = async (requestId: number,\n tutoringAnswerWrite: TutoringAnswerWrite, 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>(getAnswerRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringAnswerWrite)\n }\n);}\n\n\nexport const getClaimRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/claim`\n}\n\n/**\n * Take a dispatched request.\n *\n * ``409`` if somebody else already holds it. The check and the write are one\n * statement so that two practitioners hitting claim in the same instant cannot\n * both win — the legacy reads then writes, so both do.\n * @summary Claim Request\n */\nexport const claimRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getClaimRequestUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getCloseRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/close`\n}\n\n/**\n * Close a request that will not be answered, with a reason.\n *\n * A dispatcher's job rather than a practitioner's: giving up on a request is a\n * decision about the queue, and the person who could not answer it is not the\n * person who should decide nobody will.\n * @summary Close Request\n */\nexport const closeRequest = async (requestId: number,\n tutoringCloseWrite: TutoringCloseWrite, 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>(getCloseRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringCloseWrite)\n }\n);}\n\n\nexport const getOpenRoomUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/room`\n}\n\n/**\n * Open the room for a live request. The practitioner decides when.\n *\n * Deliberately an explicit action rather than a side effect of claiming, which\n * is what Prof Express does: the teacher presses a button in their own queue,\n * and ``createTeacherVedamoClasssroom`` refuses unless a teacher is assigned.\n * A room provisioned at dispatch is a room the pupil joins alone.\n *\n * Only the assigned practitioner may open it, and only once — a second call\n * returns the room that is already open rather than provisioning another. The\n * legacy has no such check, so pressing its button twice orphans a room the\n * pupil may already hold a link to.\n *\n * ``409`` for a channel with nothing to join, and for a request nobody has\n * claimed.\n * @summary Open Room\n */\nexport const openRoom = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<TutoringRoomRead> => {\n\n return request<TutoringRoomRead>(getOpenRoomUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\n"],"mappings":";;;AAeA,MAAa,uBAAuB,cAAuB;CAKzD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,gBAAgB,OAAO,WAChC,qBAA0C,YAA2D;CAErG,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAAc,oBAAoB,SAAS,GAChD;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,mBAAmB;CAC1C,CACF;AAAE;AAGF,MAAa,sBAAsB,cAAuB;CAKxD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,eAAe,OAAO,WAAmB,YAA2D;CAE/G,OAAO,QAAc,mBAAmB,SAAS,GACjD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAGF,MAAa,sBAAsB,cAAuB;CAKxD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;AAUA,MAAa,eAAe,OAAO,WAC/B,oBAAwC,YAA2D;CAEnG,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAAc,mBAAmB,SAAS,GAC/C;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,kBAAkB;CACzC,CACF;AAAE;AAGF,MAAa,kBAAkB,cAAuB;CAKpD,OAAO,sBAAsB,UAAU;AACzC;;;;;;;;;;;;;;;;;;AAmBA,MAAa,WAAW,OAAO,WAAmB,YAAuE;CAEvH,OAAO,QAA0B,eAAe,SAAS,GACzD;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE"}
@@ -1,5 +1,5 @@
1
1
 
2
- import { T as TutoringAttachmentRead, _ as TutoringFeedbackWrite, c as TutoringRequestWrite, d as TutoringRequestRead, il as BodyUploadAttachment, pr as ListMyRequestsParams, u as TutoringRequestPage } from "../chunks/index.js";
2
+ import { T as TutoringAttachmentRead, _ as TutoringFeedbackWrite, al as BodyUploadAttachment, c as TutoringRequestWrite, d as TutoringRequestRead, pr as ListMyRequestsParams, u as TutoringRequestPage } from "../chunks/index.js";
3
3
  import { c as request } from "../chunks/client.js";
4
4
  //#region src/api/tutoring-requests/tutoring-requests.d.ts
5
5
  export declare const getListMyRequestsUrl: (params?: ListMyRequestsParams) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"tutoring-requests.js","names":[],"sources":["../../src/api/tutoring-requests/tutoring-requests.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.3\n */\nimport type {\n BodyUploadAttachment,\n ListMyRequestsParams,\n TutoringAttachmentRead,\n TutoringFeedbackWrite,\n TutoringRequestPage,\n TutoringRequestRead,\n TutoringRequestWrite\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListMyRequestsUrl = (params?: ListMyRequestsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n const explodeParameters = [\"status\"];\n\n if (Array.isArray(value) && explodeParameters.includes(key)) {\n value.forEach((v) => {\n normalizedParams.append(key, v === null ? 'null' : String(v));\n });\n return;\n }\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 ? `/tutoring/requests?${stringifiedParams}` : `/tutoring/requests`\n}\n\n/**\n * The caller's own requests, newest first.\n *\n * Includes requests they submitted for a child profile, which is what the\n * ``requested_by_id`` half of the predicate is for — a parent's list should not\n * go empty the moment they ask on somebody else's behalf.\n * @summary List My Requests\n */\nexport const listMyRequests = async (params?: ListMyRequestsParams, options?: Parameters<typeof request>[1]): Promise<TutoringRequestPage> => {\n\n return request<TutoringRequestPage>(getListMyRequestsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getSubmitRequestUrl = () => {\n\n\n\n\n return `/tutoring/requests`\n}\n\n/**\n * Ask for help.\n *\n * Debits the tenant's tutoring entitlement, which is what makes this a ``409``\n * when the allowance is spent rather than a queued request nobody may answer.\n * ``403`` from the entitlement layer is reported as ``404`` for the subject, per\n * the convention the loan routes already follow.\n *\n * ``onBehalfOfId`` must name a profile of the caller. Anything else is ``403``:\n * the legacy accepts a ``user_id`` in the body and trusts it, which is an\n * authorization decision made by whoever wrote the client.\n * @summary Submit Request\n */\nexport const submitRequest = async (tutoringRequestWrite: TutoringRequestWrite, options?: Parameters<typeof request>[1]): Promise<TutoringRequestRead> => {\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<TutoringRequestRead>(getSubmitRequestUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringRequestWrite)\n }\n);}\n\n\nexport const getGetRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}`\n}\n\n/**\n * One of the caller's own requests, with signed links to its files.\n * @summary Get Request\n */\nexport const getRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<TutoringRequestRead> => {\n\n return request<TutoringRequestRead>(getGetRequestUrl(requestId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getUploadAttachmentUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/attachments`\n}\n\n/**\n * Attach a file to a request. One per call.\n *\n * One per call rather than an array, deliberately. A pupil photographing four\n * pages on a phone connection wants three of them to survive the fourth\n * timing out, and the legacy's ``documents[]`` array is all-or-nothing — with\n * no cap on how many, so a single request can be arbitrarily large.\n *\n * The role follows from who is asking: the pupil is attaching to a question,\n * the assigned practitioner to an answer. Nobody declares it, so nobody can\n * claim the wrong one.\n *\n * ``415`` for a format we do not accept, ``413`` for a file over the ceiling,\n * ``409`` once the per-request cap is reached, and ``404`` for a request that\n * is not the caller's.\n * @summary Upload Attachment\n */\nexport const uploadAttachment = async (requestId: number,\n bodyUploadAttachment: BodyUploadAttachment, options?: Parameters<typeof request>[1]): Promise<TutoringAttachmentRead> => {\n const formData = new FormData();\nformData.append(`file`, bodyUploadAttachment.file);\n\n return request<TutoringAttachmentRead>(getUploadAttachmentUrl(requestId),\n {\n ...options,\n method: 'POST'\n ,\n body: formData\n }\n);}\n\n\nexport const getDeleteAttachmentUrl = (requestId: number,\n attachmentId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/attachments/${attachmentId}`\n}\n\n/**\n * Remove a file the caller uploaded.\n *\n * Only the uploader, and only while the request is still open — a file that\n * formed part of a delivered answer is part of the record.\n *\n * The object goes and the row goes with it: this is a mistaken upload being\n * withdrawn, not a retention event. Retention is the bucket's lifecycle rule,\n * which removes objects and leaves rows behind.\n * @summary Delete Attachment\n */\nexport const deleteAttachment = async (requestId: number,\n attachmentId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getDeleteAttachmentUrl(requestId,attachmentId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getCancelRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/cancel`\n}\n\n/**\n * Withdraw a request the caller asked.\n *\n * The debit is **not** reversed. A pupil who asks and withdraws has occupied a\n * dispatcher's attention, and refunding it would make cancel-and-resubmit a way\n * around the allowance. If a tenant should get the unit back, that is a credit\n * somebody grants, which is a different act with a different audit trail.\n * @summary Cancel Request\n */\nexport const cancelRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<TutoringRequestRead> => {\n\n return request<TutoringRequestRead>(getCancelRequestUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getRateRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/feedback`\n}\n\n/**\n * Rate the answer. One rating per request, enforced by the table.\n * @summary Rate Request\n */\nexport const rateRequest = async (requestId: number,\n tutoringFeedbackWrite: TutoringFeedbackWrite, 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>(getRateRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringFeedbackWrite)\n }\n);}\n\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"tutoring-requests.js","names":[],"sources":["../../src/api/tutoring-requests/tutoring-requests.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.12.4\n */\nimport type {\n BodyUploadAttachment,\n ListMyRequestsParams,\n TutoringAttachmentRead,\n TutoringFeedbackWrite,\n TutoringRequestPage,\n TutoringRequestRead,\n TutoringRequestWrite\n} from '../../models';\n\nimport { request } from '../../client';\n\nexport const getListMyRequestsUrl = (params?: ListMyRequestsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n const explodeParameters = [\"status\"];\n\n if (Array.isArray(value) && explodeParameters.includes(key)) {\n value.forEach((v) => {\n normalizedParams.append(key, v === null ? 'null' : String(v));\n });\n return;\n }\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 ? `/tutoring/requests?${stringifiedParams}` : `/tutoring/requests`\n}\n\n/**\n * The caller's own requests, newest first.\n *\n * Includes requests they submitted for a child profile, which is what the\n * ``requested_by_id`` half of the predicate is for — a parent's list should not\n * go empty the moment they ask on somebody else's behalf.\n * @summary List My Requests\n */\nexport const listMyRequests = async (params?: ListMyRequestsParams, options?: Parameters<typeof request>[1]): Promise<TutoringRequestPage> => {\n\n return request<TutoringRequestPage>(getListMyRequestsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getSubmitRequestUrl = () => {\n\n\n\n\n return `/tutoring/requests`\n}\n\n/**\n * Ask for help.\n *\n * Debits the tenant's tutoring entitlement, which is what makes this a ``409``\n * when the allowance is spent rather than a queued request nobody may answer.\n * ``403`` from the entitlement layer is reported as ``404`` for the subject, per\n * the convention the loan routes already follow.\n *\n * ``onBehalfOfId`` must name a profile of the caller. Anything else is ``403``:\n * the legacy accepts a ``user_id`` in the body and trusts it, which is an\n * authorization decision made by whoever wrote the client.\n * @summary Submit Request\n */\nexport const submitRequest = async (tutoringRequestWrite: TutoringRequestWrite, options?: Parameters<typeof request>[1]): Promise<TutoringRequestRead> => {\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<TutoringRequestRead>(getSubmitRequestUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringRequestWrite)\n }\n);}\n\n\nexport const getGetRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}`\n}\n\n/**\n * One of the caller's own requests, with signed links to its files.\n * @summary Get Request\n */\nexport const getRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<TutoringRequestRead> => {\n\n return request<TutoringRequestRead>(getGetRequestUrl(requestId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\nexport const getUploadAttachmentUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/attachments`\n}\n\n/**\n * Attach a file to a request. One per call.\n *\n * One per call rather than an array, deliberately. A pupil photographing four\n * pages on a phone connection wants three of them to survive the fourth\n * timing out, and the legacy's ``documents[]`` array is all-or-nothing — with\n * no cap on how many, so a single request can be arbitrarily large.\n *\n * The role follows from who is asking: the pupil is attaching to a question,\n * the assigned practitioner to an answer. Nobody declares it, so nobody can\n * claim the wrong one.\n *\n * ``415`` for a format we do not accept, ``413`` for a file over the ceiling,\n * ``409`` once the per-request cap is reached, and ``404`` for a request that\n * is not the caller's.\n * @summary Upload Attachment\n */\nexport const uploadAttachment = async (requestId: number,\n bodyUploadAttachment: BodyUploadAttachment, options?: Parameters<typeof request>[1]): Promise<TutoringAttachmentRead> => {\n const formData = new FormData();\nformData.append(`file`, bodyUploadAttachment.file);\n\n return request<TutoringAttachmentRead>(getUploadAttachmentUrl(requestId),\n {\n ...options,\n method: 'POST'\n ,\n body: formData\n }\n);}\n\n\nexport const getDeleteAttachmentUrl = (requestId: number,\n attachmentId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/attachments/${attachmentId}`\n}\n\n/**\n * Remove a file the caller uploaded.\n *\n * Only the uploader, and only while the request is still open — a file that\n * formed part of a delivered answer is part of the record.\n *\n * The object goes and the row goes with it: this is a mistaken upload being\n * withdrawn, not a retention event. Retention is the bucket's lifecycle rule,\n * which removes objects and leaves rows behind.\n * @summary Delete Attachment\n */\nexport const deleteAttachment = async (requestId: number,\n attachmentId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getDeleteAttachmentUrl(requestId,attachmentId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\nexport const getCancelRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/cancel`\n}\n\n/**\n * Withdraw a request the caller asked.\n *\n * The debit is **not** reversed. A pupil who asks and withdraws has occupied a\n * dispatcher's attention, and refunding it would make cancel-and-resubmit a way\n * around the allowance. If a tenant should get the unit back, that is a credit\n * somebody grants, which is a different act with a different audit trail.\n * @summary Cancel Request\n */\nexport const cancelRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<TutoringRequestRead> => {\n\n return request<TutoringRequestRead>(getCancelRequestUrl(requestId),\n {\n ...options,\n method: 'POST'\n\n\n }\n);}\n\n\nexport const getRateRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/tutoring/requests/${requestId}/feedback`\n}\n\n/**\n * Rate the answer. One rating per request, enforced by the table.\n * @summary Rate Request\n */\nexport const rateRequest = async (requestId: number,\n tutoringFeedbackWrite: TutoringFeedbackWrite, 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>(getRateRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringFeedbackWrite)\n }\n);}\n\n\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
 
2
- import { Cl as AccountRead, Zn as PrincipalRead } from "./index.js";
2
+ import { Zn as PrincipalRead, wl as AccountRead } from "./index.js";
3
3
  import { i as ClientOptions, r as Client } from "./client.js";
4
4
  //#region src/auth/client.d.ts
5
5
  interface MozaikAuthOptions {