@learnorama/mozaik-sdk 0.3.2-staging.19.1 → 0.6.0-staging.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -0
- package/dist/api/account.d.ts +1 -1
- package/dist/api/account.js.map +1 -1
- package/dist/api/admin-catalogue.d.ts +1 -1
- package/dist/api/admin-catalogue.js.map +1 -1
- package/dist/api/admin-consumption.d.ts +1 -1
- package/dist/api/admin-consumption.js.map +1 -1
- package/dist/api/admin-licenses.d.ts +1 -1
- package/dist/api/admin-licenses.js.map +1 -1
- package/dist/api/admin-patrons.d.ts +1 -1
- package/dist/api/admin-patrons.js.map +1 -1
- package/dist/api/admin-reviews.d.ts +1 -1
- package/dist/api/admin-reviews.js.map +1 -1
- package/dist/api/admin-roles.d.ts +1 -1
- package/dist/api/admin-roles.js.map +1 -1
- package/dist/api/admin-support.d.ts +1 -1
- package/dist/api/admin-support.js.map +1 -1
- package/dist/api/admin-tenants.d.ts +7 -1
- package/dist/api/admin-tenants.js +19 -1
- package/dist/api/admin-tenants.js.map +1 -1
- package/dist/api/admin-tutoring.d.ts +1 -1
- package/dist/api/admin-tutoring.js.map +1 -1
- package/dist/api/auth.d.ts +7 -3
- package/dist/api/auth.js +6 -2
- package/dist/api/auth.js.map +1 -1
- package/dist/api/biblio-catalogue.d.ts +1 -1
- package/dist/api/biblio-catalogue.js.map +1 -1
- package/dist/api/biblio-home.d.ts +1 -1
- package/dist/api/biblio-home.js.map +1 -1
- package/dist/api/biblio-library.d.ts +1 -1
- package/dist/api/biblio-library.js.map +1 -1
- package/dist/api/biblio-nextory.d.ts +1 -1
- package/dist/api/biblio-nextory.js.map +1 -1
- package/dist/api/biblio-press.d.ts +1 -1
- package/dist/api/biblio-press.js.map +1 -1
- package/dist/api/biblio-search.d.ts +1 -1
- package/dist/api/biblio-search.js.map +1 -1
- package/dist/api/biblio-telemetry.d.ts +1 -1
- package/dist/api/biblio-telemetry.js.map +1 -1
- package/dist/api/consumption.d.ts +1 -1
- package/dist/api/consumption.js.map +1 -1
- package/dist/api/cvs-app.d.ts +1 -1
- package/dist/api/cvs-app.js.map +1 -1
- package/dist/api/cvs-documents.d.ts +1 -1
- package/dist/api/cvs-documents.js.map +1 -1
- package/dist/api/cvs-favorites.d.ts +1 -1
- package/dist/api/cvs-favorites.js.map +1 -1
- package/dist/api/cvs-ils.d.ts +1 -1
- package/dist/api/cvs-ils.js.map +1 -1
- package/dist/api/cvs-loans.d.ts +1 -1
- package/dist/api/cvs-loans.js.map +1 -1
- package/dist/api/cvs-payments.d.ts +1 -1
- package/dist/api/cvs-payments.js.map +1 -1
- package/dist/api/cvs-streaming.d.ts +1 -1
- package/dist/api/cvs-streaming.js.map +1 -1
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.js +2 -2
- package/dist/api/partner-catalogue.d.ts +1 -1
- package/dist/api/partner-catalogue.js.map +1 -1
- package/dist/api/partner-reader.d.ts +1 -1
- package/dist/api/partner-reader.js.map +1 -1
- package/dist/api/profiles.d.ts +1 -1
- package/dist/api/profiles.js.map +1 -1
- package/dist/api/search.d.ts +1 -1
- package/dist/api/search.js.map +1 -1
- package/dist/api/tutoring-catalogue.d.ts +1 -1
- package/dist/api/tutoring-catalogue.js.map +1 -1
- package/dist/api/tutoring-chat.d.ts +1 -1
- package/dist/api/tutoring-chat.js.map +1 -1
- package/dist/api/tutoring-dispatch.d.ts +1 -1
- package/dist/api/tutoring-dispatch.js.map +1 -1
- package/dist/api/tutoring-practitioner.js.map +1 -1
- package/dist/api/tutoring-requests.d.ts +1 -1
- package/dist/api/tutoring-requests.js.map +1 -1
- package/dist/chunks/client2.d.ts +1 -1
- package/dist/chunks/connection.d.ts +1 -1
- package/dist/chunks/index.d.ts +184 -156
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/models.d.ts +2 -2
- package/dist/models.js.map +1 -1
- package/dist/react/account.d.ts +1 -1
- package/dist/react/account.js +1 -1
- package/dist/react/account.js.map +1 -1
- package/dist/react/admin-catalogue.d.ts +1 -1
- package/dist/react/admin-catalogue.js +1 -1
- package/dist/react/admin-catalogue.js.map +1 -1
- package/dist/react/admin-consumption.d.ts +1 -1
- package/dist/react/admin-consumption.js +1 -1
- package/dist/react/admin-consumption.js.map +1 -1
- package/dist/react/admin-licenses.d.ts +1 -1
- package/dist/react/admin-licenses.js +1 -1
- package/dist/react/admin-licenses.js.map +1 -1
- package/dist/react/admin-patrons.d.ts +1 -1
- package/dist/react/admin-patrons.js +1 -1
- package/dist/react/admin-patrons.js.map +1 -1
- package/dist/react/admin-reviews.d.ts +1 -1
- package/dist/react/admin-reviews.js +1 -1
- package/dist/react/admin-reviews.js.map +1 -1
- package/dist/react/admin-roles.d.ts +1 -1
- package/dist/react/admin-roles.js +1 -1
- package/dist/react/admin-roles.js.map +1 -1
- package/dist/react/admin-support.d.ts +1 -1
- package/dist/react/admin-support.js +1 -1
- package/dist/react/admin-support.js.map +1 -1
- package/dist/react/admin-tenants.d.ts +34 -1
- package/dist/react/admin-tenants.js +44 -2
- package/dist/react/admin-tenants.js.map +1 -1
- package/dist/react/admin-tutoring.d.ts +1 -1
- package/dist/react/admin-tutoring.js +1 -1
- package/dist/react/admin-tutoring.js.map +1 -1
- package/dist/react/auth.d.ts +7 -3
- package/dist/react/auth.js +7 -3
- package/dist/react/auth.js.map +1 -1
- package/dist/react/biblio-catalogue.d.ts +1 -1
- package/dist/react/biblio-catalogue.js +1 -1
- package/dist/react/biblio-catalogue.js.map +1 -1
- package/dist/react/biblio-home.d.ts +1 -1
- package/dist/react/biblio-home.js +1 -1
- package/dist/react/biblio-home.js.map +1 -1
- package/dist/react/biblio-library.d.ts +1 -1
- package/dist/react/biblio-library.js +1 -1
- package/dist/react/biblio-library.js.map +1 -1
- package/dist/react/biblio-nextory.d.ts +1 -1
- package/dist/react/biblio-nextory.js +1 -1
- package/dist/react/biblio-nextory.js.map +1 -1
- package/dist/react/biblio-press.d.ts +1 -1
- package/dist/react/biblio-press.js +1 -1
- package/dist/react/biblio-press.js.map +1 -1
- package/dist/react/biblio-search.d.ts +1 -1
- package/dist/react/biblio-search.js +1 -1
- package/dist/react/biblio-search.js.map +1 -1
- package/dist/react/biblio-telemetry.d.ts +1 -1
- package/dist/react/biblio-telemetry.js +1 -1
- package/dist/react/biblio-telemetry.js.map +1 -1
- package/dist/react/chat.d.ts +1 -1
- package/dist/react/consumption.d.ts +1 -1
- package/dist/react/consumption.js +1 -1
- package/dist/react/consumption.js.map +1 -1
- package/dist/react/cvs-app.d.ts +1 -1
- package/dist/react/cvs-app.js +1 -1
- package/dist/react/cvs-app.js.map +1 -1
- package/dist/react/cvs-documents.d.ts +1 -1
- package/dist/react/cvs-documents.js +1 -1
- package/dist/react/cvs-documents.js.map +1 -1
- package/dist/react/cvs-favorites.d.ts +1 -1
- package/dist/react/cvs-favorites.js +1 -1
- package/dist/react/cvs-favorites.js.map +1 -1
- package/dist/react/cvs-ils.d.ts +1 -1
- package/dist/react/cvs-ils.js +1 -1
- package/dist/react/cvs-ils.js.map +1 -1
- package/dist/react/cvs-loans.d.ts +1 -1
- package/dist/react/cvs-loans.js +1 -1
- package/dist/react/cvs-loans.js.map +1 -1
- package/dist/react/cvs-payments.d.ts +1 -1
- package/dist/react/cvs-payments.js +1 -1
- package/dist/react/cvs-payments.js.map +1 -1
- package/dist/react/cvs-streaming.d.ts +1 -1
- package/dist/react/cvs-streaming.js +1 -1
- package/dist/react/cvs-streaming.js.map +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.js +2 -2
- package/dist/react/partner-catalogue.d.ts +1 -1
- package/dist/react/partner-catalogue.js +1 -1
- package/dist/react/partner-catalogue.js.map +1 -1
- package/dist/react/partner-reader.d.ts +1 -1
- package/dist/react/partner-reader.js +1 -1
- package/dist/react/partner-reader.js.map +1 -1
- package/dist/react/profiles.d.ts +1 -1
- package/dist/react/profiles.js +1 -1
- package/dist/react/profiles.js.map +1 -1
- package/dist/react/search.d.ts +1 -1
- package/dist/react/search.js +1 -1
- package/dist/react/search.js.map +1 -1
- package/dist/react/tutoring-catalogue.d.ts +1 -1
- package/dist/react/tutoring-catalogue.js +1 -1
- package/dist/react/tutoring-catalogue.js.map +1 -1
- package/dist/react/tutoring-chat.d.ts +1 -1
- package/dist/react/tutoring-chat.js +1 -1
- package/dist/react/tutoring-chat.js.map +1 -1
- package/dist/react/tutoring-dispatch.d.ts +1 -1
- package/dist/react/tutoring-dispatch.js +1 -1
- package/dist/react/tutoring-dispatch.js.map +1 -1
- package/dist/react/tutoring-practitioner.d.ts +1 -1
- package/dist/react/tutoring-practitioner.js +1 -1
- package/dist/react/tutoring-practitioner.js.map +1 -1
- package/dist/react/tutoring-requests.d.ts +1 -1
- package/dist/react/tutoring-requests.js +1 -1
- package/dist/react/tutoring-requests.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-tutoring.js","names":[],"sources":["../../src/react/admin-tutoring/admin-tutoring.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.3.2\n */\nimport {\n useMutation,\n useQuery\n} from '@tanstack/react-query';\nimport type {\n DataTag,\n DefinedInitialDataOptions,\n DefinedUseQueryResult,\n MutationFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n UndefinedInitialDataOptions,\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult\n} from '@tanstack/react-query';\n\nimport type {\n AiDraftRead,\n AiDraftReviewWrite,\n EducationalGoalRead,\n EducationalGoalWrite,\n HTTPExceptionResponse,\n LevelRead,\n LevelWrite,\n ListAllRequestsParams,\n ListExpiringDocumentsParams,\n ListFeedbackParams,\n ListPractitionersParams,\n PractitionerDocumentListRead,\n PractitionerPage,\n PractitionerRead,\n PractitionerWrite,\n SubjectRead,\n SubjectWrite,\n TutoringFeedbackModerationWrite,\n TutoringFeedbackPage,\n TutoringQueuePage,\n TutoringRequestAdminCloseWrite,\n TutoringRequestAdminWrite,\n TutoringRequestStaffRead,\n ValidationErrorResponse\n} from '../../models';\n\nimport { request } from '../../client';\nimport type { ErrorType , BodyType } from '../../client';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n\nconst withQueryKey = <T extends object, K>(query: T, queryKey: K): T & { queryKey: K } => {\n const result = { queryKey } as T & { queryKey: K };\n for (const key of Object.keys(query)) {\n // The explicit queryKey always wins, matching the previous\n // `{ ...query, queryKey }` spread where it was set last.\n if (key === 'queryKey') continue;\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: () => (query as Record<string, unknown>)[key],\n });\n }\n return result;\n};\n\nexport const getListExpiringDocumentsUrl = (params?: ListExpiringDocumentsParams,) => {\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 ? `/admin/tutoring/documents/expiring?${stringifiedParams}` : `/admin/tutoring/documents/expiring`\n}\n\n/**\n * Whose attestation lapses soon, as a query rather than a filing cabinet.\n *\n * An URSSAF *attestation de vigilance* is valid for six months and a lapsed one\n * is a compliance problem. The legacy stores it as a ``text`` column with one\n * ``ursaff_date`` beside it, so this question has no answer there at all.\n * @summary List Expiring Documents\n */\nexport const listExpiringDocuments = async (params?: ListExpiringDocumentsParams, options?: Parameters<typeof request>[1]): Promise<PractitionerDocumentListRead> => {\n\n return request<PractitionerDocumentListRead>(getListExpiringDocumentsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListExpiringDocumentsQueryKey = (params?: ListExpiringDocumentsParams,) => {\n return [\n `/admin/tutoring/documents/expiring`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getListExpiringDocumentsQueryOptions = <TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: ListExpiringDocumentsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListExpiringDocumentsQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listExpiringDocuments>>> = ({ signal }) => listExpiringDocuments(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListExpiringDocumentsQueryResult = NonNullable<Awaited<ReturnType<typeof listExpiringDocuments>>>\nexport type ListExpiringDocumentsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListExpiringDocuments<TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | ListExpiringDocumentsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listExpiringDocuments>>,\n TError,\n Awaited<ReturnType<typeof listExpiringDocuments>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListExpiringDocuments<TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListExpiringDocumentsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listExpiringDocuments>>,\n TError,\n Awaited<ReturnType<typeof listExpiringDocuments>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListExpiringDocuments<TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListExpiringDocumentsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Expiring Documents\n */\n\nexport function useListExpiringDocuments<TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListExpiringDocumentsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListExpiringDocumentsQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getListFeedbackUrl = (params?: ListFeedbackParams,) => {\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 ? `/admin/tutoring/feedback?${stringifiedParams}` : `/admin/tutoring/feedback`\n}\n\n/**\n * Ratings, newest first. ``?publishable=false`` is the moderation queue.\n *\n * Tenant-scoped through the request it belongs to: a rating is a child's free\n * text, so it is reachable only by an operator who reaches the tenant.\n * @summary List Feedback\n */\nexport const listFeedback = async (params?: ListFeedbackParams, options?: Parameters<typeof request>[1]): Promise<TutoringFeedbackPage> => {\n\n return request<TutoringFeedbackPage>(getListFeedbackUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListFeedbackQueryKey = (params?: ListFeedbackParams,) => {\n return [\n `/admin/tutoring/feedback`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getListFeedbackQueryOptions = <TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: ListFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListFeedbackQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listFeedback>>> = ({ signal }) => listFeedback(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListFeedbackQueryResult = NonNullable<Awaited<ReturnType<typeof listFeedback>>>\nexport type ListFeedbackQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListFeedback<TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | ListFeedbackParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listFeedback>>,\n TError,\n Awaited<ReturnType<typeof listFeedback>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListFeedback<TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listFeedback>>,\n TError,\n Awaited<ReturnType<typeof listFeedback>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListFeedback<TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Feedback\n */\n\nexport function useListFeedback<TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListFeedbackQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getModerateFeedbackUrl = (feedbackId: number,) => {\n\n\n\n\n return `/admin/tutoring/feedback/${feedbackId}/moderation`\n}\n\n/**\n * Clear a rating for the public showcase, or withhold it.\n *\n * ``PUT`` on a sub-resource rather than ``PATCH`` on the rating, mirroring\n * ``/admin/reviews/{id}/moderation``: the decision is the resource, and it is\n * idempotent.\n * @summary Moderate Feedback\n */\nexport const moderateFeedback = async (feedbackId: number,\n tutoringFeedbackModerationWrite: TutoringFeedbackModerationWrite, 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>(getModerateFeedbackUrl(feedbackId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringFeedbackModerationWrite)\n }\n);}\n\n\n\n\n\nexport const getModerateFeedbackMutationKey = () => ['moderateFeedback'] as const;\n\nexport const getModerateFeedbackMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof moderateFeedback>>, TError,ModerateFeedbackMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof moderateFeedback>>, TError,ModerateFeedbackMutationVariables, TContext> => {\n\nconst mutationKey = getModerateFeedbackMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof moderateFeedback>>, ModerateFeedbackMutationVariables> = (props) => {\n const {feedbackId,data} = props ?? {};\n\n return moderateFeedback(feedbackId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type ModerateFeedbackMutationResult = NonNullable<Awaited<ReturnType<typeof moderateFeedback>>>\n export type ModerateFeedbackMutationBody = BodyType<TutoringFeedbackModerationWrite>\n export type ModerateFeedbackMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type ModerateFeedbackMutationVariables = {feedbackId: number;data: BodyType<TutoringFeedbackModerationWrite>}\n\n /**\n * @summary Moderate Feedback\n */\nexport const useModerateFeedback = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof moderateFeedback>>, TError,ModerateFeedbackMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof moderateFeedback>>,\n TError,\n ModerateFeedbackMutationVariables,\n TContext\n > => {\n return useMutation(getModerateFeedbackMutationOptions(options), queryClient);\n }\n export const getCreateGoalUrl = () => {\n\n\n\n\n return `/admin/tutoring/goals`\n}\n\n/**\n * @summary Create Goal\n */\nexport const createGoal = async (educationalGoalWrite: EducationalGoalWrite, options?: Parameters<typeof request>[1]): Promise<EducationalGoalRead> => {\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<EducationalGoalRead>(getCreateGoalUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(educationalGoalWrite)\n }\n);}\n\n\n\n\n\nexport const getCreateGoalMutationKey = () => ['createGoal'] as const;\n\nexport const getCreateGoalMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createGoal>>, TError,CreateGoalMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof createGoal>>, TError,CreateGoalMutationVariables, TContext> => {\n\nconst mutationKey = getCreateGoalMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof createGoal>>, CreateGoalMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return createGoal(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CreateGoalMutationResult = NonNullable<Awaited<ReturnType<typeof createGoal>>>\n export type CreateGoalMutationBody = BodyType<EducationalGoalWrite>\n export type CreateGoalMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CreateGoalMutationVariables = {data: BodyType<EducationalGoalWrite>}\n\n /**\n * @summary Create Goal\n */\nexport const useCreateGoal = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createGoal>>, TError,CreateGoalMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof createGoal>>,\n TError,\n CreateGoalMutationVariables,\n TContext\n > => {\n return useMutation(getCreateGoalMutationOptions(options), queryClient);\n }\n export const getAmendGoalUrl = (goalId: number,) => {\n\n\n\n\n return `/admin/tutoring/goals/${goalId}`\n}\n\n/**\n * @summary Amend Goal\n */\nexport const amendGoal = async (goalId: number,\n educationalGoalWrite: EducationalGoalWrite, options?: Parameters<typeof request>[1]): Promise<EducationalGoalRead> => {\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<EducationalGoalRead>(getAmendGoalUrl(goalId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(educationalGoalWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendGoalMutationKey = () => ['amendGoal'] as const;\n\nexport const getAmendGoalMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendGoal>>, TError,AmendGoalMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendGoal>>, TError,AmendGoalMutationVariables, TContext> => {\n\nconst mutationKey = getAmendGoalMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendGoal>>, AmendGoalMutationVariables> = (props) => {\n const {goalId,data} = props ?? {};\n\n return amendGoal(goalId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendGoalMutationResult = NonNullable<Awaited<ReturnType<typeof amendGoal>>>\n export type AmendGoalMutationBody = BodyType<EducationalGoalWrite>\n export type AmendGoalMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendGoalMutationVariables = {goalId: number;data: BodyType<EducationalGoalWrite>}\n\n /**\n * @summary Amend Goal\n */\nexport const useAmendGoal = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendGoal>>, TError,AmendGoalMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendGoal>>,\n TError,\n AmendGoalMutationVariables,\n TContext\n > => {\n return useMutation(getAmendGoalMutationOptions(options), queryClient);\n }\n export const getCreateLevelUrl = () => {\n\n\n\n\n return `/admin/tutoring/levels`\n}\n\n/**\n * @summary Create Level\n */\nexport const createLevel = async (levelWrite: LevelWrite, options?: Parameters<typeof request>[1]): Promise<LevelRead> => {\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<LevelRead>(getCreateLevelUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(levelWrite)\n }\n);}\n\n\n\n\n\nexport const getCreateLevelMutationKey = () => ['createLevel'] as const;\n\nexport const getCreateLevelMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createLevel>>, TError,CreateLevelMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof createLevel>>, TError,CreateLevelMutationVariables, TContext> => {\n\nconst mutationKey = getCreateLevelMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof createLevel>>, CreateLevelMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return createLevel(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CreateLevelMutationResult = NonNullable<Awaited<ReturnType<typeof createLevel>>>\n export type CreateLevelMutationBody = BodyType<LevelWrite>\n export type CreateLevelMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CreateLevelMutationVariables = {data: BodyType<LevelWrite>}\n\n /**\n * @summary Create Level\n */\nexport const useCreateLevel = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createLevel>>, TError,CreateLevelMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof createLevel>>,\n TError,\n CreateLevelMutationVariables,\n TContext\n > => {\n return useMutation(getCreateLevelMutationOptions(options), queryClient);\n }\n export const getAmendLevelUrl = (levelId: number,) => {\n\n\n\n\n return `/admin/tutoring/levels/${levelId}`\n}\n\n/**\n * @summary Amend Level\n */\nexport const amendLevel = async (levelId: number,\n levelWrite: LevelWrite, options?: Parameters<typeof request>[1]): Promise<LevelRead> => {\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<LevelRead>(getAmendLevelUrl(levelId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(levelWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendLevelMutationKey = () => ['amendLevel'] as const;\n\nexport const getAmendLevelMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendLevel>>, TError,AmendLevelMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendLevel>>, TError,AmendLevelMutationVariables, TContext> => {\n\nconst mutationKey = getAmendLevelMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendLevel>>, AmendLevelMutationVariables> = (props) => {\n const {levelId,data} = props ?? {};\n\n return amendLevel(levelId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendLevelMutationResult = NonNullable<Awaited<ReturnType<typeof amendLevel>>>\n export type AmendLevelMutationBody = BodyType<LevelWrite>\n export type AmendLevelMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendLevelMutationVariables = {levelId: number;data: BodyType<LevelWrite>}\n\n /**\n * @summary Amend Level\n */\nexport const useAmendLevel = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendLevel>>, TError,AmendLevelMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendLevel>>,\n TError,\n AmendLevelMutationVariables,\n TContext\n > => {\n return useMutation(getAmendLevelMutationOptions(options), queryClient);\n }\n export const getListPractitionersUrl = (params?: ListPractitionersParams,) => {\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 ? `/admin/tutoring/practitioners?${stringifiedParams}` : `/admin/tutoring/practitioners`\n}\n\n/**\n * Who can take work, filtered the way the question is actually asked.\n *\n * ``role``, ``capability``, ``subjectId`` and ``levelId`` together answer \"who\n * can take *this* request\", which is the only thing anybody wants from this\n * list. The legacy answers it with a different screen per role — nine of them,\n * plus two more for pelite.\n * @summary List Practitioners\n */\nexport const listPractitioners = async (params?: ListPractitionersParams, options?: Parameters<typeof request>[1]): Promise<PractitionerPage> => {\n\n return request<PractitionerPage>(getListPractitionersUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListPractitionersQueryKey = (params?: ListPractitionersParams,) => {\n return [\n `/admin/tutoring/practitioners`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getListPractitionersQueryOptions = <TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: ListPractitionersParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListPractitionersQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listPractitioners>>> = ({ signal }) => listPractitioners(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListPractitionersQueryResult = NonNullable<Awaited<ReturnType<typeof listPractitioners>>>\nexport type ListPractitionersQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListPractitioners<TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | ListPractitionersParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listPractitioners>>,\n TError,\n Awaited<ReturnType<typeof listPractitioners>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListPractitioners<TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListPractitionersParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listPractitioners>>,\n TError,\n Awaited<ReturnType<typeof listPractitioners>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListPractitioners<TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListPractitionersParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Practitioners\n */\n\nexport function useListPractitioners<TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListPractitionersParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListPractitionersQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getAmendPractitionerUrl = (userId: number,) => {\n\n\n\n\n return `/admin/tutoring/practitioners/${userId}`\n}\n\n/**\n * Availability, capabilities and competencies in one call.\n *\n * Competencies are replaced wholesale rather than diffed: the screen shows a\n * checklist and submits it. Absent means unchanged; an empty list means none,\n * which is a real instruction and has to be distinguishable from absence —\n * hence ``exclude_unset``.\n * @summary Amend Practitioner\n */\nexport const amendPractitioner = async (userId: number,\n practitionerWrite: PractitionerWrite, options?: Parameters<typeof request>[1]): Promise<PractitionerRead> => {\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<PractitionerRead>(getAmendPractitionerUrl(userId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(practitionerWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendPractitionerMutationKey = () => ['amendPractitioner'] as const;\n\nexport const getAmendPractitionerMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendPractitioner>>, TError,AmendPractitionerMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendPractitioner>>, TError,AmendPractitionerMutationVariables, TContext> => {\n\nconst mutationKey = getAmendPractitionerMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendPractitioner>>, AmendPractitionerMutationVariables> = (props) => {\n const {userId,data} = props ?? {};\n\n return amendPractitioner(userId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendPractitionerMutationResult = NonNullable<Awaited<ReturnType<typeof amendPractitioner>>>\n export type AmendPractitionerMutationBody = BodyType<PractitionerWrite>\n export type AmendPractitionerMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendPractitionerMutationVariables = {userId: number;data: BodyType<PractitionerWrite>}\n\n /**\n * @summary Amend Practitioner\n */\nexport const useAmendPractitioner = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendPractitioner>>, TError,AmendPractitionerMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendPractitioner>>,\n TError,\n AmendPractitionerMutationVariables,\n TContext\n > => {\n return useMutation(getAmendPractitionerMutationOptions(options), queryClient);\n }\n export const getListPractitionerDocumentsUrl = (userId: number,) => {\n\n\n\n\n return `/admin/tutoring/practitioners/${userId}/documents`\n}\n\n/**\n * One practitioner's compliance paperwork. Metadata only, never the file.\n * @summary List Practitioner Documents\n */\nexport const listPractitionerDocuments = async (userId: number, options?: Parameters<typeof request>[1]): Promise<PractitionerDocumentListRead> => {\n\n return request<PractitionerDocumentListRead>(getListPractitionerDocumentsUrl(userId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListPractitionerDocumentsQueryKey = (userId: number,) => {\n return [\n `/admin/tutoring/practitioners/${userId}/documents`\n ] as const;\n }\n\n\nexport const getListPractitionerDocumentsQueryOptions = <TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListPractitionerDocumentsQueryKey(userId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listPractitionerDocuments>>> = ({ signal }) => listPractitionerDocuments(userId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: userId !== null && userId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListPractitionerDocumentsQueryResult = NonNullable<Awaited<ReturnType<typeof listPractitionerDocuments>>>\nexport type ListPractitionerDocumentsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListPractitionerDocuments<TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listPractitionerDocuments>>,\n TError,\n Awaited<ReturnType<typeof listPractitionerDocuments>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListPractitionerDocuments<TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listPractitionerDocuments>>,\n TError,\n Awaited<ReturnType<typeof listPractitionerDocuments>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListPractitionerDocuments<TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Practitioner Documents\n */\n\nexport function useListPractitionerDocuments<TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListPractitionerDocumentsQueryOptions(userId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getListAllRequestsUrl = (params?: ListAllRequestsParams,) => {\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 ? `/admin/tutoring/requests?${stringifiedParams}` : `/admin/tutoring/requests`\n}\n\n/**\n * Every request in the tenants this operator reaches.\n *\n * Returns the queue shape rather than the staff shape on purpose: this is the\n * list screen, and a list of five hundred requests should not carry five hundred\n * statements. The staff detail shape is on the single-request route.\n * @summary List All Requests\n */\nexport const listAllRequests = async (params?: ListAllRequestsParams, options?: Parameters<typeof request>[1]): Promise<TutoringQueuePage> => {\n\n return request<TutoringQueuePage>(getListAllRequestsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListAllRequestsQueryKey = (params?: ListAllRequestsParams,) => {\n return [\n `/admin/tutoring/requests`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getListAllRequestsQueryOptions = <TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: ListAllRequestsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListAllRequestsQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listAllRequests>>> = ({ signal }) => listAllRequests(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListAllRequestsQueryResult = NonNullable<Awaited<ReturnType<typeof listAllRequests>>>\nexport type ListAllRequestsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListAllRequests<TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | ListAllRequestsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listAllRequests>>,\n TError,\n Awaited<ReturnType<typeof listAllRequests>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListAllRequests<TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListAllRequestsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listAllRequests>>,\n TError,\n Awaited<ReturnType<typeof listAllRequests>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListAllRequests<TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListAllRequestsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List All Requests\n */\n\nexport function useListAllRequests<TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListAllRequestsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListAllRequestsQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getReadRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}`\n}\n\n/**\n * One request in full, including provenance and the staff note.\n * @summary Read Request\n */\nexport const readRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<TutoringRequestStaffRead> => {\n\n return request<TutoringRequestStaffRead>(getReadRequestUrl(requestId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getReadRequestQueryKey = (requestId: number,) => {\n return [\n `/admin/tutoring/requests/${requestId}`\n ] as const;\n }\n\n\nexport const getReadRequestQueryOptions = <TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getReadRequestQueryKey(requestId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof readRequest>>> = ({ signal }) => readRequest(requestId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: requestId !== null && requestId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ReadRequestQueryResult = NonNullable<Awaited<ReturnType<typeof readRequest>>>\nexport type ReadRequestQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useReadRequest<TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof readRequest>>,\n TError,\n Awaited<ReturnType<typeof readRequest>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadRequest<TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof readRequest>>,\n TError,\n Awaited<ReturnType<typeof readRequest>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadRequest<TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read Request\n */\n\nexport function useReadRequest<TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getReadRequestQueryOptions(requestId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getAmendRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}`\n}\n\n/**\n * Reassign a stalled request, and say why, in one call.\n *\n * Partial: only fields present in the body are applied, so a client that knows\n * about one of them cannot blank the rest. Reassignment does **not** move the\n * status — a request routed to somebody else is still dispatched, and pretending\n * otherwise would corrupt the timestamp ladder every report reads.\n * @summary Amend Request\n */\nexport const amendRequest = async (requestId: number,\n tutoringRequestAdminWrite: TutoringRequestAdminWrite, options?: Parameters<typeof request>[1]): Promise<TutoringRequestStaffRead> => {\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<TutoringRequestStaffRead>(getAmendRequestUrl(requestId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringRequestAdminWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendRequestMutationKey = () => ['amendRequest'] as const;\n\nexport const getAmendRequestMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendRequest>>, TError,AmendRequestMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendRequest>>, TError,AmendRequestMutationVariables, TContext> => {\n\nconst mutationKey = getAmendRequestMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendRequest>>, AmendRequestMutationVariables> = (props) => {\n const {requestId,data} = props ?? {};\n\n return amendRequest(requestId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendRequestMutationResult = NonNullable<Awaited<ReturnType<typeof amendRequest>>>\n export type AmendRequestMutationBody = BodyType<TutoringRequestAdminWrite>\n export type AmendRequestMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendRequestMutationVariables = {requestId: number;data: BodyType<TutoringRequestAdminWrite>}\n\n /**\n * @summary Amend Request\n */\nexport const useAmendRequest = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendRequest>>, TError,AmendRequestMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendRequest>>,\n TError,\n AmendRequestMutationVariables,\n TContext\n > => {\n return useMutation(getAmendRequestMutationOptions(options), queryClient);\n }\n export const getAdminCloseRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}/close`\n}\n\n/**\n * Close a request from the back office. Goes through the state machine.\n * @summary Admin Close Request\n */\nexport const adminCloseRequest = async (requestId: number,\n tutoringRequestAdminCloseWrite: TutoringRequestAdminCloseWrite, 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>(getAdminCloseRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringRequestAdminCloseWrite)\n }\n);}\n\n\n\n\n\nexport const getAdminCloseRequestMutationKey = () => ['adminCloseRequest'] as const;\n\nexport const getAdminCloseRequestMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof adminCloseRequest>>, TError,AdminCloseRequestMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof adminCloseRequest>>, TError,AdminCloseRequestMutationVariables, TContext> => {\n\nconst mutationKey = getAdminCloseRequestMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof adminCloseRequest>>, AdminCloseRequestMutationVariables> = (props) => {\n const {requestId,data} = props ?? {};\n\n return adminCloseRequest(requestId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AdminCloseRequestMutationResult = NonNullable<Awaited<ReturnType<typeof adminCloseRequest>>>\n export type AdminCloseRequestMutationBody = BodyType<TutoringRequestAdminCloseWrite>\n export type AdminCloseRequestMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AdminCloseRequestMutationVariables = {requestId: number;data: BodyType<TutoringRequestAdminCloseWrite>}\n\n /**\n * @summary Admin Close Request\n */\nexport const useAdminCloseRequest = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof adminCloseRequest>>, TError,AdminCloseRequestMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof adminCloseRequest>>,\n TError,\n AdminCloseRequestMutationVariables,\n TContext\n > => {\n return useMutation(getAdminCloseRequestMutationOptions(options), queryClient);\n }\n export const getReadDraftUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}/draft`\n}\n\n/**\n * The latest draft for one request.\n *\n * ``404`` when there is none, which is the ordinary case: drafting is off by\n * default, and even switched on it produces nothing when the provider is\n * unreachable. A client must treat a missing draft as normal rather than as\n * an error — the request is answerable by a person either way.\n *\n * Only the latest. Re-drafting is not a feature yet, and returning a list\n * would promise one.\n * @summary Read Draft\n */\nexport const readDraft = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<AiDraftRead> => {\n\n return request<AiDraftRead>(getReadDraftUrl(requestId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getReadDraftQueryKey = (requestId: number,) => {\n return [\n `/admin/tutoring/requests/${requestId}/draft`\n ] as const;\n }\n\n\nexport const getReadDraftQueryOptions = <TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getReadDraftQueryKey(requestId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof readDraft>>> = ({ signal }) => readDraft(requestId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: requestId !== null && requestId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ReadDraftQueryResult = NonNullable<Awaited<ReturnType<typeof readDraft>>>\nexport type ReadDraftQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useReadDraft<TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof readDraft>>,\n TError,\n Awaited<ReturnType<typeof readDraft>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadDraft<TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof readDraft>>,\n TError,\n Awaited<ReturnType<typeof readDraft>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadDraft<TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read Draft\n */\n\nexport function useReadDraft<TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getReadDraftQueryOptions(requestId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getReviewDraftUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}/draft/review`\n}\n\n/**\n * Score a draft, and optionally hand the request to a person.\n *\n * ``escalate`` stamps ``escalatedAt`` — the legacy's ``ai_to_live``. It is\n * taken from the body rather than inferred from a low ``vote``: a reviewer may\n * rate a draft poorly and still keep it as a starting point, or rate it well\n * and escalate anyway because the pupil needs a conversation.\n *\n * Re-reviewing overwrites the score. Escalation does not un-stamp, because\n * handing a request to a person is not a thing that gets taken back.\n *\n * The request's own status is untouched. A draft is not a state of the\n * request, and moving it here would corrupt the timestamp ladder the reports\n * read.\n * @summary Review Draft\n */\nexport const reviewDraft = async (requestId: number,\n aiDraftReviewWrite: AiDraftReviewWrite, options?: Parameters<typeof request>[1]): Promise<AiDraftRead> => {\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<AiDraftRead>(getReviewDraftUrl(requestId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(aiDraftReviewWrite)\n }\n);}\n\n\n\n\n\nexport const getReviewDraftMutationKey = () => ['reviewDraft'] as const;\n\nexport const getReviewDraftMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof reviewDraft>>, TError,ReviewDraftMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof reviewDraft>>, TError,ReviewDraftMutationVariables, TContext> => {\n\nconst mutationKey = getReviewDraftMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof reviewDraft>>, ReviewDraftMutationVariables> = (props) => {\n const {requestId,data} = props ?? {};\n\n return reviewDraft(requestId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type ReviewDraftMutationResult = NonNullable<Awaited<ReturnType<typeof reviewDraft>>>\n export type ReviewDraftMutationBody = BodyType<AiDraftReviewWrite>\n export type ReviewDraftMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type ReviewDraftMutationVariables = {requestId: number;data: BodyType<AiDraftReviewWrite>}\n\n /**\n * @summary Review Draft\n */\nexport const useReviewDraft = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof reviewDraft>>, TError,ReviewDraftMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof reviewDraft>>,\n TError,\n ReviewDraftMutationVariables,\n TContext\n > => {\n return useMutation(getReviewDraftMutationOptions(options), queryClient);\n }\n export const getCreateSubjectUrl = () => {\n\n\n\n\n return `/admin/tutoring/subjects`\n}\n\n/**\n * Add a subject. Reference data, so ADMIN rather than SUPPORT.\n * @summary Create Subject\n */\nexport const createSubject = async (subjectWrite: SubjectWrite, options?: Parameters<typeof request>[1]): Promise<SubjectRead> => {\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<SubjectRead>(getCreateSubjectUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(subjectWrite)\n }\n);}\n\n\n\n\n\nexport const getCreateSubjectMutationKey = () => ['createSubject'] as const;\n\nexport const getCreateSubjectMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createSubject>>, TError,CreateSubjectMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof createSubject>>, TError,CreateSubjectMutationVariables, TContext> => {\n\nconst mutationKey = getCreateSubjectMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof createSubject>>, CreateSubjectMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return createSubject(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CreateSubjectMutationResult = NonNullable<Awaited<ReturnType<typeof createSubject>>>\n export type CreateSubjectMutationBody = BodyType<SubjectWrite>\n export type CreateSubjectMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CreateSubjectMutationVariables = {data: BodyType<SubjectWrite>}\n\n /**\n * @summary Create Subject\n */\nexport const useCreateSubject = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createSubject>>, TError,CreateSubjectMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof createSubject>>,\n TError,\n CreateSubjectMutationVariables,\n TContext\n > => {\n return useMutation(getCreateSubjectMutationOptions(options), queryClient);\n }\n export const getAmendSubjectUrl = (subjectId: number,) => {\n\n\n\n\n return `/admin/tutoring/subjects/${subjectId}`\n}\n\n/**\n * @summary Amend Subject\n */\nexport const amendSubject = async (subjectId: number,\n subjectWrite: SubjectWrite, options?: Parameters<typeof request>[1]): Promise<SubjectRead> => {\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<SubjectRead>(getAmendSubjectUrl(subjectId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(subjectWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendSubjectMutationKey = () => ['amendSubject'] as const;\n\nexport const getAmendSubjectMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendSubject>>, TError,AmendSubjectMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendSubject>>, TError,AmendSubjectMutationVariables, TContext> => {\n\nconst mutationKey = getAmendSubjectMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendSubject>>, AmendSubjectMutationVariables> = (props) => {\n const {subjectId,data} = props ?? {};\n\n return amendSubject(subjectId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendSubjectMutationResult = NonNullable<Awaited<ReturnType<typeof amendSubject>>>\n export type AmendSubjectMutationBody = BodyType<SubjectWrite>\n export type AmendSubjectMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendSubjectMutationVariables = {subjectId: number;data: BodyType<SubjectWrite>}\n\n /**\n * @summary Amend Subject\n */\nexport const useAmendSubject = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendSubject>>, TError,AmendSubjectMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendSubject>>,\n TError,\n AmendSubjectMutationVariables,\n TContext\n > => {\n return useMutation(getAmendSubjectMutationOptions(options), queryClient);\n }\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-tutoring.js","names":[],"sources":["../../src/react/admin-tutoring/admin-tutoring.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.6.0\n */\nimport {\n useMutation,\n useQuery\n} from '@tanstack/react-query';\nimport type {\n DataTag,\n DefinedInitialDataOptions,\n DefinedUseQueryResult,\n MutationFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n UndefinedInitialDataOptions,\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult\n} from '@tanstack/react-query';\n\nimport type {\n AiDraftRead,\n AiDraftReviewWrite,\n EducationalGoalRead,\n EducationalGoalWrite,\n HTTPExceptionResponse,\n LevelRead,\n LevelWrite,\n ListAllRequestsParams,\n ListExpiringDocumentsParams,\n ListFeedbackParams,\n ListPractitionersParams,\n PractitionerDocumentListRead,\n PractitionerPage,\n PractitionerRead,\n PractitionerWrite,\n SubjectRead,\n SubjectWrite,\n TutoringFeedbackModerationWrite,\n TutoringFeedbackPage,\n TutoringQueuePage,\n TutoringRequestAdminCloseWrite,\n TutoringRequestAdminWrite,\n TutoringRequestStaffRead,\n ValidationErrorResponse\n} from '../../models';\n\nimport { request } from '../../client';\nimport type { ErrorType , BodyType } from '../../client';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n\nconst withQueryKey = <T extends object, K>(query: T, queryKey: K): T & { queryKey: K } => {\n const result = { queryKey } as T & { queryKey: K };\n for (const key of Object.keys(query)) {\n // The explicit queryKey always wins, matching the previous\n // `{ ...query, queryKey }` spread where it was set last.\n if (key === 'queryKey') continue;\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: () => (query as Record<string, unknown>)[key],\n });\n }\n return result;\n};\n\nexport const getListExpiringDocumentsUrl = (params?: ListExpiringDocumentsParams,) => {\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 ? `/admin/tutoring/documents/expiring?${stringifiedParams}` : `/admin/tutoring/documents/expiring`\n}\n\n/**\n * Whose attestation lapses soon, as a query rather than a filing cabinet.\n *\n * An URSSAF *attestation de vigilance* is valid for six months and a lapsed one\n * is a compliance problem. The legacy stores it as a ``text`` column with one\n * ``ursaff_date`` beside it, so this question has no answer there at all.\n * @summary List Expiring Documents\n */\nexport const listExpiringDocuments = async (params?: ListExpiringDocumentsParams, options?: Parameters<typeof request>[1]): Promise<PractitionerDocumentListRead> => {\n\n return request<PractitionerDocumentListRead>(getListExpiringDocumentsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListExpiringDocumentsQueryKey = (params?: ListExpiringDocumentsParams,) => {\n return [\n `/admin/tutoring/documents/expiring`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getListExpiringDocumentsQueryOptions = <TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: ListExpiringDocumentsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListExpiringDocumentsQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listExpiringDocuments>>> = ({ signal }) => listExpiringDocuments(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListExpiringDocumentsQueryResult = NonNullable<Awaited<ReturnType<typeof listExpiringDocuments>>>\nexport type ListExpiringDocumentsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListExpiringDocuments<TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | ListExpiringDocumentsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listExpiringDocuments>>,\n TError,\n Awaited<ReturnType<typeof listExpiringDocuments>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListExpiringDocuments<TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListExpiringDocumentsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listExpiringDocuments>>,\n TError,\n Awaited<ReturnType<typeof listExpiringDocuments>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListExpiringDocuments<TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListExpiringDocumentsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Expiring Documents\n */\n\nexport function useListExpiringDocuments<TData = Awaited<ReturnType<typeof listExpiringDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListExpiringDocumentsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listExpiringDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListExpiringDocumentsQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getListFeedbackUrl = (params?: ListFeedbackParams,) => {\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 ? `/admin/tutoring/feedback?${stringifiedParams}` : `/admin/tutoring/feedback`\n}\n\n/**\n * Ratings, newest first. ``?publishable=false`` is the moderation queue.\n *\n * Tenant-scoped through the request it belongs to: a rating is a child's free\n * text, so it is reachable only by an operator who reaches the tenant.\n * @summary List Feedback\n */\nexport const listFeedback = async (params?: ListFeedbackParams, options?: Parameters<typeof request>[1]): Promise<TutoringFeedbackPage> => {\n\n return request<TutoringFeedbackPage>(getListFeedbackUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListFeedbackQueryKey = (params?: ListFeedbackParams,) => {\n return [\n `/admin/tutoring/feedback`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getListFeedbackQueryOptions = <TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: ListFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListFeedbackQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listFeedback>>> = ({ signal }) => listFeedback(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListFeedbackQueryResult = NonNullable<Awaited<ReturnType<typeof listFeedback>>>\nexport type ListFeedbackQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListFeedback<TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | ListFeedbackParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listFeedback>>,\n TError,\n Awaited<ReturnType<typeof listFeedback>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListFeedback<TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listFeedback>>,\n TError,\n Awaited<ReturnType<typeof listFeedback>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListFeedback<TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Feedback\n */\n\nexport function useListFeedback<TData = Awaited<ReturnType<typeof listFeedback>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListFeedbackParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listFeedback>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListFeedbackQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getModerateFeedbackUrl = (feedbackId: number,) => {\n\n\n\n\n return `/admin/tutoring/feedback/${feedbackId}/moderation`\n}\n\n/**\n * Clear a rating for the public showcase, or withhold it.\n *\n * ``PUT`` on a sub-resource rather than ``PATCH`` on the rating, mirroring\n * ``/admin/reviews/{id}/moderation``: the decision is the resource, and it is\n * idempotent.\n * @summary Moderate Feedback\n */\nexport const moderateFeedback = async (feedbackId: number,\n tutoringFeedbackModerationWrite: TutoringFeedbackModerationWrite, 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>(getModerateFeedbackUrl(feedbackId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringFeedbackModerationWrite)\n }\n);}\n\n\n\n\n\nexport const getModerateFeedbackMutationKey = () => ['moderateFeedback'] as const;\n\nexport const getModerateFeedbackMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof moderateFeedback>>, TError,ModerateFeedbackMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof moderateFeedback>>, TError,ModerateFeedbackMutationVariables, TContext> => {\n\nconst mutationKey = getModerateFeedbackMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof moderateFeedback>>, ModerateFeedbackMutationVariables> = (props) => {\n const {feedbackId,data} = props ?? {};\n\n return moderateFeedback(feedbackId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type ModerateFeedbackMutationResult = NonNullable<Awaited<ReturnType<typeof moderateFeedback>>>\n export type ModerateFeedbackMutationBody = BodyType<TutoringFeedbackModerationWrite>\n export type ModerateFeedbackMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type ModerateFeedbackMutationVariables = {feedbackId: number;data: BodyType<TutoringFeedbackModerationWrite>}\n\n /**\n * @summary Moderate Feedback\n */\nexport const useModerateFeedback = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof moderateFeedback>>, TError,ModerateFeedbackMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof moderateFeedback>>,\n TError,\n ModerateFeedbackMutationVariables,\n TContext\n > => {\n return useMutation(getModerateFeedbackMutationOptions(options), queryClient);\n }\n export const getCreateGoalUrl = () => {\n\n\n\n\n return `/admin/tutoring/goals`\n}\n\n/**\n * @summary Create Goal\n */\nexport const createGoal = async (educationalGoalWrite: EducationalGoalWrite, options?: Parameters<typeof request>[1]): Promise<EducationalGoalRead> => {\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<EducationalGoalRead>(getCreateGoalUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(educationalGoalWrite)\n }\n);}\n\n\n\n\n\nexport const getCreateGoalMutationKey = () => ['createGoal'] as const;\n\nexport const getCreateGoalMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createGoal>>, TError,CreateGoalMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof createGoal>>, TError,CreateGoalMutationVariables, TContext> => {\n\nconst mutationKey = getCreateGoalMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof createGoal>>, CreateGoalMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return createGoal(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CreateGoalMutationResult = NonNullable<Awaited<ReturnType<typeof createGoal>>>\n export type CreateGoalMutationBody = BodyType<EducationalGoalWrite>\n export type CreateGoalMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CreateGoalMutationVariables = {data: BodyType<EducationalGoalWrite>}\n\n /**\n * @summary Create Goal\n */\nexport const useCreateGoal = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createGoal>>, TError,CreateGoalMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof createGoal>>,\n TError,\n CreateGoalMutationVariables,\n TContext\n > => {\n return useMutation(getCreateGoalMutationOptions(options), queryClient);\n }\n export const getAmendGoalUrl = (goalId: number,) => {\n\n\n\n\n return `/admin/tutoring/goals/${goalId}`\n}\n\n/**\n * @summary Amend Goal\n */\nexport const amendGoal = async (goalId: number,\n educationalGoalWrite: EducationalGoalWrite, options?: Parameters<typeof request>[1]): Promise<EducationalGoalRead> => {\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<EducationalGoalRead>(getAmendGoalUrl(goalId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(educationalGoalWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendGoalMutationKey = () => ['amendGoal'] as const;\n\nexport const getAmendGoalMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendGoal>>, TError,AmendGoalMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendGoal>>, TError,AmendGoalMutationVariables, TContext> => {\n\nconst mutationKey = getAmendGoalMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendGoal>>, AmendGoalMutationVariables> = (props) => {\n const {goalId,data} = props ?? {};\n\n return amendGoal(goalId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendGoalMutationResult = NonNullable<Awaited<ReturnType<typeof amendGoal>>>\n export type AmendGoalMutationBody = BodyType<EducationalGoalWrite>\n export type AmendGoalMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendGoalMutationVariables = {goalId: number;data: BodyType<EducationalGoalWrite>}\n\n /**\n * @summary Amend Goal\n */\nexport const useAmendGoal = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendGoal>>, TError,AmendGoalMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendGoal>>,\n TError,\n AmendGoalMutationVariables,\n TContext\n > => {\n return useMutation(getAmendGoalMutationOptions(options), queryClient);\n }\n export const getCreateLevelUrl = () => {\n\n\n\n\n return `/admin/tutoring/levels`\n}\n\n/**\n * @summary Create Level\n */\nexport const createLevel = async (levelWrite: LevelWrite, options?: Parameters<typeof request>[1]): Promise<LevelRead> => {\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<LevelRead>(getCreateLevelUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(levelWrite)\n }\n);}\n\n\n\n\n\nexport const getCreateLevelMutationKey = () => ['createLevel'] as const;\n\nexport const getCreateLevelMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createLevel>>, TError,CreateLevelMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof createLevel>>, TError,CreateLevelMutationVariables, TContext> => {\n\nconst mutationKey = getCreateLevelMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof createLevel>>, CreateLevelMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return createLevel(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CreateLevelMutationResult = NonNullable<Awaited<ReturnType<typeof createLevel>>>\n export type CreateLevelMutationBody = BodyType<LevelWrite>\n export type CreateLevelMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CreateLevelMutationVariables = {data: BodyType<LevelWrite>}\n\n /**\n * @summary Create Level\n */\nexport const useCreateLevel = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createLevel>>, TError,CreateLevelMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof createLevel>>,\n TError,\n CreateLevelMutationVariables,\n TContext\n > => {\n return useMutation(getCreateLevelMutationOptions(options), queryClient);\n }\n export const getAmendLevelUrl = (levelId: number,) => {\n\n\n\n\n return `/admin/tutoring/levels/${levelId}`\n}\n\n/**\n * @summary Amend Level\n */\nexport const amendLevel = async (levelId: number,\n levelWrite: LevelWrite, options?: Parameters<typeof request>[1]): Promise<LevelRead> => {\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<LevelRead>(getAmendLevelUrl(levelId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(levelWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendLevelMutationKey = () => ['amendLevel'] as const;\n\nexport const getAmendLevelMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendLevel>>, TError,AmendLevelMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendLevel>>, TError,AmendLevelMutationVariables, TContext> => {\n\nconst mutationKey = getAmendLevelMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendLevel>>, AmendLevelMutationVariables> = (props) => {\n const {levelId,data} = props ?? {};\n\n return amendLevel(levelId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendLevelMutationResult = NonNullable<Awaited<ReturnType<typeof amendLevel>>>\n export type AmendLevelMutationBody = BodyType<LevelWrite>\n export type AmendLevelMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendLevelMutationVariables = {levelId: number;data: BodyType<LevelWrite>}\n\n /**\n * @summary Amend Level\n */\nexport const useAmendLevel = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendLevel>>, TError,AmendLevelMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendLevel>>,\n TError,\n AmendLevelMutationVariables,\n TContext\n > => {\n return useMutation(getAmendLevelMutationOptions(options), queryClient);\n }\n export const getListPractitionersUrl = (params?: ListPractitionersParams,) => {\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 ? `/admin/tutoring/practitioners?${stringifiedParams}` : `/admin/tutoring/practitioners`\n}\n\n/**\n * Who can take work, filtered the way the question is actually asked.\n *\n * ``role``, ``capability``, ``subjectId`` and ``levelId`` together answer \"who\n * can take *this* request\", which is the only thing anybody wants from this\n * list. The legacy answers it with a different screen per role — nine of them,\n * plus two more for pelite.\n * @summary List Practitioners\n */\nexport const listPractitioners = async (params?: ListPractitionersParams, options?: Parameters<typeof request>[1]): Promise<PractitionerPage> => {\n\n return request<PractitionerPage>(getListPractitionersUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListPractitionersQueryKey = (params?: ListPractitionersParams,) => {\n return [\n `/admin/tutoring/practitioners`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getListPractitionersQueryOptions = <TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: ListPractitionersParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListPractitionersQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listPractitioners>>> = ({ signal }) => listPractitioners(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListPractitionersQueryResult = NonNullable<Awaited<ReturnType<typeof listPractitioners>>>\nexport type ListPractitionersQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListPractitioners<TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | ListPractitionersParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listPractitioners>>,\n TError,\n Awaited<ReturnType<typeof listPractitioners>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListPractitioners<TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListPractitionersParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listPractitioners>>,\n TError,\n Awaited<ReturnType<typeof listPractitioners>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListPractitioners<TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListPractitionersParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Practitioners\n */\n\nexport function useListPractitioners<TData = Awaited<ReturnType<typeof listPractitioners>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListPractitionersParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitioners>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListPractitionersQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getAmendPractitionerUrl = (userId: number,) => {\n\n\n\n\n return `/admin/tutoring/practitioners/${userId}`\n}\n\n/**\n * Availability, capabilities and competencies in one call.\n *\n * Competencies are replaced wholesale rather than diffed: the screen shows a\n * checklist and submits it. Absent means unchanged; an empty list means none,\n * which is a real instruction and has to be distinguishable from absence —\n * hence ``exclude_unset``.\n * @summary Amend Practitioner\n */\nexport const amendPractitioner = async (userId: number,\n practitionerWrite: PractitionerWrite, options?: Parameters<typeof request>[1]): Promise<PractitionerRead> => {\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<PractitionerRead>(getAmendPractitionerUrl(userId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(practitionerWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendPractitionerMutationKey = () => ['amendPractitioner'] as const;\n\nexport const getAmendPractitionerMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendPractitioner>>, TError,AmendPractitionerMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendPractitioner>>, TError,AmendPractitionerMutationVariables, TContext> => {\n\nconst mutationKey = getAmendPractitionerMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendPractitioner>>, AmendPractitionerMutationVariables> = (props) => {\n const {userId,data} = props ?? {};\n\n return amendPractitioner(userId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendPractitionerMutationResult = NonNullable<Awaited<ReturnType<typeof amendPractitioner>>>\n export type AmendPractitionerMutationBody = BodyType<PractitionerWrite>\n export type AmendPractitionerMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendPractitionerMutationVariables = {userId: number;data: BodyType<PractitionerWrite>}\n\n /**\n * @summary Amend Practitioner\n */\nexport const useAmendPractitioner = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendPractitioner>>, TError,AmendPractitionerMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendPractitioner>>,\n TError,\n AmendPractitionerMutationVariables,\n TContext\n > => {\n return useMutation(getAmendPractitionerMutationOptions(options), queryClient);\n }\n export const getListPractitionerDocumentsUrl = (userId: number,) => {\n\n\n\n\n return `/admin/tutoring/practitioners/${userId}/documents`\n}\n\n/**\n * One practitioner's compliance paperwork. Metadata only, never the file.\n * @summary List Practitioner Documents\n */\nexport const listPractitionerDocuments = async (userId: number, options?: Parameters<typeof request>[1]): Promise<PractitionerDocumentListRead> => {\n\n return request<PractitionerDocumentListRead>(getListPractitionerDocumentsUrl(userId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListPractitionerDocumentsQueryKey = (userId: number,) => {\n return [\n `/admin/tutoring/practitioners/${userId}/documents`\n ] as const;\n }\n\n\nexport const getListPractitionerDocumentsQueryOptions = <TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListPractitionerDocumentsQueryKey(userId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listPractitionerDocuments>>> = ({ signal }) => listPractitionerDocuments(userId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: userId !== null && userId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListPractitionerDocumentsQueryResult = NonNullable<Awaited<ReturnType<typeof listPractitionerDocuments>>>\nexport type ListPractitionerDocumentsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListPractitionerDocuments<TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listPractitionerDocuments>>,\n TError,\n Awaited<ReturnType<typeof listPractitionerDocuments>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListPractitionerDocuments<TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listPractitionerDocuments>>,\n TError,\n Awaited<ReturnType<typeof listPractitionerDocuments>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListPractitionerDocuments<TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Practitioner Documents\n */\n\nexport function useListPractitionerDocuments<TData = Awaited<ReturnType<typeof listPractitionerDocuments>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listPractitionerDocuments>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListPractitionerDocumentsQueryOptions(userId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getListAllRequestsUrl = (params?: ListAllRequestsParams,) => {\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 ? `/admin/tutoring/requests?${stringifiedParams}` : `/admin/tutoring/requests`\n}\n\n/**\n * Every request in the tenants this operator reaches.\n *\n * Returns the queue shape rather than the staff shape on purpose: this is the\n * list screen, and a list of five hundred requests should not carry five hundred\n * statements. The staff detail shape is on the single-request route.\n * @summary List All Requests\n */\nexport const listAllRequests = async (params?: ListAllRequestsParams, options?: Parameters<typeof request>[1]): Promise<TutoringQueuePage> => {\n\n return request<TutoringQueuePage>(getListAllRequestsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListAllRequestsQueryKey = (params?: ListAllRequestsParams,) => {\n return [\n `/admin/tutoring/requests`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getListAllRequestsQueryOptions = <TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: ListAllRequestsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListAllRequestsQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listAllRequests>>> = ({ signal }) => listAllRequests(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListAllRequestsQueryResult = NonNullable<Awaited<ReturnType<typeof listAllRequests>>>\nexport type ListAllRequestsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListAllRequests<TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | ListAllRequestsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listAllRequests>>,\n TError,\n Awaited<ReturnType<typeof listAllRequests>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListAllRequests<TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListAllRequestsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listAllRequests>>,\n TError,\n Awaited<ReturnType<typeof listAllRequests>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListAllRequests<TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListAllRequestsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List All Requests\n */\n\nexport function useListAllRequests<TData = Awaited<ReturnType<typeof listAllRequests>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: ListAllRequestsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listAllRequests>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListAllRequestsQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getReadRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}`\n}\n\n/**\n * One request in full, including provenance and the staff note.\n * @summary Read Request\n */\nexport const readRequest = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<TutoringRequestStaffRead> => {\n\n return request<TutoringRequestStaffRead>(getReadRequestUrl(requestId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getReadRequestQueryKey = (requestId: number,) => {\n return [\n `/admin/tutoring/requests/${requestId}`\n ] as const;\n }\n\n\nexport const getReadRequestQueryOptions = <TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getReadRequestQueryKey(requestId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof readRequest>>> = ({ signal }) => readRequest(requestId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: requestId !== null && requestId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ReadRequestQueryResult = NonNullable<Awaited<ReturnType<typeof readRequest>>>\nexport type ReadRequestQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useReadRequest<TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof readRequest>>,\n TError,\n Awaited<ReturnType<typeof readRequest>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadRequest<TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof readRequest>>,\n TError,\n Awaited<ReturnType<typeof readRequest>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadRequest<TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read Request\n */\n\nexport function useReadRequest<TData = Awaited<ReturnType<typeof readRequest>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readRequest>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getReadRequestQueryOptions(requestId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getAmendRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}`\n}\n\n/**\n * Reassign a stalled request, and say why, in one call.\n *\n * Partial: only fields present in the body are applied, so a client that knows\n * about one of them cannot blank the rest. Reassignment does **not** move the\n * status — a request routed to somebody else is still dispatched, and pretending\n * otherwise would corrupt the timestamp ladder every report reads.\n * @summary Amend Request\n */\nexport const amendRequest = async (requestId: number,\n tutoringRequestAdminWrite: TutoringRequestAdminWrite, options?: Parameters<typeof request>[1]): Promise<TutoringRequestStaffRead> => {\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<TutoringRequestStaffRead>(getAmendRequestUrl(requestId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringRequestAdminWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendRequestMutationKey = () => ['amendRequest'] as const;\n\nexport const getAmendRequestMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendRequest>>, TError,AmendRequestMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendRequest>>, TError,AmendRequestMutationVariables, TContext> => {\n\nconst mutationKey = getAmendRequestMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendRequest>>, AmendRequestMutationVariables> = (props) => {\n const {requestId,data} = props ?? {};\n\n return amendRequest(requestId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendRequestMutationResult = NonNullable<Awaited<ReturnType<typeof amendRequest>>>\n export type AmendRequestMutationBody = BodyType<TutoringRequestAdminWrite>\n export type AmendRequestMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendRequestMutationVariables = {requestId: number;data: BodyType<TutoringRequestAdminWrite>}\n\n /**\n * @summary Amend Request\n */\nexport const useAmendRequest = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendRequest>>, TError,AmendRequestMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendRequest>>,\n TError,\n AmendRequestMutationVariables,\n TContext\n > => {\n return useMutation(getAmendRequestMutationOptions(options), queryClient);\n }\n export const getAdminCloseRequestUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}/close`\n}\n\n/**\n * Close a request from the back office. Goes through the state machine.\n * @summary Admin Close Request\n */\nexport const adminCloseRequest = async (requestId: number,\n tutoringRequestAdminCloseWrite: TutoringRequestAdminCloseWrite, 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>(getAdminCloseRequestUrl(requestId),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tutoringRequestAdminCloseWrite)\n }\n);}\n\n\n\n\n\nexport const getAdminCloseRequestMutationKey = () => ['adminCloseRequest'] as const;\n\nexport const getAdminCloseRequestMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof adminCloseRequest>>, TError,AdminCloseRequestMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof adminCloseRequest>>, TError,AdminCloseRequestMutationVariables, TContext> => {\n\nconst mutationKey = getAdminCloseRequestMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof adminCloseRequest>>, AdminCloseRequestMutationVariables> = (props) => {\n const {requestId,data} = props ?? {};\n\n return adminCloseRequest(requestId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AdminCloseRequestMutationResult = NonNullable<Awaited<ReturnType<typeof adminCloseRequest>>>\n export type AdminCloseRequestMutationBody = BodyType<TutoringRequestAdminCloseWrite>\n export type AdminCloseRequestMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AdminCloseRequestMutationVariables = {requestId: number;data: BodyType<TutoringRequestAdminCloseWrite>}\n\n /**\n * @summary Admin Close Request\n */\nexport const useAdminCloseRequest = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof adminCloseRequest>>, TError,AdminCloseRequestMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof adminCloseRequest>>,\n TError,\n AdminCloseRequestMutationVariables,\n TContext\n > => {\n return useMutation(getAdminCloseRequestMutationOptions(options), queryClient);\n }\n export const getReadDraftUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}/draft`\n}\n\n/**\n * The latest draft for one request.\n *\n * ``404`` when there is none, which is the ordinary case: drafting is off by\n * default, and even switched on it produces nothing when the provider is\n * unreachable. A client must treat a missing draft as normal rather than as\n * an error — the request is answerable by a person either way.\n *\n * Only the latest. Re-drafting is not a feature yet, and returning a list\n * would promise one.\n * @summary Read Draft\n */\nexport const readDraft = async (requestId: number, options?: Parameters<typeof request>[1]): Promise<AiDraftRead> => {\n\n return request<AiDraftRead>(getReadDraftUrl(requestId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getReadDraftQueryKey = (requestId: number,) => {\n return [\n `/admin/tutoring/requests/${requestId}/draft`\n ] as const;\n }\n\n\nexport const getReadDraftQueryOptions = <TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getReadDraftQueryKey(requestId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof readDraft>>> = ({ signal }) => readDraft(requestId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: requestId !== null && requestId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ReadDraftQueryResult = NonNullable<Awaited<ReturnType<typeof readDraft>>>\nexport type ReadDraftQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useReadDraft<TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof readDraft>>,\n TError,\n Awaited<ReturnType<typeof readDraft>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadDraft<TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof readDraft>>,\n TError,\n Awaited<ReturnType<typeof readDraft>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadDraft<TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read Draft\n */\n\nexport function useReadDraft<TData = Awaited<ReturnType<typeof readDraft>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n requestId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readDraft>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getReadDraftQueryOptions(requestId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getReviewDraftUrl = (requestId: number,) => {\n\n\n\n\n return `/admin/tutoring/requests/${requestId}/draft/review`\n}\n\n/**\n * Score a draft, and optionally hand the request to a person.\n *\n * ``escalate`` stamps ``escalatedAt`` — the legacy's ``ai_to_live``. It is\n * taken from the body rather than inferred from a low ``vote``: a reviewer may\n * rate a draft poorly and still keep it as a starting point, or rate it well\n * and escalate anyway because the pupil needs a conversation.\n *\n * Re-reviewing overwrites the score. Escalation does not un-stamp, because\n * handing a request to a person is not a thing that gets taken back.\n *\n * The request's own status is untouched. A draft is not a state of the\n * request, and moving it here would corrupt the timestamp ladder the reports\n * read.\n * @summary Review Draft\n */\nexport const reviewDraft = async (requestId: number,\n aiDraftReviewWrite: AiDraftReviewWrite, options?: Parameters<typeof request>[1]): Promise<AiDraftRead> => {\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<AiDraftRead>(getReviewDraftUrl(requestId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(aiDraftReviewWrite)\n }\n);}\n\n\n\n\n\nexport const getReviewDraftMutationKey = () => ['reviewDraft'] as const;\n\nexport const getReviewDraftMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof reviewDraft>>, TError,ReviewDraftMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof reviewDraft>>, TError,ReviewDraftMutationVariables, TContext> => {\n\nconst mutationKey = getReviewDraftMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof reviewDraft>>, ReviewDraftMutationVariables> = (props) => {\n const {requestId,data} = props ?? {};\n\n return reviewDraft(requestId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type ReviewDraftMutationResult = NonNullable<Awaited<ReturnType<typeof reviewDraft>>>\n export type ReviewDraftMutationBody = BodyType<AiDraftReviewWrite>\n export type ReviewDraftMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type ReviewDraftMutationVariables = {requestId: number;data: BodyType<AiDraftReviewWrite>}\n\n /**\n * @summary Review Draft\n */\nexport const useReviewDraft = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof reviewDraft>>, TError,ReviewDraftMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof reviewDraft>>,\n TError,\n ReviewDraftMutationVariables,\n TContext\n > => {\n return useMutation(getReviewDraftMutationOptions(options), queryClient);\n }\n export const getCreateSubjectUrl = () => {\n\n\n\n\n return `/admin/tutoring/subjects`\n}\n\n/**\n * Add a subject. Reference data, so ADMIN rather than SUPPORT.\n * @summary Create Subject\n */\nexport const createSubject = async (subjectWrite: SubjectWrite, options?: Parameters<typeof request>[1]): Promise<SubjectRead> => {\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<SubjectRead>(getCreateSubjectUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(subjectWrite)\n }\n);}\n\n\n\n\n\nexport const getCreateSubjectMutationKey = () => ['createSubject'] as const;\n\nexport const getCreateSubjectMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createSubject>>, TError,CreateSubjectMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof createSubject>>, TError,CreateSubjectMutationVariables, TContext> => {\n\nconst mutationKey = getCreateSubjectMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof createSubject>>, CreateSubjectMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return createSubject(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CreateSubjectMutationResult = NonNullable<Awaited<ReturnType<typeof createSubject>>>\n export type CreateSubjectMutationBody = BodyType<SubjectWrite>\n export type CreateSubjectMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CreateSubjectMutationVariables = {data: BodyType<SubjectWrite>}\n\n /**\n * @summary Create Subject\n */\nexport const useCreateSubject = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createSubject>>, TError,CreateSubjectMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof createSubject>>,\n TError,\n CreateSubjectMutationVariables,\n TContext\n > => {\n return useMutation(getCreateSubjectMutationOptions(options), queryClient);\n }\n export const getAmendSubjectUrl = (subjectId: number,) => {\n\n\n\n\n return `/admin/tutoring/subjects/${subjectId}`\n}\n\n/**\n * @summary Amend Subject\n */\nexport const amendSubject = async (subjectId: number,\n subjectWrite: SubjectWrite, options?: Parameters<typeof request>[1]): Promise<SubjectRead> => {\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<SubjectRead>(getAmendSubjectUrl(subjectId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(subjectWrite)\n }\n);}\n\n\n\n\n\nexport const getAmendSubjectMutationKey = () => ['amendSubject'] as const;\n\nexport const getAmendSubjectMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendSubject>>, TError,AmendSubjectMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof amendSubject>>, TError,AmendSubjectMutationVariables, TContext> => {\n\nconst mutationKey = getAmendSubjectMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof amendSubject>>, AmendSubjectMutationVariables> = (props) => {\n const {subjectId,data} = props ?? {};\n\n return amendSubject(subjectId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type AmendSubjectMutationResult = NonNullable<Awaited<ReturnType<typeof amendSubject>>>\n export type AmendSubjectMutationBody = BodyType<SubjectWrite>\n export type AmendSubjectMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type AmendSubjectMutationVariables = {subjectId: number;data: BodyType<SubjectWrite>}\n\n /**\n * @summary Amend Subject\n */\nexport const useAmendSubject = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof amendSubject>>, TError,AmendSubjectMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof amendSubject>>,\n TError,\n AmendSubjectMutationVariables,\n TContext\n > => {\n return useMutation(getAmendSubjectMutationOptions(options), queryClient);\n }\n"],"mappings":"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"}
|
package/dist/react/auth.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
2
|
+
import { H as SessionRead, Mi as AuthorizationRead, Ni as AuthorizationParams, di as CodeExchangeWrite, et as RefreshWrite, hn as LogoutWrite, pn as MeRead, si as CredentialsWrite, t as ValidationErrorResponse, wr as HTTPExceptionResponse } from "../chunks/index.js";
|
|
3
3
|
import { a as ErrorType, c as request, n as BodyType } from "../chunks/client.js";
|
|
4
4
|
import { DataTag, DefinedInitialDataOptions, DefinedUseQueryResult, QueryClient, QueryKey, UndefinedInitialDataOptions, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
|
|
5
5
|
//#region src/react/auth/auth.d.ts
|
|
@@ -13,6 +13,10 @@ export declare const getAuthorizationUrl: (params: AuthorizationParams) => strin
|
|
|
13
13
|
* endpoint contributes the one thing the caller cannot know — which identity
|
|
14
14
|
* provider to route to — and refuses an unsafe ``redirect_uri``.
|
|
15
15
|
*
|
|
16
|
+
* ``client_id`` defaults to ``mozaik-web``. Native apps select ``mozaik-mobile``
|
|
17
|
+
* and keep that client ID for code exchange, refresh and logout. Only these
|
|
18
|
+
* public clients are supported; each has its own callback allow-list.
|
|
19
|
+
*
|
|
16
20
|
* ``S256`` is hardcoded. ``plain`` is a valid PKCE method and provides no
|
|
17
21
|
* protection, so making it selectable would only ever be used by mistake.
|
|
18
22
|
*
|
|
@@ -93,8 +97,8 @@ export declare const getDeleteSessionUrl: () => string;
|
|
|
93
97
|
/**
|
|
94
98
|
* Sign out, revoking the refresh token at the broker.
|
|
95
99
|
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
100
|
+
* For a supported client, always 204. There is nothing useful for the caller
|
|
101
|
+
* to do about an unreachable broker — it is
|
|
98
102
|
* discarding its tokens either way. The failure is logged, not returned.
|
|
99
103
|
*
|
|
100
104
|
* The access token stays valid until it expires. That is inherent to verifying
|
package/dist/react/auth.js
CHANGED
|
@@ -7,7 +7,7 @@ import { useMutation, useQuery } from "@tanstack/react-query";
|
|
|
7
7
|
* Do not edit manually.
|
|
8
8
|
* Mozaik backend
|
|
9
9
|
* Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.
|
|
10
|
-
* OpenAPI spec version: 0.
|
|
10
|
+
* OpenAPI spec version: 0.6.0
|
|
11
11
|
*/
|
|
12
12
|
const withQueryKey = (query, queryKey) => {
|
|
13
13
|
const result = { queryKey };
|
|
@@ -37,6 +37,10 @@ const getAuthorizationUrl = (params) => {
|
|
|
37
37
|
* endpoint contributes the one thing the caller cannot know — which identity
|
|
38
38
|
* provider to route to — and refuses an unsafe ``redirect_uri``.
|
|
39
39
|
*
|
|
40
|
+
* ``client_id`` defaults to ``mozaik-web``. Native apps select ``mozaik-mobile``
|
|
41
|
+
* and keep that client ID for code exchange, refresh and logout. Only these
|
|
42
|
+
* public clients are supported; each has its own callback allow-list.
|
|
43
|
+
*
|
|
40
44
|
* ``S256`` is hardcoded. ``plain`` is a valid PKCE method and provides no
|
|
41
45
|
* protection, so making it selectable would only ever be used by mistake.
|
|
42
46
|
*
|
|
@@ -125,8 +129,8 @@ const getDeleteSessionUrl = () => {
|
|
|
125
129
|
/**
|
|
126
130
|
* Sign out, revoking the refresh token at the broker.
|
|
127
131
|
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
132
|
+
* For a supported client, always 204. There is nothing useful for the caller
|
|
133
|
+
* to do about an unreachable broker — it is
|
|
130
134
|
* discarding its tokens either way. The failure is logged, not returned.
|
|
131
135
|
*
|
|
132
136
|
* The access token stays valid until it expires. That is inherent to verifying
|