@learnorama/mozaik-sdk 0.1.0-staging.11.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 +94 -0
- package/dist/api/account.d.ts +75 -0
- package/dist/api/account.js +117 -0
- package/dist/api/account.js.map +1 -0
- package/dist/api/admin-catalogue.d.ts +68 -0
- package/dist/api/admin-catalogue.js +155 -0
- package/dist/api/admin-catalogue.js.map +1 -0
- package/dist/api/admin-consumption.d.ts +27 -0
- package/dist/api/admin-consumption.js +55 -0
- package/dist/api/admin-consumption.js.map +1 -0
- package/dist/api/admin-licenses.d.ts +21 -0
- package/dist/api/admin-licenses.js +34 -0
- package/dist/api/admin-licenses.js.map +1 -0
- package/dist/api/admin-patrons.d.ts +36 -0
- package/dist/api/admin-patrons.js +76 -0
- package/dist/api/admin-patrons.js.map +1 -0
- package/dist/api/admin-reviews.d.ts +30 -0
- package/dist/api/admin-reviews.js +63 -0
- package/dist/api/admin-reviews.js.map +1 -0
- package/dist/api/admin-roles.d.ts +34 -0
- package/dist/api/admin-roles.js +62 -0
- package/dist/api/admin-roles.js.map +1 -0
- package/dist/api/admin-support.d.ts +68 -0
- package/dist/api/admin-support.js +116 -0
- package/dist/api/admin-support.js.map +1 -0
- package/dist/api/admin-tenants.d.ts +33 -0
- package/dist/api/admin-tenants.js +68 -0
- package/dist/api/admin-tenants.js.map +1 -0
- package/dist/api/admin-tutoring.d.ts +159 -0
- package/dist/api/admin-tutoring.js +455 -0
- package/dist/api/admin-tutoring.js.map +1 -0
- package/dist/api/auth.d.ts +92 -0
- package/dist/api/auth.js +192 -0
- package/dist/api/auth.js.map +1 -0
- package/dist/api/biblio-catalogue.d.ts +122 -0
- package/dist/api/biblio-catalogue.js +223 -0
- package/dist/api/biblio-catalogue.js.map +1 -0
- package/dist/api/biblio-home.d.ts +18 -0
- package/dist/api/biblio-home.js +31 -0
- package/dist/api/biblio-home.js.map +1 -0
- package/dist/api/biblio-library.d.ts +94 -0
- package/dist/api/biblio-library.js +187 -0
- package/dist/api/biblio-library.js.map +1 -0
- package/dist/api/biblio-nextory.d.ts +43 -0
- package/dist/api/biblio-nextory.js +65 -0
- package/dist/api/biblio-nextory.js.map +1 -0
- package/dist/api/biblio-press.d.ts +38 -0
- package/dist/api/biblio-press.js +70 -0
- package/dist/api/biblio-press.js.map +1 -0
- package/dist/api/biblio-search.d.ts +17 -0
- package/dist/api/biblio-search.js +30 -0
- package/dist/api/biblio-search.js.map +1 -0
- package/dist/api/biblio-telemetry.d.ts +28 -0
- package/dist/api/biblio-telemetry.js +49 -0
- package/dist/api/biblio-telemetry.js.map +1 -0
- package/dist/api/consumption.d.ts +30 -0
- package/dist/api/consumption.js +45 -0
- package/dist/api/consumption.js.map +1 -0
- package/dist/api/cvs-app.d.ts +39 -0
- package/dist/api/cvs-app.js +72 -0
- package/dist/api/cvs-app.js.map +1 -0
- package/dist/api/cvs-documents.d.ts +106 -0
- package/dist/api/cvs-documents.js +208 -0
- package/dist/api/cvs-documents.js.map +1 -0
- package/dist/api/cvs-favorites.d.ts +53 -0
- package/dist/api/cvs-favorites.js +82 -0
- package/dist/api/cvs-favorites.js.map +1 -0
- package/dist/api/cvs-loans.d.ts +59 -0
- package/dist/api/cvs-loans.js +106 -0
- package/dist/api/cvs-loans.js.map +1 -0
- package/dist/api/cvs-streaming.d.ts +40 -0
- package/dist/api/cvs-streaming.js +68 -0
- package/dist/api/cvs-streaming.js.map +1 -0
- package/dist/api/index.d.ts +34 -0
- package/dist/api/index.js +34 -0
- package/dist/api/partner-catalogue.d.ts +77 -0
- package/dist/api/partner-catalogue.js +125 -0
- package/dist/api/partner-catalogue.js.map +1 -0
- package/dist/api/partner-reader.d.ts +56 -0
- package/dist/api/partner-reader.js +103 -0
- package/dist/api/partner-reader.js.map +1 -0
- package/dist/api/profiles.d.ts +64 -0
- package/dist/api/profiles.js +126 -0
- package/dist/api/profiles.js.map +1 -0
- package/dist/api/tutoring-catalogue.d.ts +32 -0
- package/dist/api/tutoring-catalogue.js +59 -0
- package/dist/api/tutoring-catalogue.js.map +1 -0
- package/dist/api/tutoring-chat.d.ts +31 -0
- package/dist/api/tutoring-chat.js +71 -0
- package/dist/api/tutoring-chat.js.map +1 -0
- package/dist/api/tutoring-dispatch.d.ts +37 -0
- package/dist/api/tutoring-dispatch.js +83 -0
- package/dist/api/tutoring-dispatch.js.map +1 -0
- package/dist/api/tutoring-practitioner.d.ts +55 -0
- package/dist/api/tutoring-practitioner.js +110 -0
- package/dist/api/tutoring-practitioner.js.map +1 -0
- package/dist/api/tutoring-requests.d.ts +86 -0
- package/dist/api/tutoring-requests.js +176 -0
- package/dist/api/tutoring-requests.js.map +1 -0
- package/dist/chunks/client.d.ts +28 -0
- package/dist/chunks/client.js +61 -0
- package/dist/chunks/client.js.map +1 -0
- package/dist/chunks/index.d.ts +4566 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/models.d.ts +3 -0
- package/dist/models.js +175 -0
- package/dist/models.js.map +1 -0
- package/dist/react/account.d.ts +163 -0
- package/dist/react/account.js +240 -0
- package/dist/react/account.js.map +1 -0
- package/dist/react/admin-catalogue.d.ts +196 -0
- package/dist/react/admin-catalogue.js +336 -0
- package/dist/react/admin-catalogue.js.map +1 -0
- package/dist/react/admin-consumption.d.ts +75 -0
- package/dist/react/admin-consumption.js +127 -0
- package/dist/react/admin-consumption.js.map +1 -0
- package/dist/react/admin-licenses.d.ts +50 -0
- package/dist/react/admin-licenses.js +78 -0
- package/dist/react/admin-licenses.js.map +1 -0
- package/dist/react/admin-patrons.d.ts +111 -0
- package/dist/react/admin-patrons.js +173 -0
- package/dist/react/admin-patrons.js.map +1 -0
- package/dist/react/admin-reviews.d.ts +78 -0
- package/dist/react/admin-reviews.js +135 -0
- package/dist/react/admin-reviews.js.map +1 -0
- package/dist/react/admin-roles.d.ts +82 -0
- package/dist/react/admin-roles.js +135 -0
- package/dist/react/admin-roles.js.map +1 -0
- package/dist/react/admin-support.d.ts +123 -0
- package/dist/react/admin-support.js +208 -0
- package/dist/react/admin-support.js.map +1 -0
- package/dist/react/admin-tenants.d.ts +108 -0
- package/dist/react/admin-tenants.js +165 -0
- package/dist/react/admin-tenants.js.map +1 -0
- package/dist/react/admin-tutoring.d.ts +556 -0
- package/dist/react/admin-tutoring.js +954 -0
- package/dist/react/admin-tutoring.js.map +1 -0
- package/dist/react/auth.d.ts +220 -0
- package/dist/react/auth.js +372 -0
- package/dist/react/auth.js.map +1 -0
- package/dist/react/biblio-catalogue.d.ts +374 -0
- package/dist/react/biblio-catalogue.js +498 -0
- package/dist/react/biblio-catalogue.js.map +1 -0
- package/dist/react/biblio-home.d.ts +47 -0
- package/dist/react/biblio-home.js +75 -0
- package/dist/react/biblio-home.js.map +1 -0
- package/dist/react/biblio-library.d.ts +285 -0
- package/dist/react/biblio-library.js +411 -0
- package/dist/react/biblio-library.js.map +1 -0
- package/dist/react/biblio-nextory.d.ts +100 -0
- package/dist/react/biblio-nextory.js +163 -0
- package/dist/react/biblio-nextory.js.map +1 -0
- package/dist/react/biblio-press.d.ts +121 -0
- package/dist/react/biblio-press.js +163 -0
- package/dist/react/biblio-press.js.map +1 -0
- package/dist/react/biblio-search.d.ts +46 -0
- package/dist/react/biblio-search.js +74 -0
- package/dist/react/biblio-search.js.map +1 -0
- package/dist/react/biblio-telemetry.d.ts +49 -0
- package/dist/react/biblio-telemetry.js +85 -0
- package/dist/react/biblio-telemetry.js.map +1 -0
- package/dist/react/consumption.d.ts +66 -0
- package/dist/react/consumption.js +109 -0
- package/dist/react/consumption.js.map +1 -0
- package/dist/react/cvs-app.d.ts +86 -0
- package/dist/react/cvs-app.js +144 -0
- package/dist/react/cvs-app.js.map +1 -0
- package/dist/react/cvs-documents.d.ts +254 -0
- package/dist/react/cvs-documents.js +418 -0
- package/dist/react/cvs-documents.js.map +1 -0
- package/dist/react/cvs-favorites.d.ts +143 -0
- package/dist/react/cvs-favorites.js +206 -0
- package/dist/react/cvs-favorites.js.map +1 -0
- package/dist/react/cvs-loans.d.ts +140 -0
- package/dist/react/cvs-loans.js +234 -0
- package/dist/react/cvs-loans.js.map +1 -0
- package/dist/react/cvs-streaming.d.ts +87 -0
- package/dist/react/cvs-streaming.js +141 -0
- package/dist/react/cvs-streaming.js.map +1 -0
- package/dist/react/index.d.ts +34 -0
- package/dist/react/index.js +34 -0
- package/dist/react/partner-catalogue.d.ts +223 -0
- package/dist/react/partner-catalogue.js +301 -0
- package/dist/react/partner-catalogue.js.map +1 -0
- package/dist/react/partner-reader.d.ts +159 -0
- package/dist/react/partner-reader.js +226 -0
- package/dist/react/partner-reader.js.map +1 -0
- package/dist/react/profiles.d.ts +174 -0
- package/dist/react/profiles.js +279 -0
- package/dist/react/profiles.js.map +1 -0
- package/dist/react/tutoring-catalogue.d.ts +115 -0
- package/dist/react/tutoring-catalogue.js +151 -0
- package/dist/react/tutoring-catalogue.js.map +1 -0
- package/dist/react/tutoring-chat.d.ts +96 -0
- package/dist/react/tutoring-chat.js +172 -0
- package/dist/react/tutoring-chat.js.map +1 -0
- package/dist/react/tutoring-dispatch.d.ts +102 -0
- package/dist/react/tutoring-dispatch.js +183 -0
- package/dist/react/tutoring-dispatch.js.map +1 -0
- package/dist/react/tutoring-practitioner.d.ts +129 -0
- package/dist/react/tutoring-practitioner.js +230 -0
- package/dist/react/tutoring-practitioner.js.map +1 -0
- package/dist/react/tutoring-requests.d.ts +233 -0
- package/dist/react/tutoring-requests.js +385 -0
- package/dist/react/tutoring-requests.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { r as request } from "../chunks/client.js";
|
|
3
|
+
import { useMutation } from "@tanstack/react-query";
|
|
4
|
+
//#region src/react/admin-support/admin-support.ts
|
|
5
|
+
/**
|
|
6
|
+
* Generated by orval 🍺
|
|
7
|
+
* Do not edit manually.
|
|
8
|
+
* Mozaik backend
|
|
9
|
+
* Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.
|
|
10
|
+
* OpenAPI spec version: 0.1.0
|
|
11
|
+
*/
|
|
12
|
+
const getCreateDemoUserUrl = () => {
|
|
13
|
+
return `/admin/demo-users`;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Create, or return, a demonstration account for an establishment (E57).
|
|
17
|
+
*
|
|
18
|
+
* ``RequireAdmin`` rather than ``RequireStaff``: this creates an account inside
|
|
19
|
+
* a customer's tenant, which is a change to what the customer has, not an
|
|
20
|
+
* assistance to one of their members.
|
|
21
|
+
*
|
|
22
|
+
* **The account has no password and cannot be signed into directly.** The
|
|
23
|
+
* legacy derived one from the establishment id alone — ``Etab{id padded}$``,
|
|
24
|
+
* at ``etab_{id}@ta.com`` — and then redirected into the impersonation route
|
|
25
|
+
* (defect D15). Anyone who noticed the pattern held a working credential for
|
|
26
|
+
* every establishment. Here the row is created without a credential and is
|
|
27
|
+
* reached through E56, which is audited.
|
|
28
|
+
*
|
|
29
|
+
* ``201`` when created, ``200`` when it already existed. Idempotent, because a
|
|
30
|
+
* salesperson clicking twice should not end up with two demo accounts.
|
|
31
|
+
* @summary Create Demo User
|
|
32
|
+
*/
|
|
33
|
+
const createDemoUser = async (demoUserWrite, options) => {
|
|
34
|
+
const getHeaders = (h) => {
|
|
35
|
+
if (!h) return {};
|
|
36
|
+
if (h instanceof Headers) return Object.fromEntries(h.entries());
|
|
37
|
+
if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
|
|
38
|
+
const headers = {};
|
|
39
|
+
for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
|
|
40
|
+
return headers;
|
|
41
|
+
};
|
|
42
|
+
return request(getCreateDemoUserUrl(), {
|
|
43
|
+
...options,
|
|
44
|
+
method: "POST",
|
|
45
|
+
headers: {
|
|
46
|
+
"Content-Type": "application/json",
|
|
47
|
+
...getHeaders(options?.headers)
|
|
48
|
+
},
|
|
49
|
+
body: JSON.stringify(demoUserWrite)
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const getCreateDemoUserMutationKey = () => ["createDemoUser"];
|
|
53
|
+
const getCreateDemoUserMutationOptions = (options) => {
|
|
54
|
+
const mutationKey = getCreateDemoUserMutationKey();
|
|
55
|
+
const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
|
|
56
|
+
...options,
|
|
57
|
+
mutation: {
|
|
58
|
+
...options.mutation,
|
|
59
|
+
mutationKey
|
|
60
|
+
}
|
|
61
|
+
} : {
|
|
62
|
+
mutation: { mutationKey },
|
|
63
|
+
request: void 0
|
|
64
|
+
};
|
|
65
|
+
const mutationFn = (props) => {
|
|
66
|
+
const { data } = props ?? {};
|
|
67
|
+
return createDemoUser(data, requestOptions);
|
|
68
|
+
};
|
|
69
|
+
return {
|
|
70
|
+
mutationFn,
|
|
71
|
+
...mutationOptions
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* @summary Create Demo User
|
|
76
|
+
*/
|
|
77
|
+
const useCreateDemoUser = (options, queryClient) => {
|
|
78
|
+
return useMutation(getCreateDemoUserMutationOptions(options), queryClient);
|
|
79
|
+
};
|
|
80
|
+
const getOpenSupportSessionUrl = () => {
|
|
81
|
+
return `/admin/impersonations`;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Open a support session acting as another account (E56).
|
|
85
|
+
*
|
|
86
|
+
* ``reason`` is mandatory and exists to be logged. A support action with no
|
|
87
|
+
* stated reason cannot be told apart from an abuse of the same endpoint.
|
|
88
|
+
*
|
|
89
|
+
* **This returns no tokens.** It used to: a Keycloak token-exchange session for
|
|
90
|
+
* the subject, on the reasoning that the platform should mint no credentials and
|
|
91
|
+
* that the subject's own assurance level would keep privileged operations out of
|
|
92
|
+
* reach. Both halves turned out to be wrong. The exchanged token carried no
|
|
93
|
+
* actor claim, so it was indistinguishable from the patron's own and the trail
|
|
94
|
+
* stopped at this row; and it carried no ``assurance`` claim either, which
|
|
95
|
+
* ``clamp_assurance`` reads as *unconstrained* — so the operator resolved to
|
|
96
|
+
* ``HIGH`` and could close the account, the single thing the design promised to
|
|
97
|
+
* prevent. Keycloak 26 also rejects the grant outright.
|
|
98
|
+
*
|
|
99
|
+
* So the operator keeps their own token and sends ``X-Acting-As`` with the id
|
|
100
|
+
* returned here. Nothing is minted, the authenticated identity stays the
|
|
101
|
+
* operator, and the session is clamped to the lowest assurance by
|
|
102
|
+
* :func:`app.core.security.acting_as` — which makes E14 and E17 unreachable
|
|
103
|
+
* through the guard that already exists rather than through a special case.
|
|
104
|
+
*
|
|
105
|
+
* Ending it early is ``DELETE /admin/impersonations/{id}``, which must be sent
|
|
106
|
+
* *without* the header: a support session holds no staff roles.
|
|
107
|
+
* @summary Open Support Session
|
|
108
|
+
*/
|
|
109
|
+
const openSupportSession = async (impersonationWrite, options) => {
|
|
110
|
+
const getHeaders = (h) => {
|
|
111
|
+
if (!h) return {};
|
|
112
|
+
if (h instanceof Headers) return Object.fromEntries(h.entries());
|
|
113
|
+
if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
|
|
114
|
+
const headers = {};
|
|
115
|
+
for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
|
|
116
|
+
return headers;
|
|
117
|
+
};
|
|
118
|
+
return request(getOpenSupportSessionUrl(), {
|
|
119
|
+
...options,
|
|
120
|
+
method: "POST",
|
|
121
|
+
headers: {
|
|
122
|
+
"Content-Type": "application/json",
|
|
123
|
+
...getHeaders(options?.headers)
|
|
124
|
+
},
|
|
125
|
+
body: JSON.stringify(impersonationWrite)
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
const getOpenSupportSessionMutationKey = () => ["openSupportSession"];
|
|
129
|
+
const getOpenSupportSessionMutationOptions = (options) => {
|
|
130
|
+
const mutationKey = getOpenSupportSessionMutationKey();
|
|
131
|
+
const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
|
|
132
|
+
...options,
|
|
133
|
+
mutation: {
|
|
134
|
+
...options.mutation,
|
|
135
|
+
mutationKey
|
|
136
|
+
}
|
|
137
|
+
} : {
|
|
138
|
+
mutation: { mutationKey },
|
|
139
|
+
request: void 0
|
|
140
|
+
};
|
|
141
|
+
const mutationFn = (props) => {
|
|
142
|
+
const { data } = props ?? {};
|
|
143
|
+
return openSupportSession(data, requestOptions);
|
|
144
|
+
};
|
|
145
|
+
return {
|
|
146
|
+
mutationFn,
|
|
147
|
+
...mutationOptions
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* @summary Open Support Session
|
|
152
|
+
*/
|
|
153
|
+
const useOpenSupportSession = (options, queryClient) => {
|
|
154
|
+
return useMutation(getOpenSupportSessionMutationOptions(options), queryClient);
|
|
155
|
+
};
|
|
156
|
+
const getCloseSupportSessionUrl = (supportSessionId) => {
|
|
157
|
+
return `/admin/impersonations/${supportSessionId}`;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* End a support session early. Idempotent.
|
|
161
|
+
*
|
|
162
|
+
* Must be called *without* ``X-Acting-As``: a session in progress carries no
|
|
163
|
+
* staff roles, so a request made through one cannot reach this endpoint. That
|
|
164
|
+
* is deliberate — the operator steps out before they can close it, and simply
|
|
165
|
+
* dropping the header ends the session's effect immediately either way.
|
|
166
|
+
*
|
|
167
|
+
* ``204`` whether or not the row was still open, and whether or not it was
|
|
168
|
+
* theirs. A support session id is a bare integer and must not be an oracle.
|
|
169
|
+
* @summary Close Support Session
|
|
170
|
+
*/
|
|
171
|
+
const closeSupportSession = async (supportSessionId, options) => {
|
|
172
|
+
return request(getCloseSupportSessionUrl(supportSessionId), {
|
|
173
|
+
...options,
|
|
174
|
+
method: "DELETE"
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
const getCloseSupportSessionMutationKey = () => ["closeSupportSession"];
|
|
178
|
+
const getCloseSupportSessionMutationOptions = (options) => {
|
|
179
|
+
const mutationKey = getCloseSupportSessionMutationKey();
|
|
180
|
+
const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
|
|
181
|
+
...options,
|
|
182
|
+
mutation: {
|
|
183
|
+
...options.mutation,
|
|
184
|
+
mutationKey
|
|
185
|
+
}
|
|
186
|
+
} : {
|
|
187
|
+
mutation: { mutationKey },
|
|
188
|
+
request: void 0
|
|
189
|
+
};
|
|
190
|
+
const mutationFn = (props) => {
|
|
191
|
+
const { supportSessionId } = props ?? {};
|
|
192
|
+
return closeSupportSession(supportSessionId, requestOptions);
|
|
193
|
+
};
|
|
194
|
+
return {
|
|
195
|
+
mutationFn,
|
|
196
|
+
...mutationOptions
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* @summary Close Support Session
|
|
201
|
+
*/
|
|
202
|
+
const useCloseSupportSession = (options, queryClient) => {
|
|
203
|
+
return useMutation(getCloseSupportSessionMutationOptions(options), queryClient);
|
|
204
|
+
};
|
|
205
|
+
//#endregion
|
|
206
|
+
export { closeSupportSession, createDemoUser, getCloseSupportSessionMutationKey, getCloseSupportSessionMutationOptions, getCloseSupportSessionUrl, getCreateDemoUserMutationKey, getCreateDemoUserMutationOptions, getCreateDemoUserUrl, getOpenSupportSessionMutationKey, getOpenSupportSessionMutationOptions, getOpenSupportSessionUrl, openSupportSession, useCloseSupportSession, useCreateDemoUser, useOpenSupportSession };
|
|
207
|
+
|
|
208
|
+
//# sourceMappingURL=admin-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-support.js","names":[],"sources":["../../src/react/admin-support/admin-support.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.1.0\n */\nimport {\n useMutation\n} from '@tanstack/react-query';\nimport type {\n MutationFunction,\n QueryClient,\n UseMutationOptions,\n UseMutationResult\n} from '@tanstack/react-query';\n\nimport type {\n DemoUserRead,\n DemoUserWrite,\n HTTPExceptionResponse,\n ImpersonationWrite,\n SupportSessionRead,\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\nexport const getCreateDemoUserUrl = () => {\n\n\n\n\n return `/admin/demo-users`\n}\n\n/**\n * Create, or return, a demonstration account for an establishment (E57).\n *\n * ``RequireAdmin`` rather than ``RequireStaff``: this creates an account inside\n * a customer's tenant, which is a change to what the customer has, not an\n * assistance to one of their members.\n *\n * **The account has no password and cannot be signed into directly.** The\n * legacy derived one from the establishment id alone — ``Etab{id padded}$``,\n * at ``etab_{id}@ta.com`` — and then redirected into the impersonation route\n * (defect D15). Anyone who noticed the pattern held a working credential for\n * every establishment. Here the row is created without a credential and is\n * reached through E56, which is audited.\n *\n * ``201`` when created, ``200`` when it already existed. Idempotent, because a\n * salesperson clicking twice should not end up with two demo accounts.\n * @summary Create Demo User\n */\nexport const createDemoUser = async (demoUserWrite: DemoUserWrite, options?: Parameters<typeof request>[1]): Promise<DemoUserRead> => {\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<DemoUserRead>(getCreateDemoUserUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(demoUserWrite)\n }\n);}\n\n\n\n\n\nexport const getCreateDemoUserMutationKey = () => ['createDemoUser'] as const;\n\nexport const getCreateDemoUserMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createDemoUser>>, TError,CreateDemoUserMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof createDemoUser>>, TError,CreateDemoUserMutationVariables, TContext> => {\n\nconst mutationKey = getCreateDemoUserMutationKey();\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 createDemoUser>>, CreateDemoUserMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return createDemoUser(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CreateDemoUserMutationResult = NonNullable<Awaited<ReturnType<typeof createDemoUser>>>\n export type CreateDemoUserMutationBody = BodyType<DemoUserWrite>\n export type CreateDemoUserMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CreateDemoUserMutationVariables = {data: BodyType<DemoUserWrite>}\n\n /**\n * @summary Create Demo User\n */\nexport const useCreateDemoUser = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createDemoUser>>, TError,CreateDemoUserMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof createDemoUser>>,\n TError,\n CreateDemoUserMutationVariables,\n TContext\n > => {\n return useMutation(getCreateDemoUserMutationOptions(options), queryClient);\n }\n export const getOpenSupportSessionUrl = () => {\n\n\n\n\n return `/admin/impersonations`\n}\n\n/**\n * Open a support session acting as another account (E56).\n *\n * ``reason`` is mandatory and exists to be logged. A support action with no\n * stated reason cannot be told apart from an abuse of the same endpoint.\n *\n * **This returns no tokens.** It used to: a Keycloak token-exchange session for\n * the subject, on the reasoning that the platform should mint no credentials and\n * that the subject's own assurance level would keep privileged operations out of\n * reach. Both halves turned out to be wrong. The exchanged token carried no\n * actor claim, so it was indistinguishable from the patron's own and the trail\n * stopped at this row; and it carried no ``assurance`` claim either, which\n * ``clamp_assurance`` reads as *unconstrained* — so the operator resolved to\n * ``HIGH`` and could close the account, the single thing the design promised to\n * prevent. Keycloak 26 also rejects the grant outright.\n *\n * So the operator keeps their own token and sends ``X-Acting-As`` with the id\n * returned here. Nothing is minted, the authenticated identity stays the\n * operator, and the session is clamped to the lowest assurance by\n * :func:`app.core.security.acting_as` — which makes E14 and E17 unreachable\n * through the guard that already exists rather than through a special case.\n *\n * Ending it early is ``DELETE /admin/impersonations/{id}``, which must be sent\n * *without* the header: a support session holds no staff roles.\n * @summary Open Support Session\n */\nexport const openSupportSession = async (impersonationWrite: ImpersonationWrite, options?: Parameters<typeof request>[1]): Promise<SupportSessionRead> => {\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<SupportSessionRead>(getOpenSupportSessionUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(impersonationWrite)\n }\n);}\n\n\n\n\n\nexport const getOpenSupportSessionMutationKey = () => ['openSupportSession'] as const;\n\nexport const getOpenSupportSessionMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof openSupportSession>>, TError,OpenSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof openSupportSession>>, TError,OpenSupportSessionMutationVariables, TContext> => {\n\nconst mutationKey = getOpenSupportSessionMutationKey();\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 openSupportSession>>, OpenSupportSessionMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return openSupportSession(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type OpenSupportSessionMutationResult = NonNullable<Awaited<ReturnType<typeof openSupportSession>>>\n export type OpenSupportSessionMutationBody = BodyType<ImpersonationWrite>\n export type OpenSupportSessionMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type OpenSupportSessionMutationVariables = {data: BodyType<ImpersonationWrite>}\n\n /**\n * @summary Open Support Session\n */\nexport const useOpenSupportSession = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof openSupportSession>>, TError,OpenSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof openSupportSession>>,\n TError,\n OpenSupportSessionMutationVariables,\n TContext\n > => {\n return useMutation(getOpenSupportSessionMutationOptions(options), queryClient);\n }\n export const getCloseSupportSessionUrl = (supportSessionId: number,) => {\n\n\n\n\n return `/admin/impersonations/${supportSessionId}`\n}\n\n/**\n * End a support session early. Idempotent.\n *\n * Must be called *without* ``X-Acting-As``: a session in progress carries no\n * staff roles, so a request made through one cannot reach this endpoint. That\n * is deliberate — the operator steps out before they can close it, and simply\n * dropping the header ends the session's effect immediately either way.\n *\n * ``204`` whether or not the row was still open, and whether or not it was\n * theirs. A support session id is a bare integer and must not be an oracle.\n * @summary Close Support Session\n */\nexport const closeSupportSession = async (supportSessionId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getCloseSupportSessionUrl(supportSessionId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\n\n\n\nexport const getCloseSupportSessionMutationKey = () => ['closeSupportSession'] as const;\n\nexport const getCloseSupportSessionMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof closeSupportSession>>, TError,CloseSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof closeSupportSession>>, TError,CloseSupportSessionMutationVariables, TContext> => {\n\nconst mutationKey = getCloseSupportSessionMutationKey();\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 closeSupportSession>>, CloseSupportSessionMutationVariables> = (props) => {\n const {supportSessionId} = props ?? {};\n\n return closeSupportSession(supportSessionId,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CloseSupportSessionMutationResult = NonNullable<Awaited<ReturnType<typeof closeSupportSession>>>\n\n export type CloseSupportSessionMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CloseSupportSessionMutationVariables = {supportSessionId: number}\n\n /**\n * @summary Close Support Session\n */\nexport const useCloseSupportSession = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof closeSupportSession>>, TError,CloseSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof closeSupportSession>>,\n TError,\n CloseSupportSessionMutationVariables,\n TContext\n > => {\n return useMutation(getCloseSupportSessionMutationOptions(options), queryClient);\n }\n"],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
|
|
2
|
+
import { D as TenantSettingsUpdateWrite, Gn as HTTPExceptionResponse, k as TenantSettingsRead, t as ValidationErrorResponse } from "../chunks/index.js";
|
|
3
|
+
import { a as ErrorType, c as request, n as BodyType } from "../chunks/client.js";
|
|
4
|
+
import { DataTag, DefinedInitialDataOptions, DefinedUseQueryResult, QueryClient, QueryKey, UndefinedInitialDataOptions, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
|
|
5
|
+
//#region src/react/admin-tenants/admin-tenants.d.ts
|
|
6
|
+
type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
|
|
7
|
+
export declare const getListTenantsUrl: () => string;
|
|
8
|
+
/**
|
|
9
|
+
* The tenants this operator administers.
|
|
10
|
+
*
|
|
11
|
+
* For a library administrator that is one row, and returning a list of one is
|
|
12
|
+
* better than a bare object: the client renders the same picker whether it is
|
|
13
|
+
* talking to a library, a consortium or the vendor.
|
|
14
|
+
* @summary List Tenants
|
|
15
|
+
*/
|
|
16
|
+
export declare const listTenants: (options?: Parameters<typeof request>[1]) => Promise<TenantSettingsRead[]>;
|
|
17
|
+
export declare const getListTenantsQueryKey: () => readonly [`/admin/tenants`];
|
|
18
|
+
export declare const getListTenantsQueryOptions: <TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(options?: {
|
|
19
|
+
query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>;
|
|
20
|
+
request?: SecondParameter<typeof request>;
|
|
21
|
+
}) => UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData> & {
|
|
22
|
+
queryKey: DataTag<QueryKey, TData, TError>;
|
|
23
|
+
};
|
|
24
|
+
export type ListTenantsQueryResult = NonNullable<Awaited<ReturnType<typeof listTenants>>>;
|
|
25
|
+
export type ListTenantsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>;
|
|
26
|
+
export declare function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(options: {
|
|
27
|
+
query: Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>> & Pick<DefinedInitialDataOptions<Awaited<ReturnType<typeof listTenants>>, TError, Awaited<ReturnType<typeof listTenants>>>, 'initialData'>;
|
|
28
|
+
request?: SecondParameter<typeof request>;
|
|
29
|
+
}, queryClient?: QueryClient): DefinedUseQueryResult<TData, TError> & {
|
|
30
|
+
queryKey: DataTag<QueryKey, TData, TError>;
|
|
31
|
+
};
|
|
32
|
+
export declare function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(options?: {
|
|
33
|
+
query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>> & Pick<UndefinedInitialDataOptions<Awaited<ReturnType<typeof listTenants>>, TError, Awaited<ReturnType<typeof listTenants>>>, 'initialData'>;
|
|
34
|
+
request?: SecondParameter<typeof request>;
|
|
35
|
+
}, queryClient?: QueryClient): UseQueryResult<TData, TError> & {
|
|
36
|
+
queryKey: DataTag<QueryKey, TData, TError>;
|
|
37
|
+
};
|
|
38
|
+
export declare function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(options?: {
|
|
39
|
+
query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>;
|
|
40
|
+
request?: SecondParameter<typeof request>;
|
|
41
|
+
}, queryClient?: QueryClient): UseQueryResult<TData, TError> & {
|
|
42
|
+
queryKey: DataTag<QueryKey, TData, TError>;
|
|
43
|
+
};
|
|
44
|
+
export declare const getReadTenantUrl: (tenantId: number) => string;
|
|
45
|
+
/**
|
|
46
|
+
* One tenant's configuration.
|
|
47
|
+
* @summary Read Tenant
|
|
48
|
+
*/
|
|
49
|
+
export declare const readTenant: (tenantId: number, options?: Parameters<typeof request>[1]) => Promise<TenantSettingsRead>;
|
|
50
|
+
export declare const getReadTenantQueryKey: (tenantId: number) => readonly [`/admin/tenants/${number}`];
|
|
51
|
+
export declare const getReadTenantQueryOptions: <TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number, options?: {
|
|
52
|
+
query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>;
|
|
53
|
+
request?: SecondParameter<typeof request>;
|
|
54
|
+
}) => UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData> & {
|
|
55
|
+
queryKey: DataTag<QueryKey, TData, TError>;
|
|
56
|
+
};
|
|
57
|
+
export type ReadTenantQueryResult = NonNullable<Awaited<ReturnType<typeof readTenant>>>;
|
|
58
|
+
export type ReadTenantQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>;
|
|
59
|
+
export declare function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number, options: {
|
|
60
|
+
query: Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>> & Pick<DefinedInitialDataOptions<Awaited<ReturnType<typeof readTenant>>, TError, Awaited<ReturnType<typeof readTenant>>>, 'initialData'>;
|
|
61
|
+
request?: SecondParameter<typeof request>;
|
|
62
|
+
}, queryClient?: QueryClient): DefinedUseQueryResult<TData, TError> & {
|
|
63
|
+
queryKey: DataTag<QueryKey, TData, TError>;
|
|
64
|
+
};
|
|
65
|
+
export declare function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number, options?: {
|
|
66
|
+
query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>> & Pick<UndefinedInitialDataOptions<Awaited<ReturnType<typeof readTenant>>, TError, Awaited<ReturnType<typeof readTenant>>>, 'initialData'>;
|
|
67
|
+
request?: SecondParameter<typeof request>;
|
|
68
|
+
}, queryClient?: QueryClient): UseQueryResult<TData, TError> & {
|
|
69
|
+
queryKey: DataTag<QueryKey, TData, TError>;
|
|
70
|
+
};
|
|
71
|
+
export declare function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number, options?: {
|
|
72
|
+
query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>;
|
|
73
|
+
request?: SecondParameter<typeof request>;
|
|
74
|
+
}, queryClient?: QueryClient): UseQueryResult<TData, TError> & {
|
|
75
|
+
queryKey: DataTag<QueryKey, TData, TError>;
|
|
76
|
+
};
|
|
77
|
+
export declare const getUpdateTenantUrl: (tenantId: number) => string;
|
|
78
|
+
/**
|
|
79
|
+
* Change a tenant's configuration. Audited.
|
|
80
|
+
*
|
|
81
|
+
* The two membership flags are mutually exclusive and the database says so —
|
|
82
|
+
* ``ck_tenant_individual_accounts_exclusive``. Checked here too, because a
|
|
83
|
+
* constraint violation surfaces as a 500 and this is a 422: the operator sent
|
|
84
|
+
* something contradictory and can fix it.
|
|
85
|
+
* @summary Update Tenant
|
|
86
|
+
*/
|
|
87
|
+
export declare const updateTenant: (tenantId: number, tenantSettingsUpdateWrite: TenantSettingsUpdateWrite, options?: Parameters<typeof request>[1]) => Promise<TenantSettingsRead>;
|
|
88
|
+
export declare const getUpdateTenantMutationKey: () => readonly ['updateTenant'];
|
|
89
|
+
export declare const getUpdateTenantMutationOptions: <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>, TContext = unknown>(options?: {
|
|
90
|
+
mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError, UpdateTenantMutationVariables, TContext>;
|
|
91
|
+
request?: SecondParameter<typeof request>;
|
|
92
|
+
}) => UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError, UpdateTenantMutationVariables, TContext>;
|
|
93
|
+
export type UpdateTenantMutationResult = NonNullable<Awaited<ReturnType<typeof updateTenant>>>;
|
|
94
|
+
export type UpdateTenantMutationBody = BodyType<TenantSettingsUpdateWrite>;
|
|
95
|
+
export type UpdateTenantMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>;
|
|
96
|
+
export type UpdateTenantMutationVariables = {
|
|
97
|
+
tenantId: number;
|
|
98
|
+
data: BodyType<TenantSettingsUpdateWrite>;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* @summary Update Tenant
|
|
102
|
+
*/
|
|
103
|
+
export declare const useUpdateTenant: <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>, TContext = unknown>(options?: {
|
|
104
|
+
mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError, UpdateTenantMutationVariables, TContext>;
|
|
105
|
+
request?: SecondParameter<typeof request>;
|
|
106
|
+
}, queryClient?: QueryClient) => UseMutationResult<Awaited<ReturnType<typeof updateTenant>>, TError, UpdateTenantMutationVariables, TContext>;
|
|
107
|
+
//#endregion
|
|
108
|
+
//# sourceMappingURL=admin-tenants.d.ts.map
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { r as request } from "../chunks/client.js";
|
|
3
|
+
import { useMutation, useQuery } from "@tanstack/react-query";
|
|
4
|
+
//#region src/react/admin-tenants/admin-tenants.ts
|
|
5
|
+
/**
|
|
6
|
+
* Generated by orval 🍺
|
|
7
|
+
* Do not edit manually.
|
|
8
|
+
* Mozaik backend
|
|
9
|
+
* Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.
|
|
10
|
+
* OpenAPI spec version: 0.1.0
|
|
11
|
+
*/
|
|
12
|
+
const withQueryKey = (query, queryKey) => {
|
|
13
|
+
const result = { queryKey };
|
|
14
|
+
for (const key of Object.keys(query)) {
|
|
15
|
+
if (key === "queryKey") continue;
|
|
16
|
+
Object.defineProperty(result, key, {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
configurable: true,
|
|
19
|
+
get: () => query[key]
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
24
|
+
const getListTenantsUrl = () => {
|
|
25
|
+
return `/admin/tenants`;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* The tenants this operator administers.
|
|
29
|
+
*
|
|
30
|
+
* For a library administrator that is one row, and returning a list of one is
|
|
31
|
+
* better than a bare object: the client renders the same picker whether it is
|
|
32
|
+
* talking to a library, a consortium or the vendor.
|
|
33
|
+
* @summary List Tenants
|
|
34
|
+
*/
|
|
35
|
+
const listTenants = async (options) => {
|
|
36
|
+
return request(getListTenantsUrl(), {
|
|
37
|
+
...options,
|
|
38
|
+
method: "GET"
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
const getListTenantsQueryKey = () => {
|
|
42
|
+
return [`/admin/tenants`];
|
|
43
|
+
};
|
|
44
|
+
const getListTenantsQueryOptions = (options) => {
|
|
45
|
+
const { query: queryOptions, request: requestOptions } = options ?? {};
|
|
46
|
+
const queryKey = queryOptions?.queryKey ?? getListTenantsQueryKey();
|
|
47
|
+
const queryFn = ({ signal }) => listTenants({
|
|
48
|
+
signal,
|
|
49
|
+
...requestOptions
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
queryKey,
|
|
53
|
+
queryFn,
|
|
54
|
+
...queryOptions
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @summary List Tenants
|
|
59
|
+
*/
|
|
60
|
+
function useListTenants(options, queryClient) {
|
|
61
|
+
const queryOptions = getListTenantsQueryOptions(options);
|
|
62
|
+
const query = useQuery(queryOptions, queryClient);
|
|
63
|
+
return withQueryKey(query, queryOptions.queryKey);
|
|
64
|
+
}
|
|
65
|
+
const getReadTenantUrl = (tenantId) => {
|
|
66
|
+
return `/admin/tenants/${tenantId}`;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* One tenant's configuration.
|
|
70
|
+
* @summary Read Tenant
|
|
71
|
+
*/
|
|
72
|
+
const readTenant = async (tenantId, options) => {
|
|
73
|
+
return request(getReadTenantUrl(tenantId), {
|
|
74
|
+
...options,
|
|
75
|
+
method: "GET"
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
const getReadTenantQueryKey = (tenantId) => {
|
|
79
|
+
return [`/admin/tenants/${tenantId}`];
|
|
80
|
+
};
|
|
81
|
+
const getReadTenantQueryOptions = (tenantId, options) => {
|
|
82
|
+
const { query: queryOptions, request: requestOptions } = options ?? {};
|
|
83
|
+
const queryKey = queryOptions?.queryKey ?? getReadTenantQueryKey(tenantId);
|
|
84
|
+
const queryFn = ({ signal }) => readTenant(tenantId, {
|
|
85
|
+
signal,
|
|
86
|
+
...requestOptions
|
|
87
|
+
});
|
|
88
|
+
return {
|
|
89
|
+
queryKey,
|
|
90
|
+
queryFn,
|
|
91
|
+
enabled: tenantId !== null && tenantId !== void 0,
|
|
92
|
+
...queryOptions
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* @summary Read Tenant
|
|
97
|
+
*/
|
|
98
|
+
function useReadTenant(tenantId, options, queryClient) {
|
|
99
|
+
const queryOptions = getReadTenantQueryOptions(tenantId, options);
|
|
100
|
+
const query = useQuery(queryOptions, queryClient);
|
|
101
|
+
return withQueryKey(query, queryOptions.queryKey);
|
|
102
|
+
}
|
|
103
|
+
const getUpdateTenantUrl = (tenantId) => {
|
|
104
|
+
return `/admin/tenants/${tenantId}`;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Change a tenant's configuration. Audited.
|
|
108
|
+
*
|
|
109
|
+
* The two membership flags are mutually exclusive and the database says so —
|
|
110
|
+
* ``ck_tenant_individual_accounts_exclusive``. Checked here too, because a
|
|
111
|
+
* constraint violation surfaces as a 500 and this is a 422: the operator sent
|
|
112
|
+
* something contradictory and can fix it.
|
|
113
|
+
* @summary Update Tenant
|
|
114
|
+
*/
|
|
115
|
+
const updateTenant = async (tenantId, tenantSettingsUpdateWrite, options) => {
|
|
116
|
+
const getHeaders = (h) => {
|
|
117
|
+
if (!h) return {};
|
|
118
|
+
if (h instanceof Headers) return Object.fromEntries(h.entries());
|
|
119
|
+
if (Symbol.iterator in h) return Object.fromEntries(Array.from(h, (entry) => Array.from(entry)));
|
|
120
|
+
const headers = {};
|
|
121
|
+
for (const [name, value] of Object.entries(h)) if (value !== void 0) headers[name] = value;
|
|
122
|
+
return headers;
|
|
123
|
+
};
|
|
124
|
+
return request(getUpdateTenantUrl(tenantId), {
|
|
125
|
+
...options,
|
|
126
|
+
method: "PATCH",
|
|
127
|
+
headers: {
|
|
128
|
+
"Content-Type": "application/json",
|
|
129
|
+
...getHeaders(options?.headers)
|
|
130
|
+
},
|
|
131
|
+
body: JSON.stringify(tenantSettingsUpdateWrite)
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
const getUpdateTenantMutationKey = () => ["updateTenant"];
|
|
135
|
+
const getUpdateTenantMutationOptions = (options) => {
|
|
136
|
+
const mutationKey = getUpdateTenantMutationKey();
|
|
137
|
+
const { mutation: mutationOptions, request: requestOptions } = options ? options.mutation && "mutationKey" in options.mutation && options.mutation.mutationKey ? options : {
|
|
138
|
+
...options,
|
|
139
|
+
mutation: {
|
|
140
|
+
...options.mutation,
|
|
141
|
+
mutationKey
|
|
142
|
+
}
|
|
143
|
+
} : {
|
|
144
|
+
mutation: { mutationKey },
|
|
145
|
+
request: void 0
|
|
146
|
+
};
|
|
147
|
+
const mutationFn = (props) => {
|
|
148
|
+
const { tenantId, data } = props ?? {};
|
|
149
|
+
return updateTenant(tenantId, data, requestOptions);
|
|
150
|
+
};
|
|
151
|
+
return {
|
|
152
|
+
mutationFn,
|
|
153
|
+
...mutationOptions
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* @summary Update Tenant
|
|
158
|
+
*/
|
|
159
|
+
const useUpdateTenant = (options, queryClient) => {
|
|
160
|
+
return useMutation(getUpdateTenantMutationOptions(options), queryClient);
|
|
161
|
+
};
|
|
162
|
+
//#endregion
|
|
163
|
+
export { getListTenantsQueryKey, getListTenantsQueryOptions, getListTenantsUrl, getReadTenantQueryKey, getReadTenantQueryOptions, getReadTenantUrl, getUpdateTenantMutationKey, getUpdateTenantMutationOptions, getUpdateTenantUrl, listTenants, readTenant, updateTenant, useListTenants, useReadTenant, useUpdateTenant };
|
|
164
|
+
|
|
165
|
+
//# sourceMappingURL=admin-tenants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-tenants.js","names":[],"sources":["../../src/react/admin-tenants/admin-tenants.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.1.0\n */\nimport {\n useMutation,\n useQuery\n} from '@tanstack/react-query';\nimport type {\n DataTag,\n DefinedInitialDataOptions,\n DefinedUseQueryResult,\n MutationFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n UndefinedInitialDataOptions,\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult\n} from '@tanstack/react-query';\n\nimport type {\n HTTPExceptionResponse,\n TenantSettingsRead,\n TenantSettingsUpdateWrite,\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 getListTenantsUrl = () => {\n\n\n\n\n return `/admin/tenants`\n}\n\n/**\n * The tenants this operator administers.\n *\n * For a library administrator that is one row, and returning a list of one is\n * better than a bare object: the client renders the same picker whether it is\n * talking to a library, a consortium or the vendor.\n * @summary List Tenants\n */\nexport const listTenants = async ( options?: Parameters<typeof request>[1]): Promise<TenantSettingsRead[]> => {\n\n return request<TenantSettingsRead[]>(getListTenantsUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListTenantsQueryKey = () => {\n return [\n `/admin/tenants`\n ] as const;\n }\n\n\nexport const getListTenantsQueryOptions = <TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>( options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListTenantsQueryKey();\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listTenants>>> = ({ signal }) => listTenants({ signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListTenantsQueryResult = NonNullable<Awaited<ReturnType<typeof listTenants>>>\nexport type ListTenantsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listTenants>>,\n TError,\n Awaited<ReturnType<typeof listTenants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listTenants>>,\n TError,\n Awaited<ReturnType<typeof listTenants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Tenants\n */\n\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListTenantsQueryOptions(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 getReadTenantUrl = (tenantId: number,) => {\n\n\n\n\n return `/admin/tenants/${tenantId}`\n}\n\n/**\n * One tenant's configuration.\n * @summary Read Tenant\n */\nexport const readTenant = async (tenantId: number, options?: Parameters<typeof request>[1]): Promise<TenantSettingsRead> => {\n\n return request<TenantSettingsRead>(getReadTenantUrl(tenantId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getReadTenantQueryKey = (tenantId: number,) => {\n return [\n `/admin/tenants/${tenantId}`\n ] as const;\n }\n\n\nexport const getReadTenantQueryOptions = <TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getReadTenantQueryKey(tenantId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof readTenant>>> = ({ signal }) => readTenant(tenantId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: tenantId !== null && tenantId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ReadTenantQueryResult = NonNullable<Awaited<ReturnType<typeof readTenant>>>\nexport type ReadTenantQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof readTenant>>,\n TError,\n Awaited<ReturnType<typeof readTenant>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof readTenant>>,\n TError,\n Awaited<ReturnType<typeof readTenant>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read Tenant\n */\n\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getReadTenantQueryOptions(tenantId,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 getUpdateTenantUrl = (tenantId: number,) => {\n\n\n\n\n return `/admin/tenants/${tenantId}`\n}\n\n/**\n * Change a tenant's configuration. Audited.\n *\n * The two membership flags are mutually exclusive and the database says so —\n * ``ck_tenant_individual_accounts_exclusive``. Checked here too, because a\n * constraint violation surfaces as a 500 and this is a 422: the operator sent\n * something contradictory and can fix it.\n * @summary Update Tenant\n */\nexport const updateTenant = async (tenantId: number,\n tenantSettingsUpdateWrite: TenantSettingsUpdateWrite, options?: Parameters<typeof request>[1]): Promise<TenantSettingsRead> => {\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<TenantSettingsRead>(getUpdateTenantUrl(tenantId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tenantSettingsUpdateWrite)\n }\n);}\n\n\n\n\n\nexport const getUpdateTenantMutationKey = () => ['updateTenant'] as const;\n\nexport const getUpdateTenantMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError,UpdateTenantMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError,UpdateTenantMutationVariables, TContext> => {\n\nconst mutationKey = getUpdateTenantMutationKey();\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 updateTenant>>, UpdateTenantMutationVariables> = (props) => {\n const {tenantId,data} = props ?? {};\n\n return updateTenant(tenantId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type UpdateTenantMutationResult = NonNullable<Awaited<ReturnType<typeof updateTenant>>>\n export type UpdateTenantMutationBody = BodyType<TenantSettingsUpdateWrite>\n export type UpdateTenantMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type UpdateTenantMutationVariables = {tenantId: number;data: BodyType<TenantSettingsUpdateWrite>}\n\n /**\n * @summary Update Tenant\n */\nexport const useUpdateTenant = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError,UpdateTenantMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof updateTenant>>,\n TError,\n UpdateTenantMutationVariables,\n TContext\n > => {\n return useMutation(getUpdateTenantMutationOptions(options), queryClient);\n }\n"],"mappings":"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"}
|