@powerportalspro/core 5.0.0-beta.3 → 5.1.0
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/dist/index.cjs +334 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +976 -183
- package/dist/index.d.ts +976 -183
- package/dist/index.js +333 -40
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* URL builders for the framework's `/api/*` and UI endpoints.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* The C# version uses Pascal-cased property names (`Routes.Api.Auth.Login`); this
|
|
7
|
-
* port uses camelCase per JS convention (`Routes.api.auth.login`). Path-segment
|
|
8
|
-
* encoding matches the C# `Uri.EscapeDataString` calls verbatim — segments that the
|
|
9
|
-
* C# leaves unencoded (table logical names, culture codes) are also unencoded here.
|
|
2
|
+
* URL builders for the framework's `/api/*` and UI endpoints. Path segments
|
|
3
|
+
* use `encodeURIComponent` where they're parameterised (record ids, view ids,
|
|
4
|
+
* table logical names that may contain user-supplied characters); known-safe
|
|
5
|
+
* segments (culture codes, fixed enum values) are unencoded.
|
|
10
6
|
*/
|
|
11
7
|
/**
|
|
12
8
|
* Static accessors for the framework's API and UI route groups. Mirrors the C#
|
|
@@ -28,14 +24,39 @@ declare const Routes: {
|
|
|
28
24
|
readonly retrieveLocalizedStrings: "/api/localizedStrings/{culture}";
|
|
29
25
|
/** Template — POST a batch of OrganizationRequest payloads. */
|
|
30
26
|
readonly executeMultiple: "/api/executeMultiple";
|
|
31
|
-
/**
|
|
32
|
-
|
|
27
|
+
/**
|
|
28
|
+
* GET — organization-wide settings sourced from the Dataverse `organization` record:
|
|
29
|
+
* default currency plus file-upload constraints (blocked extensions, max upload size).
|
|
30
|
+
* Replaces the legacy `/api/environmentFileSettings` endpoint.
|
|
31
|
+
*/
|
|
32
|
+
readonly organizationSettings: "/api/organizationSettings";
|
|
33
33
|
/** POST — clear all server-side caches. SystemAdmin-only. */
|
|
34
34
|
readonly clearAllCaches: "/api/caches/clear";
|
|
35
35
|
/** GET — every server-side cache name. SystemAdmin-only. */
|
|
36
36
|
readonly cacheNames: "/api/caches";
|
|
37
37
|
/** Template — POST to clear a single named cache. SystemAdmin-only. */
|
|
38
38
|
readonly clearCache: "/api/caches/{cacheName}/clear";
|
|
39
|
+
/**
|
|
40
|
+
* GET — admin localization overview: configured sources plus the per-source
|
|
41
|
+
* load records produced by the most recent warmup. SystemAdmin-only. Backs
|
|
42
|
+
* the LocalizationAdmin component (Blazor-only today; React mirror TBD).
|
|
43
|
+
*/
|
|
44
|
+
readonly localizationOverview: "/api/localizations/overview";
|
|
45
|
+
/**
|
|
46
|
+
* GET — JSON of the keys one source contributed to one culture during the most
|
|
47
|
+
* recent warmup. `sourceId` + `culture` are query-string parameters (a sourceId
|
|
48
|
+
* can contain colons/slashes, so they're not path segments). SystemAdmin-only.
|
|
49
|
+
*/
|
|
50
|
+
readonly localizationSourceDownload: "/api/localizations/sources/download";
|
|
51
|
+
/**
|
|
52
|
+
* GET — JSON of every key the cache will serve for a culture (post-merge winning
|
|
53
|
+
* values across all sources). `culture` is a query-string parameter. SystemAdmin-only.
|
|
54
|
+
*/
|
|
55
|
+
readonly localizationMergedDownload: "/api/localizations/merged/download";
|
|
56
|
+
/** GET — whether translation is configured, the managed solution is installed, and the candidate target languages. SystemAdmin-only. */
|
|
57
|
+
readonly localizationTranslationAvailability: "/api/localizations/translation/availability";
|
|
58
|
+
/** POST — translate an uploaded localization file into one or more target languages. SystemAdmin-only. */
|
|
59
|
+
readonly localizationTranslate: "/api/localizations/translation";
|
|
39
60
|
/** Template — GET file metadata + (optionally) content for one record/column. */
|
|
40
61
|
readonly retrieveFileInfo: "/api/files/{tableLogicalName}/{recordId}/{columnName}";
|
|
41
62
|
/** Template — POST record ids; returns file info + content for many records of one column. */
|
|
@@ -71,10 +92,10 @@ declare const Routes: {
|
|
|
71
92
|
readonly getRetrieveTableMetadataRoute: (tableLogicalName: string) => string;
|
|
72
93
|
/**
|
|
73
94
|
* Resolved URL for retrieving the current user's combined
|
|
74
|
-
* `TableSecurityPermission` mask for a single table.
|
|
75
|
-
* server-side `ITablePermissionCache.GetPermissionForUserAsync`
|
|
76
|
-
*
|
|
77
|
-
*
|
|
95
|
+
* `TableSecurityPermission` mask for a single table. Routes through
|
|
96
|
+
* the server-side `ITablePermissionCache.GetPermissionForUserAsync`
|
|
97
|
+
* lookup so the client can read the table-level answer without firing
|
|
98
|
+
* a grid query.
|
|
78
99
|
* `GridDataResponse.tablePermissions` carries the same value when a
|
|
79
100
|
* grid query happens to be in flight; this endpoint covers the other
|
|
80
101
|
* cases (custom toolbars, conditional UI elsewhere on the page).
|
|
@@ -158,8 +179,8 @@ declare const Routes: {
|
|
|
158
179
|
readonly confirmEmail: "/api/auth/confirm-email";
|
|
159
180
|
/** POST — send a fresh confirmation email. */
|
|
160
181
|
readonly resendEmailConfirmation: "/api/auth/resend-email-confirmation";
|
|
161
|
-
/** GET —
|
|
162
|
-
readonly
|
|
182
|
+
/** GET — anonymous auth options for the sign-in UI: the local-accounts flag plus the configured external (OAuth) providers. */
|
|
183
|
+
readonly options: "/api/auth/options";
|
|
163
184
|
/** GET — kicks off the OAuth flow for the named external provider. Full-page navigate, do not fetch. */
|
|
164
185
|
readonly externalLogin: "/api/auth/external-login";
|
|
165
186
|
/** GET — snapshot the in-flight external-login cookie set by the OAuth callback. */
|
|
@@ -265,8 +286,8 @@ interface PowerPortalsProErrorInit {
|
|
|
265
286
|
/**
|
|
266
287
|
* Base error thrown by `Transport` for every non-2xx response. Subclasses
|
|
267
288
|
* (`UnauthorizedAccessError`, `ArgumentError`, `ArgumentNullError`,
|
|
268
|
-
* `InvalidOperationError`) are constructed when the server's
|
|
269
|
-
* extension matches a known CLR type
|
|
289
|
+
* `InvalidOperationError`) are constructed when the server's
|
|
290
|
+
* `exceptionType` extension matches a known CLR type.
|
|
270
291
|
*/
|
|
271
292
|
declare class PowerPortalsProError extends Error {
|
|
272
293
|
readonly status: number;
|
|
@@ -326,19 +347,19 @@ interface RequestOptions {
|
|
|
326
347
|
headers?: Record<string, string>;
|
|
327
348
|
}
|
|
328
349
|
/**
|
|
329
|
-
* Thin `fetch` wrapper that owns the cross-cutting concerns the
|
|
330
|
-
*
|
|
350
|
+
* Thin `fetch` wrapper that owns the cross-cutting concerns of the typed
|
|
351
|
+
* client:
|
|
331
352
|
*
|
|
332
|
-
* 1. **Cookie auth.** Always sends `credentials: 'include'` so the ASP.NET
|
|
333
|
-
*
|
|
353
|
+
* 1. **Cookie auth.** Always sends `credentials: 'include'` so the ASP.NET
|
|
354
|
+
* Identity cookie reaches `/api/*`.
|
|
334
355
|
* 2. **JSON in / out.** Serializes the body as JSON (when present) and parses the
|
|
335
|
-
*
|
|
356
|
+
* response as JSON. Sets the `Content-Type` and `Accept` headers accordingly.
|
|
336
357
|
* 3. **Typed-error rehydration.** On non-2xx responses with `application/problem+json`,
|
|
337
|
-
*
|
|
338
|
-
*
|
|
339
|
-
*
|
|
340
|
-
*
|
|
341
|
-
*
|
|
358
|
+
* maps the body's `exceptionType` extension to the matching
|
|
359
|
+
* {@link PowerPortalsProError} subclass — `UnauthorizedAccessError`,
|
|
360
|
+
* `ArgumentError`, `ArgumentNullError`, `InvalidOperationError`, or the base type
|
|
361
|
+
* for unrecognized CLR exceptions. Non-problem-json failures throw the base type
|
|
362
|
+
* with the raw response text as the detail.
|
|
342
363
|
*
|
|
343
364
|
* `Transport` is an implementation detail of the higher-level clients
|
|
344
365
|
* (`AuthClient`, etc.) and is rarely consumed directly. It's exported so advanced
|
|
@@ -822,7 +843,7 @@ interface paths {
|
|
|
822
843
|
patch?: never;
|
|
823
844
|
trace?: never;
|
|
824
845
|
};
|
|
825
|
-
"/api/
|
|
846
|
+
"/api/organizationSettings": {
|
|
826
847
|
parameters: {
|
|
827
848
|
query?: never;
|
|
828
849
|
header?: never;
|
|
@@ -844,7 +865,7 @@ interface paths {
|
|
|
844
865
|
[name: string]: unknown;
|
|
845
866
|
};
|
|
846
867
|
content: {
|
|
847
|
-
"application/json": components["schemas"]["
|
|
868
|
+
"application/json": components["schemas"]["OrganizationSettings"];
|
|
848
869
|
};
|
|
849
870
|
};
|
|
850
871
|
};
|
|
@@ -1175,6 +1196,186 @@ interface paths {
|
|
|
1175
1196
|
patch?: never;
|
|
1176
1197
|
trace?: never;
|
|
1177
1198
|
};
|
|
1199
|
+
"/api/localizations/overview": {
|
|
1200
|
+
parameters: {
|
|
1201
|
+
query?: never;
|
|
1202
|
+
header?: never;
|
|
1203
|
+
path?: never;
|
|
1204
|
+
cookie?: never;
|
|
1205
|
+
};
|
|
1206
|
+
get: {
|
|
1207
|
+
parameters: {
|
|
1208
|
+
query?: never;
|
|
1209
|
+
header?: never;
|
|
1210
|
+
path?: never;
|
|
1211
|
+
cookie?: never;
|
|
1212
|
+
};
|
|
1213
|
+
requestBody?: never;
|
|
1214
|
+
responses: {
|
|
1215
|
+
/** @description OK */
|
|
1216
|
+
200: {
|
|
1217
|
+
headers: {
|
|
1218
|
+
[name: string]: unknown;
|
|
1219
|
+
};
|
|
1220
|
+
content: {
|
|
1221
|
+
"application/json": components["schemas"]["LocalizationOverview"];
|
|
1222
|
+
};
|
|
1223
|
+
};
|
|
1224
|
+
};
|
|
1225
|
+
};
|
|
1226
|
+
put?: never;
|
|
1227
|
+
post?: never;
|
|
1228
|
+
delete?: never;
|
|
1229
|
+
options?: never;
|
|
1230
|
+
head?: never;
|
|
1231
|
+
patch?: never;
|
|
1232
|
+
trace?: never;
|
|
1233
|
+
};
|
|
1234
|
+
"/api/localizations/sources/download": {
|
|
1235
|
+
parameters: {
|
|
1236
|
+
query?: never;
|
|
1237
|
+
header?: never;
|
|
1238
|
+
path?: never;
|
|
1239
|
+
cookie?: never;
|
|
1240
|
+
};
|
|
1241
|
+
get: {
|
|
1242
|
+
parameters: {
|
|
1243
|
+
query: {
|
|
1244
|
+
sourceId: string;
|
|
1245
|
+
culture: string;
|
|
1246
|
+
};
|
|
1247
|
+
header?: never;
|
|
1248
|
+
path?: never;
|
|
1249
|
+
cookie?: never;
|
|
1250
|
+
};
|
|
1251
|
+
requestBody?: never;
|
|
1252
|
+
responses: {
|
|
1253
|
+
/** @description OK */
|
|
1254
|
+
200: {
|
|
1255
|
+
headers: {
|
|
1256
|
+
[name: string]: unknown;
|
|
1257
|
+
};
|
|
1258
|
+
content?: never;
|
|
1259
|
+
};
|
|
1260
|
+
};
|
|
1261
|
+
};
|
|
1262
|
+
put?: never;
|
|
1263
|
+
post?: never;
|
|
1264
|
+
delete?: never;
|
|
1265
|
+
options?: never;
|
|
1266
|
+
head?: never;
|
|
1267
|
+
patch?: never;
|
|
1268
|
+
trace?: never;
|
|
1269
|
+
};
|
|
1270
|
+
"/api/localizations/merged/download": {
|
|
1271
|
+
parameters: {
|
|
1272
|
+
query?: never;
|
|
1273
|
+
header?: never;
|
|
1274
|
+
path?: never;
|
|
1275
|
+
cookie?: never;
|
|
1276
|
+
};
|
|
1277
|
+
get: {
|
|
1278
|
+
parameters: {
|
|
1279
|
+
query: {
|
|
1280
|
+
culture: string;
|
|
1281
|
+
};
|
|
1282
|
+
header?: never;
|
|
1283
|
+
path?: never;
|
|
1284
|
+
cookie?: never;
|
|
1285
|
+
};
|
|
1286
|
+
requestBody?: never;
|
|
1287
|
+
responses: {
|
|
1288
|
+
/** @description OK */
|
|
1289
|
+
200: {
|
|
1290
|
+
headers: {
|
|
1291
|
+
[name: string]: unknown;
|
|
1292
|
+
};
|
|
1293
|
+
content?: never;
|
|
1294
|
+
};
|
|
1295
|
+
};
|
|
1296
|
+
};
|
|
1297
|
+
put?: never;
|
|
1298
|
+
post?: never;
|
|
1299
|
+
delete?: never;
|
|
1300
|
+
options?: never;
|
|
1301
|
+
head?: never;
|
|
1302
|
+
patch?: never;
|
|
1303
|
+
trace?: never;
|
|
1304
|
+
};
|
|
1305
|
+
"/api/localizations/translation/availability": {
|
|
1306
|
+
parameters: {
|
|
1307
|
+
query?: never;
|
|
1308
|
+
header?: never;
|
|
1309
|
+
path?: never;
|
|
1310
|
+
cookie?: never;
|
|
1311
|
+
};
|
|
1312
|
+
get: {
|
|
1313
|
+
parameters: {
|
|
1314
|
+
query?: never;
|
|
1315
|
+
header?: never;
|
|
1316
|
+
path?: never;
|
|
1317
|
+
cookie?: never;
|
|
1318
|
+
};
|
|
1319
|
+
requestBody?: never;
|
|
1320
|
+
responses: {
|
|
1321
|
+
/** @description OK */
|
|
1322
|
+
200: {
|
|
1323
|
+
headers: {
|
|
1324
|
+
[name: string]: unknown;
|
|
1325
|
+
};
|
|
1326
|
+
content: {
|
|
1327
|
+
"application/json": components["schemas"]["TranslationAvailability"];
|
|
1328
|
+
};
|
|
1329
|
+
};
|
|
1330
|
+
};
|
|
1331
|
+
};
|
|
1332
|
+
put?: never;
|
|
1333
|
+
post?: never;
|
|
1334
|
+
delete?: never;
|
|
1335
|
+
options?: never;
|
|
1336
|
+
head?: never;
|
|
1337
|
+
patch?: never;
|
|
1338
|
+
trace?: never;
|
|
1339
|
+
};
|
|
1340
|
+
"/api/localizations/translation": {
|
|
1341
|
+
parameters: {
|
|
1342
|
+
query?: never;
|
|
1343
|
+
header?: never;
|
|
1344
|
+
path?: never;
|
|
1345
|
+
cookie?: never;
|
|
1346
|
+
};
|
|
1347
|
+
get?: never;
|
|
1348
|
+
put?: never;
|
|
1349
|
+
post: {
|
|
1350
|
+
parameters: {
|
|
1351
|
+
query?: never;
|
|
1352
|
+
header?: never;
|
|
1353
|
+
path?: never;
|
|
1354
|
+
cookie?: never;
|
|
1355
|
+
};
|
|
1356
|
+
requestBody: {
|
|
1357
|
+
content: {
|
|
1358
|
+
"application/json": components["schemas"]["TranslationRequest"];
|
|
1359
|
+
};
|
|
1360
|
+
};
|
|
1361
|
+
responses: {
|
|
1362
|
+
/** @description OK */
|
|
1363
|
+
200: {
|
|
1364
|
+
headers: {
|
|
1365
|
+
[name: string]: unknown;
|
|
1366
|
+
};
|
|
1367
|
+
content: {
|
|
1368
|
+
"application/json": components["schemas"]["TranslationResult"];
|
|
1369
|
+
};
|
|
1370
|
+
};
|
|
1371
|
+
};
|
|
1372
|
+
};
|
|
1373
|
+
delete?: never;
|
|
1374
|
+
options?: never;
|
|
1375
|
+
head?: never;
|
|
1376
|
+
patch?: never;
|
|
1377
|
+
trace?: never;
|
|
1378
|
+
};
|
|
1178
1379
|
"/api/auth/external-login/remember-choice": {
|
|
1179
1380
|
parameters: {
|
|
1180
1381
|
query?: never;
|
|
@@ -1185,20 +1386,19 @@ interface paths {
|
|
|
1185
1386
|
/**
|
|
1186
1387
|
* Writes the chooser's "remember my choice" cookie for providerKey
|
|
1187
1388
|
* and redirects to returnUrl. A trampoline used by server-rendered
|
|
1188
|
-
* ExternalLogin pages —
|
|
1189
|
-
* has already flushed
|
|
1190
|
-
*
|
|
1191
|
-
*
|
|
1192
|
-
*
|
|
1193
|
-
* in `/external-login/select`.
|
|
1389
|
+
* ExternalLogin pages — by the time the user clicks the chooser button the page's
|
|
1390
|
+
* HTTP response has already flushed, so a direct cookie write throws "Headers are
|
|
1391
|
+
* read-only, response has already started." Hitting this endpoint via a top-level
|
|
1392
|
+
* navigation creates a fresh response where headers are still writable. SPA flows
|
|
1393
|
+
* skip this entirely — they write the cookie inline in `/external-login/select`.
|
|
1194
1394
|
*
|
|
1195
1395
|
* Anonymous on purpose: the cookie value is just a UI preference (per-provider-key
|
|
1196
1396
|
* pick), nothing security-sensitive. returnUrl is validated as a
|
|
1197
1397
|
* local URL to avoid open-redirect.
|
|
1198
1398
|
* `internal` so PowerPortalsProWebServer.UsePowerPortalsProWebServer
|
|
1199
1399
|
* can also wire it up — server-rendered hosts that don't call
|
|
1200
|
-
*
|
|
1201
|
-
* since their ExternalLogin
|
|
1400
|
+
* IEndpointRouteBuilder AuthEndpoints.MapAuthEndpoints<TUser>(WebApplication app) still need this trampoline,
|
|
1401
|
+
* since their server-rendered ExternalLogin page is the consumer of the redirect.
|
|
1202
1402
|
*/
|
|
1203
1403
|
get: {
|
|
1204
1404
|
parameters: {
|
|
@@ -1774,7 +1974,7 @@ interface paths {
|
|
|
1774
1974
|
patch?: never;
|
|
1775
1975
|
trace?: never;
|
|
1776
1976
|
};
|
|
1777
|
-
"/api/auth/
|
|
1977
|
+
"/api/auth/options": {
|
|
1778
1978
|
parameters: {
|
|
1779
1979
|
query?: never;
|
|
1780
1980
|
header?: never;
|
|
@@ -1796,7 +1996,7 @@ interface paths {
|
|
|
1796
1996
|
[name: string]: unknown;
|
|
1797
1997
|
};
|
|
1798
1998
|
content: {
|
|
1799
|
-
"application/json": components["schemas"]["
|
|
1999
|
+
"application/json": components["schemas"]["AuthOptionsResponse"];
|
|
1800
2000
|
};
|
|
1801
2001
|
};
|
|
1802
2002
|
};
|
|
@@ -2763,7 +2963,7 @@ interface components {
|
|
|
2763
2963
|
AggregateType: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
2764
2964
|
/**
|
|
2765
2965
|
* @description Compression format for the archive produced by
|
|
2766
|
-
*
|
|
2966
|
+
* `IPowerPortalsProService.CreateFileArchiveAsync`.
|
|
2767
2967
|
* Currently only ArchiveFormat.Zip is supported; the enum is open-ended so
|
|
2768
2968
|
* future formats can land without breaking the wire schema.
|
|
2769
2969
|
* @enum {integer}
|
|
@@ -2791,6 +2991,29 @@ interface components {
|
|
|
2791
2991
|
*/
|
|
2792
2992
|
authenticatorUri?: string;
|
|
2793
2993
|
};
|
|
2994
|
+
/**
|
|
2995
|
+
* @description Auth configuration the SPA needs before rendering the sign-in experience, returned by
|
|
2996
|
+
* `GET /api/auth/options`. Anonymous-safe — the login page calls it on first paint to
|
|
2997
|
+
* decide whether to show the local email/password form (plus the register / password-reset
|
|
2998
|
+
* links) and which external-provider buttons to render.
|
|
2999
|
+
*/
|
|
3000
|
+
AuthOptionsResponse: {
|
|
3001
|
+
/**
|
|
3002
|
+
* @description `true` when the portal accepts local username/password accounts (registration,
|
|
3003
|
+
* password sign-in, and password reset). `false` for internal-only portals where
|
|
3004
|
+
* users authenticate exclusively through an external provider (Microsoft/Entra) — the
|
|
3005
|
+
* SPA hides the local form and the register / forgot-password affordances. Defaults to
|
|
3006
|
+
* `true` so hosts that don't configure it keep the full local-account experience.
|
|
3007
|
+
*/
|
|
3008
|
+
localAccountsEnabled?: boolean;
|
|
3009
|
+
/**
|
|
3010
|
+
* @description The configured external (OAuth) login providers — the auth schemes the host registered
|
|
3011
|
+
* via `AddAuthentication().AddMicrosoftAccount()` / `.AddGoogle()` / etc., minus
|
|
3012
|
+
* the cookie / 2FA / Identity-internal schemes. Drives the login page's provider buttons
|
|
3013
|
+
* and the manage-external-logins "add a provider" list.
|
|
3014
|
+
*/
|
|
3015
|
+
externalProviders?: components["schemas"]["ExternalLoginProviderInfo"][];
|
|
3016
|
+
};
|
|
2794
3017
|
/** @description One row of Task<IReadOnlyList<CacheClearResult>> ICacheManager.ClearAllAsync(CancellationToken cancellationToken = default(CancellationToken))'s report. */
|
|
2795
3018
|
CacheClearResult: {
|
|
2796
3019
|
/** @description Cache name (matches string IClearableCache.Name). */
|
|
@@ -2825,8 +3048,8 @@ interface components {
|
|
|
2825
3048
|
};
|
|
2826
3049
|
/**
|
|
2827
3050
|
* @description Outcome of `POST /api/auth/manage/email/change`. Members carry explicit
|
|
2828
|
-
* integer values so
|
|
2829
|
-
*
|
|
3051
|
+
* integer values so the JSON wire form is a stable contract across
|
|
3052
|
+
* reorderings.
|
|
2830
3053
|
* @enum {integer}
|
|
2831
3054
|
*/
|
|
2832
3055
|
ChangeEmailResult: 0 | 1;
|
|
@@ -2854,8 +3077,8 @@ interface components {
|
|
|
2854
3077
|
};
|
|
2855
3078
|
/**
|
|
2856
3079
|
* @description Outcome of `POST /api/auth/manage/password/change`. Members carry
|
|
2857
|
-
* explicit integer values so
|
|
2858
|
-
*
|
|
3080
|
+
* explicit integer values so the JSON wire form is a stable contract
|
|
3081
|
+
* across reorderings.
|
|
2859
3082
|
* @enum {integer}
|
|
2860
3083
|
*/
|
|
2861
3084
|
ChangePasswordResult: 0 | 1 | 2;
|
|
@@ -2892,7 +3115,7 @@ interface components {
|
|
|
2892
3115
|
* @description Fully-shaped chart input: category labels plus one or more datasets.
|
|
2893
3116
|
* Returned by `POST /api/charts/data` and consumed by the
|
|
2894
3117
|
* `<Chart>` / `<FluentUIChart>` / `<DataverseChart>`
|
|
2895
|
-
* components
|
|
3118
|
+
* components.
|
|
2896
3119
|
*/
|
|
2897
3120
|
ChartData: {
|
|
2898
3121
|
/** @description Category labels rendered along the primary axis. */
|
|
@@ -2929,7 +3152,7 @@ interface components {
|
|
|
2929
3152
|
/**
|
|
2930
3153
|
* @description Result column name to read chart labels (X axis) from. Required
|
|
2931
3154
|
* for Guid? ChartDataRequest.ViewId and string? ChartDataRequest.FetchXml modes;
|
|
2932
|
-
* derived from
|
|
3155
|
+
* derived from ChartGrouping AggregateChartConfig.GroupBy
|
|
2933
3156
|
* when AggregateChartConfig? ChartDataRequest.Aggregate is set.
|
|
2934
3157
|
*/
|
|
2935
3158
|
labelColumn?: null | string;
|
|
@@ -2944,8 +3167,8 @@ interface components {
|
|
|
2944
3167
|
* @description Optional result column name used to split rows into multiple
|
|
2945
3168
|
* datasets. When set, rows sharing the same series value form one
|
|
2946
3169
|
* dataset. For AggregateChartConfig? ChartDataRequest.Aggregate mode, derived from
|
|
2947
|
-
*
|
|
2948
|
-
*
|
|
3170
|
+
* ChartGrouping? AggregateChartConfig.Series or implied by its
|
|
3171
|
+
* ChartDateGrouping ChartGrouping.DateGrouping.
|
|
2949
3172
|
*/
|
|
2950
3173
|
seriesColumn?: null | string;
|
|
2951
3174
|
/**
|
|
@@ -3114,12 +3337,34 @@ interface components {
|
|
|
3114
3337
|
/** @description Indicates whether this column can be modified when updating an existing record. */
|
|
3115
3338
|
isValidForUpdate: boolean;
|
|
3116
3339
|
};
|
|
3117
|
-
/**
|
|
3340
|
+
/**
|
|
3341
|
+
* @description Metadata for a Dataverse boolean (yes/no) column. A boolean is an option set under the hood —
|
|
3342
|
+
* Dataverse exposes a customizable true/false label pair — so it carries the same option-set
|
|
3343
|
+
* identity (string BoolMetadata.ChoiceLogicalName, bool BoolMetadata.IsGlobal) and a two-entry
|
|
3344
|
+
* List<ChoiceValueMetadata> BoolMetadata.Choices list (value 0 = false, value 1 = true) used as the default display
|
|
3345
|
+
* labels when no localization override is present.
|
|
3346
|
+
*/
|
|
3118
3347
|
ColumnMetadataBaseBoolMetadata: {
|
|
3119
3348
|
/** @enum {integer} */
|
|
3120
3349
|
$type?: 0;
|
|
3121
3350
|
/** @description Returns Boolean. */
|
|
3122
3351
|
columnType?: components["schemas"]["ColumnType"];
|
|
3352
|
+
/**
|
|
3353
|
+
* @description The logical name of the boolean's option set (Dataverse `OptionSet.Name`), used to
|
|
3354
|
+
* build the `choices.{name}.values.{0|1}.label` localization keys.
|
|
3355
|
+
*/
|
|
3356
|
+
choiceLogicalName?: string;
|
|
3357
|
+
/**
|
|
3358
|
+
* @description Whether the boolean's option set is a global option set (rare for booleans). Determines
|
|
3359
|
+
* whether the localization keys live under the global `choices.*` subtree or the
|
|
3360
|
+
* table-scoped `tables.{table}.choices.*` subtree.
|
|
3361
|
+
*/
|
|
3362
|
+
isGlobal?: boolean;
|
|
3363
|
+
/**
|
|
3364
|
+
* @description The default false/true display labels (value 0 and value 1) as configured in Dataverse,
|
|
3365
|
+
* used as a fallback when a localization override isn't available.
|
|
3366
|
+
*/
|
|
3367
|
+
choices?: components["schemas"]["ChoiceValueMetadata"][];
|
|
3123
3368
|
/** @description The logical name of the column in Dataverse (e.g. "firstname", "emailaddress1"). */
|
|
3124
3369
|
columnName: string;
|
|
3125
3370
|
/** @description The localized display name of the column as configured in Dataverse. */
|
|
@@ -3473,7 +3718,7 @@ interface components {
|
|
|
3473
3718
|
};
|
|
3474
3719
|
/**
|
|
3475
3720
|
* @description A sort specification — a column to sort by and the direction. Shared
|
|
3476
|
-
* across the framework:
|
|
3721
|
+
* across the framework: grid UIs use it for sort state,
|
|
3477
3722
|
* `IFetchXmlQueryComposer` uses it for FetchXML composition, and
|
|
3478
3723
|
* the `POST /api/grids/data` endpoint receives it as part of the
|
|
3479
3724
|
* GridDataRequest body. string ColumnSort.ColumnName may
|
|
@@ -3713,8 +3958,8 @@ interface components {
|
|
|
3713
3958
|
};
|
|
3714
3959
|
/**
|
|
3715
3960
|
* @description Outcome of `POST /api/auth/external-login/confirm`. Members carry
|
|
3716
|
-
* explicit integer values so
|
|
3717
|
-
*
|
|
3961
|
+
* explicit integer values so the JSON wire form is a stable contract
|
|
3962
|
+
* across reorderings.
|
|
3718
3963
|
* @enum {integer}
|
|
3719
3964
|
*/
|
|
3720
3965
|
ConfirmExternalLoginResult: 0 | 1 | 2 | 3;
|
|
@@ -3760,6 +4005,52 @@ interface components {
|
|
|
3760
4005
|
[key: string]: components["schemas"]["ColumnValueBase"];
|
|
3761
4006
|
};
|
|
3762
4007
|
};
|
|
4008
|
+
/**
|
|
4009
|
+
* @description A Dataverse `transactioncurrency` record, denormalized for client consumption.
|
|
4010
|
+
* Populated server-side onto Currency? TableRecord.Currency whenever a record carries
|
|
4011
|
+
* at least one money column, so currency-aware editors (`MoneyEdit` et al.) can
|
|
4012
|
+
* render the correct symbol without a separate round-trip.
|
|
4013
|
+
*/
|
|
4014
|
+
Currency: {
|
|
4015
|
+
/**
|
|
4016
|
+
* Format: uuid
|
|
4017
|
+
* @description The `transactioncurrencyid` primary key. Matches the object? ColumnValueBase.Value
|
|
4018
|
+
* stored against the record's `transactioncurrencyid` column when present.
|
|
4019
|
+
*/
|
|
4020
|
+
id: string;
|
|
4021
|
+
/**
|
|
4022
|
+
* @description The ISO 4217 three-letter code (e.g. `USD`, `EUR`, `JPY`). Read from
|
|
4023
|
+
* `isocurrencycode`. Useful for ARIA labels and culture-aware formatting fallbacks.
|
|
4024
|
+
*/
|
|
4025
|
+
isoCode: string;
|
|
4026
|
+
/**
|
|
4027
|
+
* @description The display symbol Dataverse stores in `currencysymbol` — up to 5 characters,
|
|
4028
|
+
* typically a single Unicode glyph (`$`, `€`, `£`, `¥`) but
|
|
4029
|
+
* occasionally a short string for currencies that lack a single-glyph form
|
|
4030
|
+
* (`Fr`, `kr`, `R$`) or org-specific custom values. Rendered verbatim
|
|
4031
|
+
* in the editor — Unicode + font fallback covers every glyph; no SVG sidecar.
|
|
4032
|
+
*/
|
|
4033
|
+
symbol: string;
|
|
4034
|
+
/**
|
|
4035
|
+
* @description The localized currency name from `currencyname` (e.g. `US Dollar`). Used
|
|
4036
|
+
* in pickers, tooltips, and accessibility text.
|
|
4037
|
+
*/
|
|
4038
|
+
name: string;
|
|
4039
|
+
/**
|
|
4040
|
+
* Format: int32
|
|
4041
|
+
* @description Decimal places to display, sourced from `currencyprecision`. Falls back to 2
|
|
4042
|
+
* when Dataverse leaves the field null. Independent of int MoneyMetadata.Precision,
|
|
4043
|
+
* which is the column-level precision; this is the currency-level default.
|
|
4044
|
+
*/
|
|
4045
|
+
precision?: number | string;
|
|
4046
|
+
/**
|
|
4047
|
+
* Format: double
|
|
4048
|
+
* @description Exchange rate against the org's base currency, from `exchangerate`. `1.0`
|
|
4049
|
+
* for the base currency itself. Surfaced primarily for diagnostic / advanced display
|
|
4050
|
+
* scenarios — editors don't perform conversion locally.
|
|
4051
|
+
*/
|
|
4052
|
+
exchangeRate?: number | string;
|
|
4053
|
+
};
|
|
3763
4054
|
/**
|
|
3764
4055
|
* @description Snapshot of the signed-in user's available sign-in paths, returned by
|
|
3765
4056
|
* `GET /api/auth/manage/login-info`. Combines the linked external logins
|
|
@@ -3903,7 +4194,7 @@ interface components {
|
|
|
3903
4194
|
/**
|
|
3904
4195
|
* @description The user's current password — required when the account has a local
|
|
3905
4196
|
* password set, ignored otherwise (external-login-only accounts). Surfacing
|
|
3906
|
-
* the requirement up-front via
|
|
4197
|
+
* the requirement up-front via DeletePersonalDataResult.RequireLocalPassword
|
|
3907
4198
|
* keeps the form UX correct without a separate "is password set" probe.
|
|
3908
4199
|
*/
|
|
3909
4200
|
password?: null | string;
|
|
@@ -3920,8 +4211,8 @@ interface components {
|
|
|
3920
4211
|
};
|
|
3921
4212
|
/**
|
|
3922
4213
|
* @description Outcome of `POST /api/auth/manage/personal-data/delete`. Members carry
|
|
3923
|
-
* explicit integer values so
|
|
3924
|
-
*
|
|
4214
|
+
* explicit integer values so the JSON wire form is a stable contract
|
|
4215
|
+
* across reorderings.
|
|
3925
4216
|
* @enum {integer}
|
|
3926
4217
|
*/
|
|
3927
4218
|
DeletePersonalDataResult: 0 | 1 | 2;
|
|
@@ -3944,28 +4235,6 @@ interface components {
|
|
|
3944
4235
|
success?: boolean;
|
|
3945
4236
|
};
|
|
3946
4237
|
EntityRole: number;
|
|
3947
|
-
/**
|
|
3948
|
-
* @description Environment-wide file upload constraints pulled from the Dataverse `organization`
|
|
3949
|
-
* record. Clients use these to mirror server-side enforcement (blocked extensions,
|
|
3950
|
-
* upload size ceiling) so users get a friendly client-side rejection instead of a
|
|
3951
|
-
* round-trip failure.
|
|
3952
|
-
*/
|
|
3953
|
-
EnvironmentFileSettings: {
|
|
3954
|
-
/**
|
|
3955
|
-
* @description Lowercase file extensions (without the leading dot) that Dataverse refuses to
|
|
3956
|
-
* accept as uploads — for example `"svg"`, `"exe"`, `"bat"`. Sourced
|
|
3957
|
-
* from the organization's `blockedattachments` setting (a semicolon-delimited
|
|
3958
|
-
* string in Dataverse, parsed and normalised here).
|
|
3959
|
-
*/
|
|
3960
|
-
blockedExtensions: string[];
|
|
3961
|
-
/**
|
|
3962
|
-
* Format: int64
|
|
3963
|
-
* @description Maximum upload size for file attachments and file-column payloads, in bytes.
|
|
3964
|
-
* Sourced from the organization's `maxuploadfilesize` setting. Dataverse stores
|
|
3965
|
-
* it as bytes; callers should compare directly against file byte length.
|
|
3966
|
-
*/
|
|
3967
|
-
maxUploadFileSizeInBytes: number | string;
|
|
3968
|
-
};
|
|
3969
4238
|
/**
|
|
3970
4239
|
* @description One option presented to the user when a single external sign-in matches
|
|
3971
4240
|
* both a Dataverse `systemuser` and a `contact`. Used by
|
|
@@ -3987,8 +4256,8 @@ interface components {
|
|
|
3987
4256
|
};
|
|
3988
4257
|
/**
|
|
3989
4258
|
* @description Which Dataverse table backs an external-login candidate. Members carry
|
|
3990
|
-
* explicit integer values so
|
|
3991
|
-
*
|
|
4259
|
+
* explicit integer values so the JSON wire form is a stable contract
|
|
4260
|
+
* across reorderings.
|
|
3992
4261
|
* @enum {integer}
|
|
3993
4262
|
*/
|
|
3994
4263
|
ExternalLoginCandidateKind: 0 | 1;
|
|
@@ -4015,9 +4284,9 @@ interface components {
|
|
|
4015
4284
|
providerDisplayName?: string;
|
|
4016
4285
|
};
|
|
4017
4286
|
/**
|
|
4018
|
-
* @description Describes one configured external (OAuth) login provider, surfaced
|
|
4019
|
-
* `GET /api/auth/
|
|
4020
|
-
* without hardcoding the list.
|
|
4287
|
+
* @description Describes one configured external (OAuth) login provider, surfaced via
|
|
4288
|
+
* `GET /api/auth/options` (IReadOnlyList<ExternalLoginProviderInfo> AuthOptionsResponse.ExternalProviders) so SPAs
|
|
4289
|
+
* can render provider buttons without hardcoding the list.
|
|
4021
4290
|
*/
|
|
4022
4291
|
ExternalLoginProviderInfo: {
|
|
4023
4292
|
/**
|
|
@@ -4038,8 +4307,9 @@ interface components {
|
|
|
4038
4307
|
* @description Returned by `GET /api/auth/manage/external-logins`. Lists the external
|
|
4039
4308
|
* logins currently linked to the signed-in user.
|
|
4040
4309
|
*
|
|
4041
|
-
* To render an "add a new external login" picker, the client should
|
|
4042
|
-
* `GET /api/auth/
|
|
4310
|
+
* To render an "add a new external login" picker, the client should read the providers
|
|
4311
|
+
* from `GET /api/auth/options` (IReadOnlyList<ExternalLoginProviderInfo> AuthOptionsResponse.ExternalProviders) and
|
|
4312
|
+
* subtract anything already in
|
|
4043
4313
|
* IReadOnlyList<ExternalLoginInfo> ExternalLoginsResponse.CurrentLogins. To decide whether unlinking a given external
|
|
4044
4314
|
* login would lock the user out (no local password AND only one external
|
|
4045
4315
|
* login linked), call `GET /api/auth/manage/login-info` for the
|
|
@@ -4101,26 +4371,34 @@ interface components {
|
|
|
4101
4371
|
};
|
|
4102
4372
|
/**
|
|
4103
4373
|
* @description Body of `POST /api/grids/data`. Lets clients run a paged,
|
|
4104
|
-
* searchable, sortable query against
|
|
4105
|
-
* (Guid? GridDataRequest.ViewId)
|
|
4106
|
-
* (string? GridDataRequest.FetchXml)
|
|
4374
|
+
* searchable, sortable query against a stored Dataverse view
|
|
4375
|
+
* (Guid? GridDataRequest.ViewId), a caller-supplied FetchXML
|
|
4376
|
+
* (string? GridDataRequest.FetchXml), or both — in which case the FetchXML is the
|
|
4377
|
+
* query and the Guid? GridDataRequest.ViewId supplies the view-definition identity
|
|
4378
|
+
* used to resolve view-specific localized column titles. At least one of
|
|
4379
|
+
* the two must be supplied. Server composes the final FetchXML via the
|
|
4107
4380
|
* shared `IFetchXmlQueryComposer` so the search / sort / paging
|
|
4108
|
-
* semantics
|
|
4381
|
+
* semantics are consistent across every client of the endpoint.
|
|
4109
4382
|
*/
|
|
4110
4383
|
GridDataRequest: {
|
|
4111
4384
|
/**
|
|
4112
4385
|
* Format: uuid
|
|
4113
|
-
* @description Stored Dataverse view to use as the base query.
|
|
4114
|
-
* view's FetchXML and column list from
|
|
4115
|
-
*
|
|
4116
|
-
*
|
|
4386
|
+
* @description Stored Dataverse view to use as the base query. When supplied alone,
|
|
4387
|
+
* the server loads the view's FetchXML and column list from
|
|
4388
|
+
* `IViewMetadataCache`. When supplied alongside string? GridDataRequest.FetchXml,
|
|
4389
|
+
* the FetchXML drives the query and this id is used only as the
|
|
4390
|
+
* view-definition identity for view-specific localized column-title
|
|
4391
|
+
* resolution (`tables.{table}.views.{id}.columns.*`) — no savedquery
|
|
4392
|
+
* is loaded. At least one of Guid? GridDataRequest.ViewId / string? GridDataRequest.FetchXml
|
|
4393
|
+
* must be supplied.
|
|
4117
4394
|
*/
|
|
4118
4395
|
viewId?: null | string;
|
|
4119
4396
|
/**
|
|
4120
4397
|
* @description Caller-supplied FetchXML used as the base query. Useful for
|
|
4121
4398
|
* custom (in-memory) views, dynamic queries assembled by consumer
|
|
4122
|
-
* code, or lookup-style minimal-fetch shapes.
|
|
4123
|
-
*
|
|
4399
|
+
* code, or lookup-style minimal-fetch shapes. May be combined with
|
|
4400
|
+
* Guid? GridDataRequest.ViewId (see its docs) to give an in-memory view a
|
|
4401
|
+
* stable identity for localization.
|
|
4124
4402
|
*/
|
|
4125
4403
|
fetchXml?: null | string;
|
|
4126
4404
|
/**
|
|
@@ -4167,7 +4445,7 @@ interface components {
|
|
|
4167
4445
|
* `<link-entity>`). Filters, sorts, and link-entity
|
|
4168
4446
|
* definitions on the base query are preserved.
|
|
4169
4447
|
* Use case: consumer-declared <GridColumn> children on
|
|
4170
|
-
* the
|
|
4448
|
+
* the grid component express the displayed column set
|
|
4171
4449
|
* authoritatively — this field forwards that intent down to the
|
|
4172
4450
|
* server so the resolved column list + fetched data line up with
|
|
4173
4451
|
* what the consumer asked to see, regardless of what the underlying
|
|
@@ -4233,9 +4511,9 @@ interface components {
|
|
|
4233
4511
|
* table scope (Create especially is table-scoped — it doesn't make sense
|
|
4234
4512
|
* per-row), so toolbar buttons can gate "New" / "Delete" off this one
|
|
4235
4513
|
* authoritative value instead of sampling the first row's mask as a
|
|
4236
|
-
* proxy. Computed via the
|
|
4237
|
-
* `ITablePermissionCache.GetPermissionForUserAsync`
|
|
4238
|
-
*
|
|
4514
|
+
* proxy. Computed via the cached
|
|
4515
|
+
* `ITablePermissionCache.GetPermissionForUserAsync` so every
|
|
4516
|
+
* caller reads the same answer.
|
|
4239
4517
|
*/
|
|
4240
4518
|
tablePermissions: components["schemas"]["TableSecurityPermission"];
|
|
4241
4519
|
/** @description Paging metadata describing the current page and how to request the next one. */
|
|
@@ -4265,9 +4543,9 @@ interface components {
|
|
|
4265
4543
|
* to predict it (or fetch the parent metadata just to pick a filter shape).
|
|
4266
4544
|
* The wire payload is identical for both directionalities.
|
|
4267
4545
|
*
|
|
4268
|
-
* Powers the
|
|
4269
|
-
* and
|
|
4270
|
-
*
|
|
4546
|
+
* Powers the `SubGrid` component ("rows related to this parent")
|
|
4547
|
+
* and `ManyToManyLookupEdit`'s initial-selection load. For the
|
|
4548
|
+
* lookup edit's autocomplete pool ("records not currently related to
|
|
4271
4549
|
* this parent"), set RelationshipFilterMode RelationshipFilter.Mode to
|
|
4272
4550
|
* RelationshipFilterMode.ExcludeExistingRecords — that path
|
|
4273
4551
|
* is many-to-many only and the server rejects it for one-to-many
|
|
@@ -4305,9 +4583,9 @@ interface components {
|
|
|
4305
4583
|
JoinOperator: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
|
|
4306
4584
|
/**
|
|
4307
4585
|
* @description Top-level manifest for the localization-bundle endpoints. Returned by
|
|
4308
|
-
*
|
|
4586
|
+
* string Localizations.Manifest; clients fetch this on
|
|
4309
4587
|
* startup to discover supported locales, then issue a follow-up call to
|
|
4310
|
-
*
|
|
4588
|
+
* string Localizations.Thumbprints for the resolved locale's
|
|
4311
4589
|
* thumbprints.
|
|
4312
4590
|
* Splitting "what locales exist" from "what thumbprints does locale X have"
|
|
4313
4591
|
* keeps the version response tiny (a handful of locale codes) regardless
|
|
@@ -4324,10 +4602,18 @@ interface components {
|
|
|
4324
4602
|
* culture first).
|
|
4325
4603
|
*/
|
|
4326
4604
|
supportedLocales: string[];
|
|
4605
|
+
/**
|
|
4606
|
+
* @description The configured UrlCultureStrategy as a
|
|
4607
|
+
* string (`PathPrefix` / `PathPrefixAll` / `CookieOnly`). Lets a SPA
|
|
4608
|
+
* client match the server's URL convention: prefix-based strategies drive locale from
|
|
4609
|
+
* the URL and navigate on switch, while `CookieOnly` switches in place via the
|
|
4610
|
+
* culture cookie without touching the URL.
|
|
4611
|
+
*/
|
|
4612
|
+
urlCultureStrategy: string;
|
|
4327
4613
|
};
|
|
4328
4614
|
/**
|
|
4329
4615
|
* @description Per-locale thumbprint manifest. Returned by
|
|
4330
|
-
*
|
|
4616
|
+
* string Localizations.Thumbprints for a single resolved
|
|
4331
4617
|
* locale; carries the content-derived thumbprint for every downloadable
|
|
4332
4618
|
* bundle a client could need at that locale.
|
|
4333
4619
|
* Per-resource thumbprints mean unchanged tables/views keep the same URL
|
|
@@ -4338,12 +4624,12 @@ interface components {
|
|
|
4338
4624
|
/**
|
|
4339
4625
|
* @description Thumbprint for the cross-cutting "default" bundle (everything outside
|
|
4340
4626
|
* `tables.*` / `choices.*`). Compose into the URL produced by
|
|
4341
|
-
*
|
|
4627
|
+
* string Localizations.GetDefaultBundleRoute(string locale, string thumbprint).
|
|
4342
4628
|
*/
|
|
4343
4629
|
bundle: string;
|
|
4344
4630
|
/**
|
|
4345
4631
|
* @description Thumbprint per table logical name. The matching URL —
|
|
4346
|
-
*
|
|
4632
|
+
* string Localizations.GetTableBundleRoute(string tableName, string locale, string thumbprint) — returns every
|
|
4347
4633
|
* `tables.{name}.*` string PLUS the global `choices.{set}.*`
|
|
4348
4634
|
* strings the table's columns reference.
|
|
4349
4635
|
*/
|
|
@@ -4352,7 +4638,7 @@ interface components {
|
|
|
4352
4638
|
};
|
|
4353
4639
|
/**
|
|
4354
4640
|
* @description Thumbprint per view id (lowercased GUID, no braces). The matching URL —
|
|
4355
|
-
*
|
|
4641
|
+
* string Localizations.GetViewBundleRoute(string viewId, string locale, string thumbprint) — returns every
|
|
4356
4642
|
* `tables.{owningTable}.views.{viewId}.*` string for that view. The
|
|
4357
4643
|
* owning table is resolved server-side, so the client only needs the view id.
|
|
4358
4644
|
*/
|
|
@@ -4360,6 +4646,144 @@ interface components {
|
|
|
4360
4646
|
[key: string]: string;
|
|
4361
4647
|
};
|
|
4362
4648
|
};
|
|
4649
|
+
/**
|
|
4650
|
+
* @description Admin-facing snapshot of the string-localization pipeline: the static configuration
|
|
4651
|
+
* that drives the warmup loaders plus the runtime per-source load records produced by
|
|
4652
|
+
* the most recent warmup. Surfaced via Task<LocalizationOverview> IPowerPortalsProService.GetLocalizationOverviewAsync().
|
|
4653
|
+
*/
|
|
4654
|
+
LocalizationOverview: {
|
|
4655
|
+
/**
|
|
4656
|
+
* @description The static configuration: registered directories, files, table-localization mode,
|
|
4657
|
+
* and supported cultures. Reflects the options at the time the overview was captured.
|
|
4658
|
+
*/
|
|
4659
|
+
configuration: components["schemas"]["LocalizationPipelineConfiguration"];
|
|
4660
|
+
/**
|
|
4661
|
+
* @description Per-source records from the most recent warmup, in the order they were loaded.
|
|
4662
|
+
* Empty when the cache hasn't been warmed yet (rare — startup runs the warmup
|
|
4663
|
+
* hook synchronously). Later entries override earlier ones on a per-key basis;
|
|
4664
|
+
* the int LocalizationSourceLoad.KeysOverriding column on each row shows
|
|
4665
|
+
* how many of its keys replaced a non-empty value already in the cache.
|
|
4666
|
+
*/
|
|
4667
|
+
sourceLoads: components["schemas"]["LocalizationSourceLoad"][];
|
|
4668
|
+
/**
|
|
4669
|
+
* Format: date-time
|
|
4670
|
+
* @description When the most recent warmup completed (UTC). `null` if no warmup has run.
|
|
4671
|
+
*/
|
|
4672
|
+
lastReloadedOn?: null | string;
|
|
4673
|
+
};
|
|
4674
|
+
/**
|
|
4675
|
+
* @description Static view of the configuration that drives the localization warmup, suitable for
|
|
4676
|
+
* rendering in an admin "what's wired up" panel alongside the runtime source list.
|
|
4677
|
+
*/
|
|
4678
|
+
LocalizationPipelineConfiguration: {
|
|
4679
|
+
/**
|
|
4680
|
+
* @description When `true`, every table's metadata is loaded; IReadOnlyList<string> LocalizationPipelineConfiguration.TablesToLocalize
|
|
4681
|
+
* is ignored. Defaults to `true` on a fresh `LocalizationOptions`.
|
|
4682
|
+
*/
|
|
4683
|
+
localizeAllAvailableTables: boolean;
|
|
4684
|
+
/**
|
|
4685
|
+
* @description The table logical names configured via `options.AddTableToLocalize(...)`.
|
|
4686
|
+
* Only honored when bool LocalizationPipelineConfiguration.LocalizeAllAvailableTables is `false`.
|
|
4687
|
+
*/
|
|
4688
|
+
tablesToLocalize: string[];
|
|
4689
|
+
/**
|
|
4690
|
+
* @description The relative directory paths registered via `options.AddLocalizationDirectory(...)`.
|
|
4691
|
+
* JSON files in these directories load LAST in the warmup, so they override anything
|
|
4692
|
+
* supplied by Dataverse metadata or web resources.
|
|
4693
|
+
*/
|
|
4694
|
+
localizationDirectories: string[];
|
|
4695
|
+
/** @description Individual file paths registered via `options.AddLocalizationFile(...)`. */
|
|
4696
|
+
localizationFiles: string[];
|
|
4697
|
+
/**
|
|
4698
|
+
* @description The web-resource name pattern the cache uses to discover Dataverse-hosted JSON
|
|
4699
|
+
* localization files. Hard-coded today; surfaced here so the admin UI doesn't have
|
|
4700
|
+
* to reinvent the literal.
|
|
4701
|
+
*/
|
|
4702
|
+
webResourcePathPattern: string;
|
|
4703
|
+
/** @description The default culture configured on CultureInfo LocalizationOptions.DefaultCulture. */
|
|
4704
|
+
defaultCulture: string;
|
|
4705
|
+
};
|
|
4706
|
+
/**
|
|
4707
|
+
* @description Discriminates the three localization source kinds the cache pulls from at warmup.
|
|
4708
|
+
* Underlying integer values are pinned so JSON / numeric serialization is stable
|
|
4709
|
+
* across releases — append new members with the next unused number and never
|
|
4710
|
+
* renumber existing entries.
|
|
4711
|
+
* @enum {integer}
|
|
4712
|
+
*/
|
|
4713
|
+
LocalizationSourceKind: 0 | 1 | 2;
|
|
4714
|
+
/**
|
|
4715
|
+
* @description One row in the runtime load-events grid: a single loader invocation against a single
|
|
4716
|
+
* source (one Dataverse table's metadata, one web resource, one disk file).
|
|
4717
|
+
*/
|
|
4718
|
+
LocalizationSourceLoad: {
|
|
4719
|
+
/**
|
|
4720
|
+
* Format: int32
|
|
4721
|
+
* @description 1-based load order. Combined with DateTimeOffset LocalizationSourceLoad.LoadedAt, gives the precedence
|
|
4722
|
+
* chain: lower-order loads' values can be overridden by higher-order loads.
|
|
4723
|
+
*/
|
|
4724
|
+
loadOrder: number | string;
|
|
4725
|
+
/**
|
|
4726
|
+
* @description Stable identifier for this source, suitable for keying download endpoints
|
|
4727
|
+
* (e.g. `"folder:Resources/app.fr.json"`, `"webresource:/PowerPortalsPro/Localization/tables.fr.json"`,
|
|
4728
|
+
* `"metadata:account"`). Stable across reloads of the same configuration.
|
|
4729
|
+
*/
|
|
4730
|
+
sourceId: string;
|
|
4731
|
+
/** @description The kind of source this row represents — drives the icon / grouping in the UI. */
|
|
4732
|
+
kind: components["schemas"]["LocalizationSourceKind"];
|
|
4733
|
+
/**
|
|
4734
|
+
* @description Human-readable name for the source — the table logical name, the web resource
|
|
4735
|
+
* name, or the file path (absolute, as resolved by the loader).
|
|
4736
|
+
*/
|
|
4737
|
+
displayName: string;
|
|
4738
|
+
/**
|
|
4739
|
+
* @description The cultures (two-letter ISO codes for metadata, filename-derived for JSON) this
|
|
4740
|
+
* source contributed strings to. A Dataverse table contributes to every culture
|
|
4741
|
+
* with an installed language pack; a JSON file contributes to exactly one.
|
|
4742
|
+
*/
|
|
4743
|
+
cultures: string[];
|
|
4744
|
+
/**
|
|
4745
|
+
* Format: int32
|
|
4746
|
+
* @description Total number of distinct keys this source contributed across all cultures
|
|
4747
|
+
* (sum of per-culture key counts).
|
|
4748
|
+
*/
|
|
4749
|
+
keysContributed: number | string;
|
|
4750
|
+
/**
|
|
4751
|
+
* Format: int32
|
|
4752
|
+
* @description Of int LocalizationSourceLoad.KeysContributed, how many replaced a non-empty value an earlier
|
|
4753
|
+
* source had already stored. Useful for spotting which JSON file is actually
|
|
4754
|
+
* overriding Dataverse-supplied translations.
|
|
4755
|
+
*/
|
|
4756
|
+
keysOverriding: number | string;
|
|
4757
|
+
/**
|
|
4758
|
+
* Format: int64
|
|
4759
|
+
* @description Wall-clock duration of the load in milliseconds.
|
|
4760
|
+
*/
|
|
4761
|
+
durationMs: number | string;
|
|
4762
|
+
/**
|
|
4763
|
+
* @description Terminal status — LocalizationSourceStatus.Loaded for success,
|
|
4764
|
+
* LocalizationSourceStatus.Failed when the loader threw (with
|
|
4765
|
+
* string? LocalizationSourceLoad.Error populated), or LocalizationSourceStatus.Skipped
|
|
4766
|
+
* when the source was discovered but ineligible (e.g. an empty file).
|
|
4767
|
+
*/
|
|
4768
|
+
status: components["schemas"]["LocalizationSourceStatus"];
|
|
4769
|
+
/**
|
|
4770
|
+
* @description Exception message when LocalizationSourceStatus LocalizationSourceLoad.Status is LocalizationSourceStatus.Failed,
|
|
4771
|
+
* otherwise `null`.
|
|
4772
|
+
*/
|
|
4773
|
+
error?: null | string;
|
|
4774
|
+
/**
|
|
4775
|
+
* Format: date-time
|
|
4776
|
+
* @description When this individual source finished loading (UTC).
|
|
4777
|
+
*/
|
|
4778
|
+
loadedAt: string;
|
|
4779
|
+
};
|
|
4780
|
+
/**
|
|
4781
|
+
* @description Terminal status of a single source's load. Underlying integer values are pinned
|
|
4782
|
+
* so JSON / numeric serialization is stable across releases — append new members
|
|
4783
|
+
* with the next unused number and never renumber existing entries.
|
|
4784
|
+
* @enum {integer}
|
|
4785
|
+
*/
|
|
4786
|
+
LocalizationSourceStatus: 0 | 1 | 2;
|
|
4363
4787
|
/**
|
|
4364
4788
|
* @description Credentials submitted to `POST /api/auth/login`. Same-origin SPAs only need to
|
|
4365
4789
|
* post this body; the server sets the auth cookie on success and returns a
|
|
@@ -4392,9 +4816,9 @@ interface components {
|
|
|
4392
4816
|
* so the client can branch UI behavior without inspecting HTTP status codes.
|
|
4393
4817
|
*
|
|
4394
4818
|
* Members carry explicit integer values: this enum ships in JSON wire payloads, so
|
|
4395
|
-
*
|
|
4396
|
-
*
|
|
4397
|
-
*
|
|
4819
|
+
* the JSON numeric representation is a stable contract. Pinning the
|
|
4820
|
+
* values prevents accidental drift if a future refactor reorders or
|
|
4821
|
+
* inserts members.
|
|
4398
4822
|
* @enum {integer}
|
|
4399
4823
|
*/
|
|
4400
4824
|
LoginResult: 0 | 1 | 2 | 3 | 4;
|
|
@@ -4581,6 +5005,53 @@ interface components {
|
|
|
4581
5005
|
[key: string]: components["schemas"]["ColumnValueBase"];
|
|
4582
5006
|
};
|
|
4583
5007
|
};
|
|
5008
|
+
/**
|
|
5009
|
+
* @description Stable, environment-wide settings sourced from the Dataverse `organization`
|
|
5010
|
+
* record. Cached server-side (they change very rarely — only when an admin updates
|
|
5011
|
+
* the org record) and re-served to clients via `/api/organizationSettings` so
|
|
5012
|
+
* the front end can prime defaults without firing its own Dataverse trip.
|
|
5013
|
+
* Two categories of fields live here today:
|
|
5014
|
+
* * Currency OrganizationSettings.DefaultCurrency — used by create-mode editors to render the
|
|
5015
|
+
* correct currency symbol on new records before they're saved.
|
|
5016
|
+
* * IReadOnlyList<string> OrganizationSettings.BlockedFileExtensions + long OrganizationSettings.MaxUploadFileSizeInBytes
|
|
5017
|
+
* — file-upload constraints clients mirror so users get a friendly client-side
|
|
5018
|
+
* rejection instead of a round-trip failure.
|
|
5019
|
+
* New properties are appended as additional organization-level defaults become
|
|
5020
|
+
* useful client-side (locale, base language, formatting policies, etc.).
|
|
5021
|
+
*/
|
|
5022
|
+
OrganizationSettings: {
|
|
5023
|
+
/**
|
|
5024
|
+
* @description The org's base currency, resolved from the `organization.basecurrencyid`
|
|
5025
|
+
* lookup. `MoneyEdit` consumes this in create mode so a brand-new record
|
|
5026
|
+
* displays the right currency symbol before the user picks one or saves.
|
|
5027
|
+
*/
|
|
5028
|
+
defaultCurrency: components["schemas"]["Currency"];
|
|
5029
|
+
/**
|
|
5030
|
+
* @description Lowercase file extensions (without the leading dot) that Dataverse refuses to
|
|
5031
|
+
* accept as uploads — for example `"svg"`, `"exe"`, `"bat"`. Sourced
|
|
5032
|
+
* from the organization's `blockedattachments` setting (a semicolon-delimited
|
|
5033
|
+
* string in Dataverse, parsed and normalised here). Clients reject these client-side
|
|
5034
|
+
* before the upload round-trips.
|
|
5035
|
+
*/
|
|
5036
|
+
blockedFileExtensions: string[];
|
|
5037
|
+
/**
|
|
5038
|
+
* Format: int64
|
|
5039
|
+
* @description Maximum upload size for file attachments and file-column payloads, in bytes.
|
|
5040
|
+
* Sourced from the organization's `maxuploadfilesize` setting. Clients
|
|
5041
|
+
* compare file byte length directly against this for a pre-upload check.
|
|
5042
|
+
*/
|
|
5043
|
+
maxUploadFileSizeInBytes: number | string;
|
|
5044
|
+
/**
|
|
5045
|
+
* @description The organization's default time-zone id (a Windows time-zone id such as
|
|
5046
|
+
* `Pacific Standard Time`, suitable for TimeZoneInfo TimeZoneInfo.FindSystemTimeZoneById(string id)),
|
|
5047
|
+
* resolved from the connecting app user's `usersettings.timezonecode`. The
|
|
5048
|
+
* `organization` entity has no time-zone column of its own, so this is the closest
|
|
5049
|
+
* org-wide default. Used server-side to format `UserLocal` dates for contacts (portal
|
|
5050
|
+
* users, which have no `usersettings` row); empty when it can't be resolved. Defaults to
|
|
5051
|
+
* empty for backward compatibility with older cached payloads.
|
|
5052
|
+
*/
|
|
5053
|
+
defaultTimeZoneId?: string;
|
|
5054
|
+
};
|
|
4584
5055
|
/** @description Paging metadata for a Dataverse query response. */
|
|
4585
5056
|
PagingInfo: {
|
|
4586
5057
|
/**
|
|
@@ -4755,8 +5226,7 @@ interface components {
|
|
|
4755
5226
|
};
|
|
4756
5227
|
/**
|
|
4757
5228
|
* @description Outcome of a RegisterRequest. Members carry explicit integer
|
|
4758
|
-
* values so
|
|
4759
|
-
* stable contract across reorderings.
|
|
5229
|
+
* values so the JSON wire form is a stable contract across reorderings.
|
|
4760
5230
|
* @enum {integer}
|
|
4761
5231
|
*/
|
|
4762
5232
|
RegisterResult: 0 | 1 | 2;
|
|
@@ -4863,8 +5333,8 @@ interface components {
|
|
|
4863
5333
|
};
|
|
4864
5334
|
/**
|
|
4865
5335
|
* @description Outcome of `POST /api/auth/reset-password`. Members carry explicit
|
|
4866
|
-
* integer values so
|
|
4867
|
-
*
|
|
5336
|
+
* integer values so the JSON wire form is a stable contract across
|
|
5337
|
+
* reorderings.
|
|
4868
5338
|
* @enum {integer}
|
|
4869
5339
|
*/
|
|
4870
5340
|
ResetPasswordResult: 0 | 1 | 2;
|
|
@@ -4921,7 +5391,7 @@ interface components {
|
|
|
4921
5391
|
* the column matching `TableMetadata.PrimaryNameColumn` AND
|
|
4922
5392
|
* belonging to the view's main table (not a linked-entity column).
|
|
4923
5393
|
* Clients use this to optionally render the cell as a clickable link
|
|
4924
|
-
* that triggers the grid's edit action (
|
|
5394
|
+
* that triggers the grid's edit action (gated by
|
|
4925
5395
|
* `AllowNavigateOnPrimaryNameClick`). At most one column per
|
|
4926
5396
|
* view will have this set; consumers can safely use it to decorate
|
|
4927
5397
|
* "open this record"-style links without per-row metadata lookups.
|
|
@@ -4995,8 +5465,8 @@ interface components {
|
|
|
4995
5465
|
};
|
|
4996
5466
|
/**
|
|
4997
5467
|
* @description Outcome of `POST /api/auth/switch-identity`. Members carry explicit
|
|
4998
|
-
* integer values so
|
|
4999
|
-
*
|
|
5468
|
+
* integer values so the JSON wire form is a stable contract across
|
|
5469
|
+
* reorderings.
|
|
5000
5470
|
* @enum {integer}
|
|
5001
5471
|
*/
|
|
5002
5472
|
SwitchIdentityResult: 0 | 1 | 2 | 3;
|
|
@@ -5045,6 +5515,7 @@ interface components {
|
|
|
5045
5515
|
formattedValues?: {
|
|
5046
5516
|
[key: string]: string;
|
|
5047
5517
|
};
|
|
5518
|
+
currency?: null | components["schemas"]["Currency"];
|
|
5048
5519
|
/** @description True when at least one column value has been changed since the record was loaded or void TableRecord.ResetState() was called. */
|
|
5049
5520
|
isDirty?: boolean;
|
|
5050
5521
|
/** Format: uuid */
|
|
@@ -5067,6 +5538,121 @@ interface components {
|
|
|
5067
5538
|
* @enum {integer}
|
|
5068
5539
|
*/
|
|
5069
5540
|
TableSecurityPermission: 0 | 1 | 2 | 4 | 8 | 16 | 32 | 63;
|
|
5541
|
+
/**
|
|
5542
|
+
* @description One target language's translated output plus how many strings were freshly translated
|
|
5543
|
+
* versus reused from the Dataverse translation memory.
|
|
5544
|
+
*/
|
|
5545
|
+
TranslatedFile: {
|
|
5546
|
+
/** @description The portal culture this file was translated into (e.g. `"fr-FR"`). */
|
|
5547
|
+
targetCultureCode: string;
|
|
5548
|
+
/** @description Suggested filename for this language's download (e.g. `"app.fr-FR.json"`). */
|
|
5549
|
+
fileName: string;
|
|
5550
|
+
/**
|
|
5551
|
+
* Format: int32
|
|
5552
|
+
* @description Number of strings sent to the translation provider for this language this run.
|
|
5553
|
+
*/
|
|
5554
|
+
translatedCount: number | string;
|
|
5555
|
+
/**
|
|
5556
|
+
* Format: int32
|
|
5557
|
+
* @description Number of strings that came from the Dataverse translation memory (not re-sent to the provider).
|
|
5558
|
+
*/
|
|
5559
|
+
reusedCount: number | string;
|
|
5560
|
+
/**
|
|
5561
|
+
* Format: byte
|
|
5562
|
+
* @description UTF-8-encoded translated JSON body, in the same nested-object shape as the source.
|
|
5563
|
+
*/
|
|
5564
|
+
content: string;
|
|
5565
|
+
};
|
|
5566
|
+
/**
|
|
5567
|
+
* @description Admin-facing description of whether the localization-translation feature is usable in
|
|
5568
|
+
* the current environment, returned by Task<TranslationAvailability> IPowerPortalsProService.GetTranslationAvailabilityAsync().
|
|
5569
|
+
* Drives whether the `LocalizationTranslator` UI shows its upload/translate panel, an
|
|
5570
|
+
* "install the managed solution" prompt, or nothing at all.
|
|
5571
|
+
*/
|
|
5572
|
+
TranslationAvailability: {
|
|
5573
|
+
/**
|
|
5574
|
+
* @description `true` when a translation provider is registered and its credentials are configured
|
|
5575
|
+
* (the consumer called one of the `AddPowerPortalsPro<Provider>TranslationService()`
|
|
5576
|
+
* methods — Azure, DeepL, Google, … — and supplied the provider's key). When `false` the UI
|
|
5577
|
+
* renders nothing — translation is a host-wiring concern the admin can't self-serve.
|
|
5578
|
+
*/
|
|
5579
|
+
isConfigured: boolean;
|
|
5580
|
+
/**
|
|
5581
|
+
* @description `true` when the translation managed solution (default unique name
|
|
5582
|
+
* `PowerPortalsProLocalization`) is installed in the connected environment, so the
|
|
5583
|
+
* translation-memory tables exist. When bool TranslationAvailability.IsConfigured is `true` but this
|
|
5584
|
+
* is `false`, the UI shows a prompt to install the solution.
|
|
5585
|
+
*/
|
|
5586
|
+
isSolutionInstalled: boolean;
|
|
5587
|
+
/**
|
|
5588
|
+
* @description The candidate target languages — the portal's supported cultures, each annotated with
|
|
5589
|
+
* whether the configured translation provider can translate to it. Cultures the provider
|
|
5590
|
+
* doesn't support are still returned (so the admin sees them) but flagged via
|
|
5591
|
+
* bool TranslationLanguageOption.IsSupportedByProvider so the UI can disable them.
|
|
5592
|
+
* Empty when bool TranslationAvailability.IsConfigured is `false`.
|
|
5593
|
+
*/
|
|
5594
|
+
targetLanguages: components["schemas"]["TranslationLanguageOption"][];
|
|
5595
|
+
};
|
|
5596
|
+
/**
|
|
5597
|
+
* @description One selectable target language in the translation UI: a portal-supported culture paired
|
|
5598
|
+
* with the translation-provider language code it maps to (when the provider supports it).
|
|
5599
|
+
*/
|
|
5600
|
+
TranslationLanguageOption: {
|
|
5601
|
+
/** @description The portal culture code (e.g. `"fr-FR"`) — what the UI shows and the output file is named for. */
|
|
5602
|
+
cultureCode: string;
|
|
5603
|
+
/** @description Human-readable language/culture display name (e.g. `"French (France)"`). */
|
|
5604
|
+
displayName: string;
|
|
5605
|
+
/**
|
|
5606
|
+
* @description The translation-provider language code this culture maps to (e.g. `"fr"`), or `null`
|
|
5607
|
+
* when the configured provider doesn't support the culture's language.
|
|
5608
|
+
*/
|
|
5609
|
+
providerLanguageCode?: null | string;
|
|
5610
|
+
/** @description `true` when the configured provider can translate to this culture (string? TranslationLanguageOption.ProviderLanguageCode is non-null). */
|
|
5611
|
+
isSupportedByProvider?: boolean;
|
|
5612
|
+
};
|
|
5613
|
+
/**
|
|
5614
|
+
* @description Request to translate one uploaded localization file into one or more target languages,
|
|
5615
|
+
* passed to Task<TranslationResult> IPowerPortalsProService.TranslateLocalizationFileAsync(TranslationRequest request).
|
|
5616
|
+
*/
|
|
5617
|
+
TranslationRequest: {
|
|
5618
|
+
/** @description BCP-47 source language code (e.g. `"en"`), auto-detected from the filename but admin-editable. */
|
|
5619
|
+
sourceLanguage: string;
|
|
5620
|
+
/** @description The portal culture codes to translate into (the string TranslationLanguageOption.CultureCode values the admin selected). */
|
|
5621
|
+
targetCultureCodes: string[];
|
|
5622
|
+
/** @description The original uploaded filename (e.g. `"app.en.json"`) — used to name the per-language output files. */
|
|
5623
|
+
fileName: string;
|
|
5624
|
+
/**
|
|
5625
|
+
* Format: byte
|
|
5626
|
+
* @description The raw uploaded file bytes (UTF-8 JSON, optionally wrapped in a `var x = {...}` assignment, which the translator tolerates).
|
|
5627
|
+
*/
|
|
5628
|
+
sourceContent: string;
|
|
5629
|
+
};
|
|
5630
|
+
/**
|
|
5631
|
+
* @description Result of a translate operation: one TranslatedFile per requested target
|
|
5632
|
+
* language plus a single zip of all of them, returned by
|
|
5633
|
+
* Task<TranslationResult> IPowerPortalsProService.TranslateLocalizationFileAsync(TranslationRequest request).
|
|
5634
|
+
*/
|
|
5635
|
+
TranslationResult: {
|
|
5636
|
+
/** @description One entry per requested target language, each with its own counts and downloadable content. */
|
|
5637
|
+
files: components["schemas"]["TranslatedFile"][];
|
|
5638
|
+
/**
|
|
5639
|
+
* Format: byte
|
|
5640
|
+
* @description All IReadOnlyList<TranslatedFile> TranslationResult.Files packaged into a single zip — backs the "Download all" button.
|
|
5641
|
+
*/
|
|
5642
|
+
zipContent: string;
|
|
5643
|
+
/** @description Suggested filename for the byte[] TranslationResult.ZipContent download. */
|
|
5644
|
+
zipFileName: string;
|
|
5645
|
+
/**
|
|
5646
|
+
* Format: int32
|
|
5647
|
+
* @description Total strings translated via the provider across all languages this run (sum of int TranslatedFile.TranslatedCount).
|
|
5648
|
+
*/
|
|
5649
|
+
totalTranslated: number | string;
|
|
5650
|
+
/**
|
|
5651
|
+
* Format: int32
|
|
5652
|
+
* @description Total strings satisfied from the Dataverse translation memory across all languages (sum of int TranslatedFile.ReusedCount).
|
|
5653
|
+
*/
|
|
5654
|
+
totalReused: number | string;
|
|
5655
|
+
};
|
|
5070
5656
|
/**
|
|
5071
5657
|
* @description Snapshot of the user's two-factor configuration, returned by
|
|
5072
5658
|
* `GET /api/auth/manage/2fa`. Drives the Manage/TwoFactorAuthentication
|
|
@@ -5240,6 +5826,7 @@ type ConfirmEmailResponse = Schemas$1['ConfirmEmailResponse'];
|
|
|
5240
5826
|
type ResendEmailConfirmationRequest = Schemas$1['ResendEmailConfirmationRequest'];
|
|
5241
5827
|
type CurrentUserInfo = Schemas$1['CurrentUserInfo'];
|
|
5242
5828
|
type ExternalLoginProviderInfo = Schemas$1['ExternalLoginProviderInfo'];
|
|
5829
|
+
type AuthOptionsResponse = Schemas$1['AuthOptionsResponse'];
|
|
5243
5830
|
type PendingExternalLoginResponse = Schemas$1['PendingExternalLoginResponse'];
|
|
5244
5831
|
type ConfirmExternalLoginRequest = Schemas$1['ConfirmExternalLoginRequest'];
|
|
5245
5832
|
type ConfirmExternalLoginResponse = Schemas$1['ConfirmExternalLoginResponse'];
|
|
@@ -5270,16 +5857,16 @@ type PersonalDataResponse = Schemas$1['PersonalDataResponse'];
|
|
|
5270
5857
|
type DeletePersonalDataRequest = Schemas$1['DeletePersonalDataRequest'];
|
|
5271
5858
|
type DeletePersonalDataResponse = Schemas$1['DeletePersonalDataResponse'];
|
|
5272
5859
|
/**
|
|
5273
|
-
* SPA-facing wrapper over the framework's `/api/auth/*` endpoints —
|
|
5274
|
-
*
|
|
5275
|
-
*
|
|
5860
|
+
* SPA-facing wrapper over the framework's `/api/auth/*` endpoints — sign-
|
|
5861
|
+
* in, profile, 2FA, external login, forgot-password, registration, and
|
|
5862
|
+
* confirmation flows.
|
|
5276
5863
|
*
|
|
5277
5864
|
* Cookie auth flows automatically (the underlying {@link Transport} sends
|
|
5278
5865
|
* `credentials: 'include'`), so a successful `loginAsync` leaves subsequent calls
|
|
5279
5866
|
* authenticated without any token wiring on the React side.
|
|
5280
5867
|
*
|
|
5281
5868
|
* Mid-flow steps (`login → 2FA`, `register → confirm email`, `forgot → reset`) each
|
|
5282
|
-
* surface as their own method so the consuming SPA owns its routing/UX between steps
|
|
5869
|
+
* surface as their own method so the consuming SPA owns its routing/UX between steps
|
|
5283
5870
|
* same design as the C# interface.
|
|
5284
5871
|
*/
|
|
5285
5872
|
declare class AuthClient {
|
|
@@ -5321,8 +5908,13 @@ declare class AuthClient {
|
|
|
5321
5908
|
* startup to decide whether to render signed-in UI vs. the login flow.
|
|
5322
5909
|
*/
|
|
5323
5910
|
getCurrentUserAsync(signal?: AbortSignal): Promise<CurrentUserInfo>;
|
|
5324
|
-
/**
|
|
5325
|
-
|
|
5911
|
+
/**
|
|
5912
|
+
* Anonymous auth options for the sign-in UI: whether the portal accepts local
|
|
5913
|
+
* username/password accounts (`localAccountsEnabled`) plus the configured external
|
|
5914
|
+
* providers — one round-trip the login page uses to decide whether to render the
|
|
5915
|
+
* local form / register + reset links and which provider buttons to show.
|
|
5916
|
+
*/
|
|
5917
|
+
getAuthOptionsAsync(signal?: AbortSignal): Promise<AuthOptionsResponse>;
|
|
5326
5918
|
/**
|
|
5327
5919
|
* Reads the in-flight external-login cookie set by an OAuth callback. Returns
|
|
5328
5920
|
* `null` when no callback is in flight (the endpoint replies 204) — the client
|
|
@@ -5405,43 +5997,56 @@ declare class AuthClient {
|
|
|
5405
5997
|
* Aggregate function applied to a column in an aggregate FetchXML query.
|
|
5406
5998
|
*/
|
|
5407
5999
|
declare const AggregateType: {
|
|
6000
|
+
/** No aggregation. */
|
|
5408
6001
|
readonly None: 0;
|
|
6002
|
+
/** Count of rows (including nulls). */
|
|
5409
6003
|
readonly Count: 1;
|
|
6004
|
+
/** Count of rows where the column is not null. */
|
|
5410
6005
|
readonly CountColumn: 2;
|
|
6006
|
+
/** Sum of values. */
|
|
5411
6007
|
readonly Sum: 3;
|
|
6008
|
+
/** Arithmetic mean of values. */
|
|
5412
6009
|
readonly Avg: 4;
|
|
6010
|
+
/** Minimum value. */
|
|
5413
6011
|
readonly Min: 5;
|
|
6012
|
+
/** Maximum value. */
|
|
5414
6013
|
readonly Max: 6;
|
|
5415
6014
|
};
|
|
5416
6015
|
type AggregateType = (typeof AggregateType)[keyof typeof AggregateType];
|
|
5417
6016
|
/**
|
|
5418
6017
|
* Compression format for the archive produced by
|
|
5419
|
-
*
|
|
6018
|
+
* `IPowerPortalsProService.CreateFileArchiveAsync`.
|
|
5420
6019
|
* Currently only ArchiveFormat.Zip is supported; the enum is open-ended so
|
|
5421
6020
|
* future formats can land without breaking the wire schema.
|
|
5422
6021
|
*/
|
|
5423
6022
|
declare const ArchiveFormat: {
|
|
6023
|
+
/** Standard ZIP archive (application/zip, .zip extension). Built via ZipArchive with Optimal. */
|
|
5424
6024
|
readonly Zip: 0;
|
|
5425
6025
|
};
|
|
5426
6026
|
type ArchiveFormat = (typeof ArchiveFormat)[keyof typeof ArchiveFormat];
|
|
5427
6027
|
/**
|
|
5428
6028
|
* Outcome of `POST /api/auth/manage/email/change`. Members carry explicit
|
|
5429
|
-
* integer values so
|
|
5430
|
-
*
|
|
6029
|
+
* integer values so the JSON wire form is a stable contract across
|
|
6030
|
+
* reorderings.
|
|
5431
6031
|
*/
|
|
5432
6032
|
declare const ChangeEmailResult: {
|
|
6033
|
+
/** A confirmation email was sent to the new address. The change does not take effect until the user clicks the link. */
|
|
5433
6034
|
readonly ConfirmationEmailSent: 0;
|
|
6035
|
+
/** The submitted email matches the user's current email. Nothing was sent. The client should show a "this is already your email" message. */
|
|
5434
6036
|
readonly SameAsCurrentEmail: 1;
|
|
5435
6037
|
};
|
|
5436
6038
|
type ChangeEmailResult = (typeof ChangeEmailResult)[keyof typeof ChangeEmailResult];
|
|
5437
6039
|
/**
|
|
5438
6040
|
* Outcome of `POST /api/auth/manage/password/change`. Members carry
|
|
5439
|
-
* explicit integer values so
|
|
5440
|
-
*
|
|
6041
|
+
* explicit integer values so the JSON wire form is a stable contract
|
|
6042
|
+
* across reorderings.
|
|
5441
6043
|
*/
|
|
5442
6044
|
declare const ChangePasswordResult: {
|
|
6045
|
+
/** The password was changed. The auth cookie has been refreshed to pick up the new security stamp so other sessions are invalidated. */
|
|
5443
6046
|
readonly Success: 0;
|
|
6047
|
+
/** The supplied old password did not match the current password. The client should show an "incorrect current password" error and allow retry. */
|
|
5444
6048
|
readonly IncorrectOldPassword: 1;
|
|
6049
|
+
/** The new password did not satisfy the host's IdentityOptions.Password rules. Errors carries the per-rule messages so the client can show actionable feedback. */
|
|
5445
6050
|
readonly InvalidPassword: 2;
|
|
5446
6051
|
};
|
|
5447
6052
|
type ChangePasswordResult = (typeof ChangePasswordResult)[keyof typeof ChangePasswordResult];
|
|
@@ -5455,16 +6060,27 @@ type ChangePasswordResult = (typeof ChangePasswordResult)[keyof typeof ChangePas
|
|
|
5455
6060
|
* current culture.
|
|
5456
6061
|
*/
|
|
5457
6062
|
declare const ChartDateGrouping: {
|
|
6063
|
+
/** No date grouping — the column is grouped by its raw value. */
|
|
5458
6064
|
readonly None: 0;
|
|
6065
|
+
/** Group by day (dategrouping="day"). Label: day number. */
|
|
5459
6066
|
readonly Day: 1;
|
|
6067
|
+
/** Group by ISO week (dategrouping="week"). Label: week number. */
|
|
5460
6068
|
readonly Week: 2;
|
|
6069
|
+
/** Group by calendar month (dategrouping="month"). Label: abbreviated month name (Jan, Feb, …) in the current culture. */
|
|
5461
6070
|
readonly Month: 3;
|
|
6071
|
+
/** Group by calendar quarter (dategrouping="quarter"). Label: quarter number. */
|
|
5462
6072
|
readonly Quarter: 4;
|
|
6073
|
+
/** Group by calendar year (dategrouping="year"). Label: year. */
|
|
5463
6074
|
readonly Year: 5;
|
|
6075
|
+
/** Group by month + year. Label: "Jan 2024". */
|
|
5464
6076
|
readonly MonthAndYear: 6;
|
|
6077
|
+
/** Group by day + month. Label: "15 Jan". */
|
|
5465
6078
|
readonly DayAndMonth: 7;
|
|
6079
|
+
/** Group by day + month + year. Label: "15 Jan 2024". */
|
|
5466
6080
|
readonly DayAndMonthAndYear: 8;
|
|
6081
|
+
/** Group by ISO week + year. Label: "W15 2024". */
|
|
5467
6082
|
readonly WeekAndYear: 9;
|
|
6083
|
+
/** Group by quarter + year. Label: "Q1 2024". */
|
|
5468
6084
|
readonly QuarterAndYear: 10;
|
|
5469
6085
|
};
|
|
5470
6086
|
type ChartDateGrouping = (typeof ChartDateGrouping)[keyof typeof ChartDateGrouping];
|
|
@@ -5472,41 +6088,69 @@ type ChartDateGrouping = (typeof ChartDateGrouping)[keyof typeof ChartDateGroupi
|
|
|
5472
6088
|
* Identifies the data type of a Dataverse column. Values 0–20 mirror the Dataverse SDK's `AttributeTypeCode`; values 40+ are PowerPortalsPro-specific column types not present in Dataverse.
|
|
5473
6089
|
*/
|
|
5474
6090
|
declare const ColumnType: {
|
|
6091
|
+
/** A Boolean attribute. Value = 0. */
|
|
5475
6092
|
readonly Boolean: 0;
|
|
6093
|
+
/** An attribute that represents a customer. Value = 1. */
|
|
5476
6094
|
readonly Customer: 1;
|
|
6095
|
+
/** A date/time attribute. Value = 2. */
|
|
5477
6096
|
readonly DateTime: 2;
|
|
6097
|
+
/** A decimal attribute. Value = 3. */
|
|
5478
6098
|
readonly Decimal: 3;
|
|
6099
|
+
/** A double attribute. Value = 4. */
|
|
5479
6100
|
readonly Double: 4;
|
|
6101
|
+
/** An integer attribute. Value = 5. */
|
|
5480
6102
|
readonly Integer: 5;
|
|
6103
|
+
/** A lookup attribute. Value = 6. */
|
|
5481
6104
|
readonly Lookup: 6;
|
|
6105
|
+
/** A memo attribute. Value = 7. */
|
|
5482
6106
|
readonly Memo: 7;
|
|
6107
|
+
/** A money attribute. Value = 8. */
|
|
5483
6108
|
readonly Money: 8;
|
|
6109
|
+
/** An owner attribute. Value = 9. */
|
|
5484
6110
|
readonly Owner: 9;
|
|
6111
|
+
/** A partylist attribute. Value = 10. */
|
|
5485
6112
|
readonly PartyList: 10;
|
|
6113
|
+
/** A picklist (single-select choice) attribute. Value = 11. */
|
|
5486
6114
|
readonly Choice: 11;
|
|
6115
|
+
/** A state attribute. Value = 12. */
|
|
5487
6116
|
readonly State: 12;
|
|
6117
|
+
/** A status attribute. Value = 13. */
|
|
5488
6118
|
readonly Status: 13;
|
|
6119
|
+
/** A string attribute. Value = 14. */
|
|
5489
6120
|
readonly String: 14;
|
|
6121
|
+
/** A unique identifier (GUID) attribute. Value = 15. */
|
|
5490
6122
|
readonly Uniqueidentifier: 15;
|
|
6123
|
+
/** An attribute that contains calendar rules. Value = 16. */
|
|
5491
6124
|
readonly CalendarRules: 16;
|
|
6125
|
+
/** An attribute that is created by the system at run time. Value = 17. */
|
|
5492
6126
|
readonly Virtual: 17;
|
|
6127
|
+
/** A big integer (long) attribute. Value = 18. */
|
|
5493
6128
|
readonly BigInt: 18;
|
|
6129
|
+
/** A managed property attribute. Value = 19. */
|
|
5494
6130
|
readonly ManagedProperty: 19;
|
|
6131
|
+
/** An entity name attribute. Value = 20. */
|
|
5495
6132
|
readonly EntityName: 20;
|
|
6133
|
+
/** A multi-select choice attribute. Value = 40. PowerPortalsPro-specific (not present in Dataverse AttributeTypeCode). */
|
|
5496
6134
|
readonly MultiSelectChoice: 40;
|
|
6135
|
+
/** A file attachment attribute. Value = 41. PowerPortalsPro-specific (not present in Dataverse AttributeTypeCode). */
|
|
5497
6136
|
readonly File: 41;
|
|
6137
|
+
/** An image attribute. Value = 42. PowerPortalsPro-specific (not present in Dataverse AttributeTypeCode). */
|
|
5498
6138
|
readonly Image: 42;
|
|
5499
6139
|
};
|
|
5500
6140
|
type ColumnType = (typeof ColumnType)[keyof typeof ColumnType];
|
|
5501
6141
|
/**
|
|
5502
6142
|
* Outcome of `POST /api/auth/external-login/confirm`. Members carry
|
|
5503
|
-
* explicit integer values so
|
|
5504
|
-
*
|
|
6143
|
+
* explicit integer values so the JSON wire form is a stable contract
|
|
6144
|
+
* across reorderings.
|
|
5505
6145
|
*/
|
|
5506
6146
|
declare const ConfirmExternalLoginResult: {
|
|
6147
|
+
/** The external login was linked (creating a new local account if needed) and the user has been signed in. The auth cookie is set on the response. */
|
|
5507
6148
|
readonly SignedIn: 0;
|
|
6149
|
+
/** The account was created but the host requires email confirmation. A confirmation link has been sent; the user is NOT signed in yet. */
|
|
5508
6150
|
readonly ConfirmationEmailSent: 1;
|
|
6151
|
+
/** No external-login cookie was found — the user landed on the confirm endpoint without a fresh OAuth callback. The client should redirect back to the login page. */
|
|
5509
6152
|
readonly NoPendingExternalLogin: 2;
|
|
6153
|
+
/** Identity rejected the create / add-login operation (e.g. duplicate email already linked to a different account). Errors carries the per-rule messages. */
|
|
5510
6154
|
readonly Failure: 3;
|
|
5511
6155
|
};
|
|
5512
6156
|
type ConfirmExternalLoginResult = (typeof ConfirmExternalLoginResult)[keyof typeof ConfirmExternalLoginResult];
|
|
@@ -5514,29 +6158,37 @@ type ConfirmExternalLoginResult = (typeof ConfirmExternalLoginResult)[keyof type
|
|
|
5514
6158
|
* Specifies the date/time behavior of a DateTime column.
|
|
5515
6159
|
*/
|
|
5516
6160
|
declare const DateTimeBehavior: {
|
|
6161
|
+
/** Only the date portion is stored; no time component. */
|
|
5517
6162
|
readonly DateOnly: 1;
|
|
6163
|
+
/** The value is stored in UTC and converted to the user's local time zone for display. */
|
|
5518
6164
|
readonly UserLocal: 2;
|
|
6165
|
+
/** The value is stored and displayed exactly as entered, without time zone conversion. */
|
|
5519
6166
|
readonly TimeZoneIndependent: 3;
|
|
5520
6167
|
};
|
|
5521
6168
|
type DateTimeBehavior = (typeof DateTimeBehavior)[keyof typeof DateTimeBehavior];
|
|
5522
6169
|
/**
|
|
5523
6170
|
* Outcome of `POST /api/auth/manage/personal-data/delete`. Members carry
|
|
5524
|
-
* explicit integer values so
|
|
5525
|
-
*
|
|
6171
|
+
* explicit integer values so the JSON wire form is a stable contract
|
|
6172
|
+
* across reorderings.
|
|
5526
6173
|
*/
|
|
5527
6174
|
declare const DeletePersonalDataResult: {
|
|
6175
|
+
/** The account was deleted and the auth cookie has been cleared. */
|
|
5528
6176
|
readonly Success: 0;
|
|
6177
|
+
/** The user has a local password set, and one was supplied, but it did not match. The client should show an "incorrect password" error and allow retry. */
|
|
5529
6178
|
readonly IncorrectPassword: 1;
|
|
6179
|
+
/** The user has a local password set but the request body's password field was empty. The client should prompt for the password and resubmit. Distinct from IncorrectPassword so the UI can choose between "please enter your password" and "that password is wrong." */
|
|
5530
6180
|
readonly RequireLocalPassword: 2;
|
|
5531
6181
|
};
|
|
5532
6182
|
type DeletePersonalDataResult = (typeof DeletePersonalDataResult)[keyof typeof DeletePersonalDataResult];
|
|
5533
6183
|
/**
|
|
5534
6184
|
* Which Dataverse table backs an external-login candidate. Members carry
|
|
5535
|
-
* explicit integer values so
|
|
5536
|
-
*
|
|
6185
|
+
* explicit integer values so the JSON wire form is a stable contract
|
|
6186
|
+
* across reorderings.
|
|
5537
6187
|
*/
|
|
5538
6188
|
declare const ExternalLoginCandidateKind: {
|
|
6189
|
+
/** The candidate is a Dataverse contact record. */
|
|
5539
6190
|
readonly Contact: 0;
|
|
6191
|
+
/** The candidate is a Dataverse systemuser record. */
|
|
5540
6192
|
readonly SystemUser: 1;
|
|
5541
6193
|
};
|
|
5542
6194
|
type ExternalLoginCandidateKind = (typeof ExternalLoginCandidateKind)[keyof typeof ExternalLoginCandidateKind];
|
|
@@ -5544,7 +6196,9 @@ type ExternalLoginCandidateKind = (typeof ExternalLoginCandidateKind)[keyof type
|
|
|
5544
6196
|
* Determines how the server returns the archive bytes to the caller.
|
|
5545
6197
|
*/
|
|
5546
6198
|
declare const FileArchiveResponseFormat: {
|
|
6199
|
+
/** Returns the raw archive bytes as the response body, with Content-Type: application/zip (or the matching MIME for the chosen ArchiveFormat) and a Content-Disposition: attachment; filename=… header. The caller hands the response directly to the browser's download path — no base64 round-trip. Default mode. */
|
|
5547
6200
|
readonly BinaryStream: 0;
|
|
6201
|
+
/** Returns a JSON envelope (FileArchiveJsonResponse) that wraps the archive's bytes as base64. Useful when the consumer wants to inspect headers / filename / size programmatically before triggering a download, or when the host environment can't stream binary responses (some test harnesses, some service workers). Trades ~33% wire-size overhead for the JSON wrapper. */
|
|
5548
6202
|
readonly Json: 1;
|
|
5549
6203
|
};
|
|
5550
6204
|
type FileArchiveResponseFormat = (typeof FileArchiveResponseFormat)[keyof typeof FileArchiveResponseFormat];
|
|
@@ -5552,15 +6206,25 @@ type FileArchiveResponseFormat = (typeof FileArchiveResponseFormat)[keyof typeof
|
|
|
5552
6206
|
* Join type used on a FetchXML link-entity.
|
|
5553
6207
|
*/
|
|
5554
6208
|
declare const JoinOperator: {
|
|
6209
|
+
/** Inner join — only matching rows are returned. */
|
|
5555
6210
|
readonly Inner: 0;
|
|
6211
|
+
/** Left outer join — unmatched parent rows are returned with null link columns. */
|
|
5556
6212
|
readonly LeftOuter: 1;
|
|
6213
|
+
/** Natural join. */
|
|
5557
6214
|
readonly Natural: 2;
|
|
6215
|
+
/** Match first row using cross apply. */
|
|
5558
6216
|
readonly MatchFirstRowUsingCrossApply: 3;
|
|
6217
|
+
/** In join — semi-join used for subqueries. */
|
|
5559
6218
|
readonly In: 4;
|
|
6219
|
+
/** Exists join — semi-join evaluating existence. */
|
|
5560
6220
|
readonly Exists: 5;
|
|
6221
|
+
/** Any-match semi-join. */
|
|
5561
6222
|
readonly Any: 6;
|
|
6223
|
+
/** Inverse of Any. */
|
|
5562
6224
|
readonly NotAny: 7;
|
|
6225
|
+
/** All-match semi-join. */
|
|
5563
6226
|
readonly All: 8;
|
|
6227
|
+
/** Inverse of All. */
|
|
5564
6228
|
readonly NotAll: 9;
|
|
5565
6229
|
};
|
|
5566
6230
|
type JoinOperator = (typeof JoinOperator)[keyof typeof JoinOperator];
|
|
@@ -5569,26 +6233,33 @@ type JoinOperator = (typeof JoinOperator)[keyof typeof JoinOperator];
|
|
|
5569
6233
|
* so the client can branch UI behavior without inspecting HTTP status codes.
|
|
5570
6234
|
*
|
|
5571
6235
|
* Members carry explicit integer values: this enum ships in JSON wire payloads, so
|
|
5572
|
-
*
|
|
5573
|
-
*
|
|
5574
|
-
*
|
|
6236
|
+
* the JSON numeric representation is a stable contract. Pinning the
|
|
6237
|
+
* values prevents accidental drift if a future refactor reorders or
|
|
6238
|
+
* inserts members.
|
|
5575
6239
|
*/
|
|
5576
6240
|
declare const LoginResult: {
|
|
6241
|
+
/** Credentials were accepted and the auth cookie has been set. The client should navigate to the post-login destination (typically ReturnUrl). */
|
|
5577
6242
|
readonly Success: 0;
|
|
6243
|
+
/** Credentials were accepted but the account requires a second factor. The server has sent the 2FA code (e.g., via email) and is waiting for a follow-up call to POST /api/auth/login/2fa. No auth cookie is set yet. */
|
|
5578
6244
|
readonly RequiresTwoFactor: 1;
|
|
6245
|
+
/** The email/password pair did not match any account, or the password was wrong. The client should show a generic "invalid credentials" message — the server deliberately does not distinguish between "no such email" and "wrong password" to avoid account-enumeration attacks. */
|
|
5579
6246
|
readonly InvalidCredentials: 2;
|
|
6247
|
+
/** The account exists and the password matched, but the email address has not been confirmed and the host configured SignIn.RequireConfirmedAccount. The client should redirect to the registration-confirmation flow. */
|
|
5580
6248
|
readonly EmailNotConfirmed: 3;
|
|
6249
|
+
/** The account is locked out (too many failed attempts, manual lockout, etc.). The client should show the lockout page. */
|
|
5581
6250
|
readonly LockedOut: 4;
|
|
5582
6251
|
};
|
|
5583
6252
|
type LoginResult = (typeof LoginResult)[keyof typeof LoginResult];
|
|
5584
6253
|
/**
|
|
5585
6254
|
* Outcome of a RegisterRequest. Members carry explicit integer
|
|
5586
|
-
* values so
|
|
5587
|
-
* stable contract across reorderings.
|
|
6255
|
+
* values so the JSON wire form is a stable contract across reorderings.
|
|
5588
6256
|
*/
|
|
5589
6257
|
declare const RegisterResult: {
|
|
6258
|
+
/** The account was created and a confirmation email has been sent. The user is NOT signed in yet — they must click the confirmation link first. */
|
|
5590
6259
|
readonly ConfirmationEmailSent: 0;
|
|
6260
|
+
/** The account was created and the user has been signed in directly (the host did not configure SignIn.RequireConfirmedAccount). */
|
|
5591
6261
|
readonly SignedIn: 1;
|
|
6262
|
+
/** An account with the same email already exists. The server returns this rather than silently succeeding to give the client an opportunity to surface a clear error, at the cost of allowing email enumeration. Hosts that prefer the enumeration- resistant path should treat this as success client-side. */
|
|
5592
6263
|
readonly EmailAlreadyInUse: 2;
|
|
5593
6264
|
};
|
|
5594
6265
|
type RegisterResult = (typeof RegisterResult)[keyof typeof RegisterResult];
|
|
@@ -5605,7 +6276,9 @@ type RegisterResult = (typeof RegisterResult)[keyof typeof RegisterResult];
|
|
|
5605
6276
|
* relationship is rejected by the server at filter-apply time.
|
|
5606
6277
|
*/
|
|
5607
6278
|
declare const RelationshipFilterMode: {
|
|
6279
|
+
/** Return records currently associated with ParentRecord via the named relationship. For one-to-many, AND-merges a referencingColumn == parentRecord.Id condition. For many-to-many, AND-merges an intersect link-entity plus a condition on the parent-side intersect column. */
|
|
5608
6280
|
readonly IncludeExistingRecords: 0;
|
|
6281
|
+
/** Return records that are NOT currently associated with ParentRecord. Many-to-many only — AND-merges a LEFT OUTER intersect link-entity (filtered to the parent's intersect rows) and an outer null-check on the parent-side intersect column, so unrelated records survive but related records get filtered out. */
|
|
5609
6282
|
readonly ExcludeExistingRecords: 1;
|
|
5610
6283
|
};
|
|
5611
6284
|
type RelationshipFilterMode = (typeof RelationshipFilterMode)[keyof typeof RelationshipFilterMode];
|
|
@@ -5613,32 +6286,43 @@ type RelationshipFilterMode = (typeof RelationshipFilterMode)[keyof typeof Relat
|
|
|
5613
6286
|
* Specifies whether a column value is required.
|
|
5614
6287
|
*/
|
|
5615
6288
|
declare const RequiredLevel: {
|
|
6289
|
+
/** No requirements are specified. */
|
|
5616
6290
|
readonly None: 0;
|
|
6291
|
+
/** The column is required by the system and cannot be null. */
|
|
5617
6292
|
readonly SystemRequired: 1;
|
|
6293
|
+
/** The column is required by the application and should have a value. */
|
|
5618
6294
|
readonly ApplicationRequired: 2;
|
|
6295
|
+
/** It is recommended that the column has a value, but it is not enforced. */
|
|
5619
6296
|
readonly Recommended: 3;
|
|
5620
6297
|
};
|
|
5621
6298
|
type RequiredLevel = (typeof RequiredLevel)[keyof typeof RequiredLevel];
|
|
5622
6299
|
/**
|
|
5623
6300
|
* Outcome of `POST /api/auth/reset-password`. Members carry explicit
|
|
5624
|
-
* integer values so
|
|
5625
|
-
*
|
|
6301
|
+
* integer values so the JSON wire form is a stable contract across
|
|
6302
|
+
* reorderings.
|
|
5626
6303
|
*/
|
|
5627
6304
|
declare const ResetPasswordResult: {
|
|
6305
|
+
/** The password was reset and the user can now sign in with the new password. */
|
|
5628
6306
|
readonly Success: 0;
|
|
6307
|
+
/** The token was missing, malformed, expired, or already used. The client should redirect the user to the "request a new reset link" flow. */
|
|
5629
6308
|
readonly InvalidOrExpiredToken: 1;
|
|
6309
|
+
/** The new password did not satisfy the host's password rules. The accompanying ProblemDetails (in the failed-validation HTTP 400) carries the per-rule error messages from IdentityResult.Errors. */
|
|
5630
6310
|
readonly InvalidPassword: 2;
|
|
5631
6311
|
};
|
|
5632
6312
|
type ResetPasswordResult = (typeof ResetPasswordResult)[keyof typeof ResetPasswordResult];
|
|
5633
6313
|
/**
|
|
5634
6314
|
* Outcome of `POST /api/auth/switch-identity`. Members carry explicit
|
|
5635
|
-
* integer values so
|
|
5636
|
-
*
|
|
6315
|
+
* integer values so the JSON wire form is a stable contract across
|
|
6316
|
+
* reorderings.
|
|
5637
6317
|
*/
|
|
5638
6318
|
declare const SwitchIdentityResult: {
|
|
6319
|
+
/** The alt identity was signed in and the auth cookie has been swapped. */
|
|
5639
6320
|
readonly Switched: 0;
|
|
6321
|
+
/** The current principal has no alt-identity claim — there is nothing to switch to. */
|
|
5640
6322
|
readonly NoAltIdentity: 1;
|
|
6323
|
+
/** The alt identity referenced by the claim no longer exists in Dataverse (or is disabled). */
|
|
5641
6324
|
readonly AltIdentityNotFound: 2;
|
|
6325
|
+
/** The current request is unauthenticated. */
|
|
5642
6326
|
readonly NotAuthenticated: 3;
|
|
5643
6327
|
};
|
|
5644
6328
|
type SwitchIdentityResult = (typeof SwitchIdentityResult)[keyof typeof SwitchIdentityResult];
|
|
@@ -5646,13 +6330,21 @@ type SwitchIdentityResult = (typeof SwitchIdentityResult)[keyof typeof SwitchIde
|
|
|
5646
6330
|
* Bit flags describing the security operations the current user can perform on a record.
|
|
5647
6331
|
*/
|
|
5648
6332
|
declare const TableSecurityPermission: {
|
|
6333
|
+
/** No permissions. */
|
|
5649
6334
|
readonly None: 0;
|
|
6335
|
+
/** The record can be read. */
|
|
5650
6336
|
readonly Read: 1;
|
|
6337
|
+
/** The record (or table) can have new records created. */
|
|
5651
6338
|
readonly Create: 2;
|
|
6339
|
+
/** The record can be modified. */
|
|
5652
6340
|
readonly Write: 4;
|
|
6341
|
+
/** The record can be deleted. */
|
|
5653
6342
|
readonly Delete: 8;
|
|
6343
|
+
/** The record can be appended to other records (used as the child of a relationship). */
|
|
5654
6344
|
readonly Append: 16;
|
|
6345
|
+
/** Other records can be appended to this record (used as the parent of a relationship). */
|
|
5655
6346
|
readonly AppendTo: 32;
|
|
6347
|
+
/** All permissions except Create. */
|
|
5656
6348
|
readonly All: 63;
|
|
5657
6349
|
};
|
|
5658
6350
|
type TableSecurityPermission = (typeof TableSecurityPermission)[keyof typeof TableSecurityPermission];
|
|
@@ -5691,8 +6383,9 @@ type BaseDataPoint = Schemas['DataPointBase'];
|
|
|
5691
6383
|
type DataverseDataPoint = Schemas['DataPointDataverseDataPoint'];
|
|
5692
6384
|
type ChartLinkedEntity = Schemas['ChartLinkedEntity'];
|
|
5693
6385
|
type FileInfo = Schemas['FileInfo'];
|
|
5694
|
-
type EnvironmentFileSettings = Schemas['EnvironmentFileSettings'];
|
|
5695
6386
|
type CreateFileArchiveRequest = Schemas['CreateFileArchiveRequest'];
|
|
6387
|
+
type OrganizationSettings = Schemas['OrganizationSettings'];
|
|
6388
|
+
type Currency = Schemas['Currency'];
|
|
5696
6389
|
/**
|
|
5697
6390
|
* Client-side result of {@link PowerPortalsProClient.createFileArchiveAsync}.
|
|
5698
6391
|
* Carries the archive bytes plus the metadata derived from the server's
|
|
@@ -5710,17 +6403,37 @@ interface FileArchiveResult {
|
|
|
5710
6403
|
}
|
|
5711
6404
|
type LocalizationBundleManifest = Schemas['LocalizationBundleManifest'];
|
|
5712
6405
|
type LocalizationManifestForLocale = Schemas['LocalizationManifestForLocale'];
|
|
6406
|
+
type TranslationAvailability = Schemas['TranslationAvailability'];
|
|
6407
|
+
type TranslationLanguageOption = Schemas['TranslationLanguageOption'];
|
|
6408
|
+
type TranslationRequest = Schemas['TranslationRequest'];
|
|
6409
|
+
type TranslationResult = Schemas['TranslationResult'];
|
|
6410
|
+
type TranslatedFile = Schemas['TranslatedFile'];
|
|
6411
|
+
type LocalizationOverview = Schemas['LocalizationOverview'];
|
|
6412
|
+
type LocalizationPipelineConfiguration = Schemas['LocalizationPipelineConfiguration'];
|
|
6413
|
+
type LocalizationSourceLoad = Schemas['LocalizationSourceLoad'];
|
|
6414
|
+
type LocalizationSourceKind = Schemas['LocalizationSourceKind'];
|
|
6415
|
+
type LocalizationSourceStatus = Schemas['LocalizationSourceStatus'];
|
|
5713
6416
|
/**
|
|
5714
|
-
*
|
|
5715
|
-
*
|
|
5716
|
-
* `
|
|
5717
|
-
*
|
|
5718
|
-
*
|
|
5719
|
-
|
|
5720
|
-
|
|
6417
|
+
* A localization file pulled from the per-source or merged download endpoint:
|
|
6418
|
+
* the UTF-8 JSON bytes plus the server-suggested filename (parsed from the
|
|
6419
|
+
* `Content-Disposition` header). Mirrors the C# `LocalizationDownload` shape so
|
|
6420
|
+
* both stacks share one mental model. The download methods return `null` (not
|
|
6421
|
+
* this) when the server has nothing for the requested source/culture (404).
|
|
6422
|
+
*/
|
|
6423
|
+
interface LocalizationFileDownload {
|
|
6424
|
+
/** Server-suggested download filename (already includes the culture + `.json`). */
|
|
6425
|
+
readonly fileName: string;
|
|
6426
|
+
/** UTF-8-encoded JSON body. */
|
|
6427
|
+
readonly data: Uint8Array;
|
|
6428
|
+
}
|
|
6429
|
+
type CacheClearResult = Schemas['CacheClearResult'];
|
|
6430
|
+
/**
|
|
6431
|
+
* SPA-facing wrapper over the framework's record / metadata / file endpoints
|
|
6432
|
+
* under `/api/*`. Flat surface, no sub-namespacing — CRUD, metadata, files,
|
|
6433
|
+
* and aggregate-chart calls all live at the root.
|
|
5721
6434
|
*
|
|
5722
|
-
* Authentication is a separate concern handled by {@link AuthClient},
|
|
5723
|
-
*
|
|
6435
|
+
* Authentication is a separate concern handled by {@link AuthClient}, which
|
|
6436
|
+
* sits beside this class with its own surface.
|
|
5724
6437
|
*
|
|
5725
6438
|
* @example
|
|
5726
6439
|
* ```ts
|
|
@@ -5739,10 +6452,9 @@ declare class PowerPortalsProClient {
|
|
|
5739
6452
|
readonly transport: Transport;
|
|
5740
6453
|
constructor(transportOrOptions?: Transport | TransportOptions);
|
|
5741
6454
|
/**
|
|
5742
|
-
* Creates a new record. URL is derived from `record.tableName`.
|
|
5743
|
-
*
|
|
5744
|
-
* (which carry no dirty flags) round-trip
|
|
5745
|
-
* dirty-tracked records.
|
|
6455
|
+
* Creates a new record. URL is derived from `record.tableName`. The server
|
|
6456
|
+
* marks every property as modified before applying so column values
|
|
6457
|
+
* arriving from JSON (which carry no dirty flags) round-trip correctly.
|
|
5746
6458
|
*/
|
|
5747
6459
|
createRecordAsync(record: TableRecord$1, signal?: AbortSignal): Promise<CreateResponse>;
|
|
5748
6460
|
/**
|
|
@@ -5750,6 +6462,71 @@ declare class PowerPortalsProClient {
|
|
|
5750
6462
|
* omit it for the table's full set of columns visible to the caller.
|
|
5751
6463
|
*/
|
|
5752
6464
|
retrieveRecordAsync(tableLogicalName: string, recordId: string, columns?: readonly string[], signal?: AbortSignal): Promise<TableRecord$1>;
|
|
6465
|
+
/**
|
|
6466
|
+
* Probes whether the localization-translation feature is usable: whether a translation
|
|
6467
|
+
* provider is configured, whether the managed solution is installed, and the candidate
|
|
6468
|
+
* target languages (the portal's cultures annotated with provider-translatability).
|
|
6469
|
+
* SystemAdmin-gated.
|
|
6470
|
+
*/
|
|
6471
|
+
getTranslationAvailabilityAsync(signal?: AbortSignal): Promise<TranslationAvailability>;
|
|
6472
|
+
/**
|
|
6473
|
+
* Translates an uploaded localization file into one or more target languages, reusing the
|
|
6474
|
+
* Dataverse translation memory. Returns one file per language (base64 `content`) plus a zip
|
|
6475
|
+
* of all and translated-vs-reused counts. SystemAdmin-gated.
|
|
6476
|
+
*/
|
|
6477
|
+
translateLocalizationFileAsync(request: TranslationRequest, signal?: AbortSignal): Promise<TranslationResult>;
|
|
6478
|
+
/**
|
|
6479
|
+
* Reads the admin localization overview: the configured warmup pipeline plus the
|
|
6480
|
+
* per-source load records (load order, source kind, cultures touched, key counts,
|
|
6481
|
+
* how many keys overrode an earlier source, duration, status) from the most recent
|
|
6482
|
+
* warmup. Backs the `<LocalizationAdmin />` panel. SystemAdmin-gated.
|
|
6483
|
+
*/
|
|
6484
|
+
getLocalizationOverviewAsync(signal?: AbortSignal): Promise<LocalizationOverview>;
|
|
6485
|
+
/**
|
|
6486
|
+
* Downloads the JSON one source contributed to one culture during the most recent
|
|
6487
|
+
* warmup — a translation-handoff snapshot. Returns `null` when the source/culture
|
|
6488
|
+
* pair isn't tracked (the server answers 404 — cache cleared, source removed, or
|
|
6489
|
+
* the culture has no entries for that source). SystemAdmin-gated.
|
|
6490
|
+
*/
|
|
6491
|
+
downloadLocalizationSourceAsync(sourceId: string, culture: string, signal?: AbortSignal): Promise<LocalizationFileDownload | null>;
|
|
6492
|
+
/**
|
|
6493
|
+
* Downloads the merged JSON of every key the cache will serve for a culture (the
|
|
6494
|
+
* post-merge winning value across all sources) — a complete-snapshot reference.
|
|
6495
|
+
* Returns `null` when the culture has no entries (404). SystemAdmin-gated.
|
|
6496
|
+
*/
|
|
6497
|
+
downloadMergedLocalizationsAsync(culture: string, signal?: AbortSignal): Promise<LocalizationFileDownload | null>;
|
|
6498
|
+
/**
|
|
6499
|
+
* Shared binary-download path for the two localization download endpoints. Reads
|
|
6500
|
+
* the raw bytes via `response.arrayBuffer()` and derives the filename from the
|
|
6501
|
+
* `Content-Disposition` header (matching {@link createFileArchiveAsync}). Maps a
|
|
6502
|
+
* 404 to `null` so callers can show a "nothing to download" message instead of
|
|
6503
|
+
* surfacing it as an error.
|
|
6504
|
+
*/
|
|
6505
|
+
private downloadLocalizationFile;
|
|
6506
|
+
/**
|
|
6507
|
+
* Lists every registered server-side cache by name — the values that
|
|
6508
|
+
* {@link clearCacheAsync} accepts. Backs the per-cache buttons on an admin
|
|
6509
|
+
* "clear caches" page; render them sorted client-side for a stable order.
|
|
6510
|
+
* SystemAdmin-gated.
|
|
6511
|
+
*/
|
|
6512
|
+
getCacheNamesAsync(signal?: AbortSignal): Promise<readonly string[]>;
|
|
6513
|
+
/**
|
|
6514
|
+
* Clears every registered server-side cache and returns one
|
|
6515
|
+
* {@link CacheClearResult} per cache (name, success flag, error, elapsed ms).
|
|
6516
|
+
* Per-cache failures are reported in the result rows rather than thrown, so a
|
|
6517
|
+
* single misbehaving cache doesn't abort the rest — inspect `succeeded` on each
|
|
6518
|
+
* row. SystemAdmin-gated.
|
|
6519
|
+
*/
|
|
6520
|
+
clearAllCachesAsync(signal?: AbortSignal): Promise<readonly CacheClearResult[]>;
|
|
6521
|
+
/**
|
|
6522
|
+
* Clears a single named cache (case-insensitive match against
|
|
6523
|
+
* {@link getCacheNamesAsync}). Returns the {@link CacheClearResult}, or `null`
|
|
6524
|
+
* when no cache by that name is registered (the server answers 404). A clear
|
|
6525
|
+
* that runs but throws internally comes back as a result row with
|
|
6526
|
+
* `succeeded: false` — that's distinct from the not-found `null`.
|
|
6527
|
+
* SystemAdmin-gated.
|
|
6528
|
+
*/
|
|
6529
|
+
clearCacheAsync(name: string, signal?: AbortSignal): Promise<CacheClearResult | null>;
|
|
5753
6530
|
/**
|
|
5754
6531
|
* Runs a FetchXML query and returns the matching records plus paging info.
|
|
5755
6532
|
* The query is the FetchXML XML literal — the same format Dataverse natively accepts.
|
|
@@ -5767,23 +6544,24 @@ declare class PowerPortalsProClient {
|
|
|
5767
6544
|
* client can render headers + dispatch cells without a separate
|
|
5768
6545
|
* metadata round-trip.
|
|
5769
6546
|
*
|
|
5770
|
-
*
|
|
5771
|
-
* be supplied
|
|
6547
|
+
* At least one of <c>request.viewId</c> or <c>request.fetchXml</c> must
|
|
6548
|
+
* be supplied (neither returns a 400). Both may be supplied together — the
|
|
6549
|
+
* <c>fetchXml</c> is the query and the <c>viewId</c> names the view for
|
|
6550
|
+
* localized column-title resolution.
|
|
5772
6551
|
*
|
|
5773
|
-
* Mirrors how the
|
|
6552
|
+
* Mirrors how the is consumed
|
|
5774
6553
|
* `@powerportalspro/react`'s `useGridData` hook calls this method
|
|
5775
6554
|
* internally, so most consumers don't invoke it directly.
|
|
5776
6555
|
*/
|
|
5777
6556
|
loadGridAsync(request: GridDataRequest, signal?: AbortSignal): Promise<GridDataResponse>;
|
|
5778
6557
|
/**
|
|
5779
|
-
* Updates an existing record. URL is derived from `record.tableName` and `record.id`
|
|
6558
|
+
* Updates an existing record. URL is derived from `record.tableName` and `record.id`
|
|
5780
6559
|
* `record.id` must be set. For a new record, use {@link createRecordAsync} instead.
|
|
5781
6560
|
*/
|
|
5782
6561
|
updateRecordAsync(record: TableRecord$1, signal?: AbortSignal): Promise<UpdateResponse>;
|
|
5783
6562
|
/**
|
|
5784
|
-
* Executes a batch of {@link OrganizationRequest}s as a single round-trip
|
|
5785
|
-
*
|
|
5786
|
-
* MainContext save flow uses this to ship every dirty descendant's
|
|
6563
|
+
* Executes a batch of {@link OrganizationRequest}s as a single round-trip.
|
|
6564
|
+
* The MainContext save flow uses this to ship every dirty descendant's
|
|
5787
6565
|
* requests in one shot so a multi-record save lands transactionally
|
|
5788
6566
|
* server-side.
|
|
5789
6567
|
*
|
|
@@ -5806,7 +6584,7 @@ declare class PowerPortalsProClient {
|
|
|
5806
6584
|
* query, performs the multi-series pivot, and applies combined
|
|
5807
6585
|
* date-label formatting using the request culture.
|
|
5808
6586
|
*
|
|
5809
|
-
* Mirrors how the
|
|
6587
|
+
* Mirrors how the is consumed
|
|
5810
6588
|
* `@powerportalspro/react-charts`'s `DataverseChartDataSource` family
|
|
5811
6589
|
* calls this method internally, so most consumers don't invoke it
|
|
5812
6590
|
* directly.
|
|
@@ -5818,12 +6596,13 @@ declare class PowerPortalsProClient {
|
|
|
5818
6596
|
* Returns the current user's combined table-level `TableSecurityPermission`
|
|
5819
6597
|
* bitmask for `tableLogicalName` — the bitwise union of Read / Create /
|
|
5820
6598
|
* Write / Delete / Append / AppendTo flags any registered
|
|
5821
|
-
* `ITablePermissionHandler` allows for that user on that table.
|
|
5822
|
-
* the cached `ITablePermissionCache
|
|
5823
|
-
*
|
|
5824
|
-
* by the `useTablePermissions(tableName)` React hook with
|
|
5825
|
-
* dedup; reach for the raw client only when you're
|
|
5826
|
-
* a
|
|
6599
|
+
* `ITablePermissionHandler` allows for that user on that table. Routed
|
|
6600
|
+
* server-side through the cached `ITablePermissionCache` lookup.
|
|
6601
|
+
*
|
|
6602
|
+
* Wrapped by the `useTablePermissions(tableName)` React hook with
|
|
6603
|
+
* in-flight-promise dedup; reach for the raw client only when you're
|
|
6604
|
+
* outside React (e.g. a stand-alone script) or need an imperative
|
|
6605
|
+
* one-off check.
|
|
5827
6606
|
*
|
|
5828
6607
|
* Returns `0` (`TableSecurityPermission.None`) when the user has no
|
|
5829
6608
|
* permissions on the table; consumers compare via bit math (e.g.
|
|
@@ -5907,14 +6686,14 @@ declare class PowerPortalsProClient {
|
|
|
5907
6686
|
* override files (last-wins). Use this to seed the React-side localizer
|
|
5908
6687
|
* with one round-trip.
|
|
5909
6688
|
*
|
|
5910
|
-
* Returned shape is a nested object that mirrors the source JSON files
|
|
6689
|
+
* Returned shape is a nested object that mirrors the source JSON files
|
|
5911
6690
|
* `{ app: { buttons: { save: { label: "Save" } } }, tables: { contact: ... } }`.
|
|
5912
6691
|
* The client typically flattens this to dotted-key form for `t()` lookup
|
|
5913
6692
|
* (see {@link flattenStrings} in `@powerportalspro/react`).
|
|
5914
6693
|
*
|
|
5915
6694
|
* @param culture culture code matching what server-side ASP.NET request
|
|
5916
|
-
*
|
|
5917
|
-
*
|
|
6695
|
+
* localization recognizes — e.g. `"en"`, `"es"`, `"fr-CA"`. Falls back
|
|
6696
|
+
* to the default culture server-side when the value isn't supported.
|
|
5918
6697
|
*/
|
|
5919
6698
|
retrieveLocalizedStringsAsync(culture: string, signal?: AbortSignal): Promise<Record<string, unknown>>;
|
|
5920
6699
|
/**
|
|
@@ -5939,12 +6718,12 @@ declare class PowerPortalsProClient {
|
|
|
5939
6718
|
* Two response shapes, selected by `request.responseFormat`:
|
|
5940
6719
|
*
|
|
5941
6720
|
* - **BinaryStream** (default): the server returns the raw archive bytes; this
|
|
5942
|
-
*
|
|
5943
|
-
*
|
|
5944
|
-
*
|
|
6721
|
+
* method reads them via `response.arrayBuffer()` and wraps the result in a
|
|
6722
|
+
* {@link FileArchiveResult}, deriving `fileName` from the `Content-Disposition`
|
|
6723
|
+
* header and `contentType` from `Content-Type`. Most consumers want this path.
|
|
5945
6724
|
* - **Json**: the server returns a {@link FileArchiveJsonResponse} envelope with
|
|
5946
|
-
*
|
|
5947
|
-
*
|
|
6725
|
+
* the archive bytes base64-encoded. Useful for test harnesses, service workers,
|
|
6726
|
+
* or callers that need to inspect filename/size before triggering a download.
|
|
5948
6727
|
*
|
|
5949
6728
|
* Either way, the returned `data` is empty (`Uint8Array(0)`) when none of the
|
|
5950
6729
|
* supplied records produced a usable file — the caller can surface a "nothing to
|
|
@@ -5956,7 +6735,21 @@ declare class PowerPortalsProClient {
|
|
|
5956
6735
|
* upload size in KB). UI consumers use this to validate uploads client-side before
|
|
5957
6736
|
* the round-trip, mirroring what the server enforces.
|
|
5958
6737
|
*/
|
|
5959
|
-
|
|
6738
|
+
/**
|
|
6739
|
+
* Reads the org-wide settings sourced from the Dataverse `organization`
|
|
6740
|
+
* record: default currency plus file-upload constraints
|
|
6741
|
+
* (`blockedFileExtensions`, `maxUploadFileSizeInBytes`). Replaces the legacy
|
|
6742
|
+
* `getEnvironmentFileSettingsAsync` — file fields now live on this combined
|
|
6743
|
+
* response.
|
|
6744
|
+
* <para>
|
|
6745
|
+
* Primary consumers:
|
|
6746
|
+
* </para>
|
|
6747
|
+
* - Create-mode `<MoneyEdit>` reads `defaultCurrency` to render the right
|
|
6748
|
+
* symbol on brand-new records before save.
|
|
6749
|
+
* - File editors / FileGrid read the two file fields to reject invalid
|
|
6750
|
+
* uploads client-side before the round-trip.
|
|
6751
|
+
*/
|
|
6752
|
+
getOrganizationSettingsAsync(signal?: AbortSignal): Promise<OrganizationSettings>;
|
|
5960
6753
|
}
|
|
5961
6754
|
|
|
5962
6755
|
type TableRecord = components['schemas']['TableRecord'];
|
|
@@ -5971,7 +6764,7 @@ type TableRecord = components['schemas']['TableRecord'];
|
|
|
5971
6764
|
* Returns `undefined` when neither field carries a usable value (record
|
|
5972
6765
|
* still loading, or a never-seeded create-mode record).
|
|
5973
6766
|
*
|
|
5974
|
-
* Mirrors
|
|
6767
|
+
* Mirrors implicit conversion
|
|
5975
6768
|
* (`Id == Guid.Empty ? _idForCreate : Id`). The server resolves either
|
|
5976
6769
|
* shape via `ResolveAssociateRecordAsync` — both flows interoperate.
|
|
5977
6770
|
*/
|
|
@@ -5979,4 +6772,4 @@ declare function getRecordReferenceId(record: Pick<TableRecord, 'id' | '_idForCr
|
|
|
5979
6772
|
|
|
5980
6773
|
declare const VERSION = "0.1.0";
|
|
5981
6774
|
|
|
5982
|
-
export { type AggregateChartConfig, AggregateType, ArchiveFormat, ArgumentError, ArgumentNullError, type AssociateRequest, AuthClient, type AuthenticatorSetupResponse, type BaseDataPoint, type ChangeEmailRequest, type ChangeEmailResponse, ChangeEmailResult, type ChangePasswordRequest, type ChangePasswordResponse, ChangePasswordResult, type ChartAggregation, type ChartData, type ChartDataRequest, type ChartDataResponse, type ChartDataset, ChartDateGrouping, type ChartGrouping, type ChartLinkedEntity, type ColumnSort, ColumnType, type ConfirmEmailRequest, type ConfirmEmailResponse, type ConfirmExternalLoginRequest, type ConfirmExternalLoginResponse, ConfirmExternalLoginResult, type CreateRequest, type CreateResponse, type CurrentLoginInfo, type CurrentUserInfo, type DataPoint, type DataverseDataPoint, DateTimeBehavior, type DeletePersonalDataRequest, type DeletePersonalDataResponse, DeletePersonalDataResult, type DeleteRequest, type DeleteResponse, type Disable2faResponse, type DisassociateRequest,
|
|
6775
|
+
export { type AggregateChartConfig, AggregateType, ArchiveFormat, ArgumentError, ArgumentNullError, type AssociateRequest, AuthClient, type AuthOptionsResponse, type AuthenticatorSetupResponse, type BaseDataPoint, type CacheClearResult, type ChangeEmailRequest, type ChangeEmailResponse, ChangeEmailResult, type ChangePasswordRequest, type ChangePasswordResponse, ChangePasswordResult, type ChartAggregation, type ChartData, type ChartDataRequest, type ChartDataResponse, type ChartDataset, ChartDateGrouping, type ChartGrouping, type ChartLinkedEntity, type ColumnSort, ColumnType, type ConfirmEmailRequest, type ConfirmEmailResponse, type ConfirmExternalLoginRequest, type ConfirmExternalLoginResponse, ConfirmExternalLoginResult, type CreateRequest, type CreateResponse, type Currency, type CurrentLoginInfo, type CurrentUserInfo, type DataPoint, type DataverseDataPoint, DateTimeBehavior, type DeletePersonalDataRequest, type DeletePersonalDataResponse, DeletePersonalDataResult, type DeleteRequest, type DeleteResponse, type Disable2faResponse, type DisassociateRequest, ExternalLoginCandidateKind, type ExternalLoginProviderInfo, type ExternalLoginsResponse, FileArchiveResponseFormat, type FileInfo, type Forget2faResponse, type GridDataRequest, type GridDataResponse, type GridFilterBase, InvalidOperationError, JoinOperator, type LocalizationFileDownload, type LocalizationOverview, type LocalizationPipelineConfiguration, type LocalizationSourceKind, type LocalizationSourceLoad, type LocalizationSourceStatus, type LoginRequest, type LoginResponse, LoginResult, type OrganizationRequest, type OrganizationResponse, type OrganizationSettings, type PendingExternalLoginResponse, type PersonalDataResponse, PowerPortalsProClient, PowerPortalsProError, type PowerPortalsProErrorInit, type ProblemDetails, type ProfileResponse, type RecoveryCodesResponse, type RegisterRequest, type RegisterResponse, RegisterResult, type RelationshipFilter, RelationshipFilterMode, type RemoveExternalLoginRequest, type RemoveExternalLoginResponse, type RequestOptions, type RequestPasswordResetRequest, RequiredLevel, type ResendEmailConfirmationRequest, type ResetAuthenticatorResponse, type ResetPasswordRequest, type ResetPasswordResponse, ResetPasswordResult, type ResolvedColumn, type RetrieveRecordsResponse, Routes, type SelectExternalLoginRequest, type SendEmailConfirmationResponse, type SetPasswordRequest, type SetPasswordResponse, type SwitchIdentityResponse, SwitchIdentityResult, type TableMetadata, type TableRecord$1 as TableRecord, type TableRecordReference, TableSecurityPermission, type TranslatedFile, type TranslationAvailability, type TranslationLanguageOption, type TranslationRequest, type TranslationResult, Transport, type TransportOptions, type TwoFactorStatusResponse, UnauthorizedAccessError, type UpdateProfileRequest, type UpdateRequest, type UpdateResponse, VERSION, type VerifyAuthenticatorRequest, type VerifyAuthenticatorResponse, type VerifyTwoFactorRequest, type VerifyTwoFactorResponse, type ViewMetadata, type components, getRecordReferenceId, mapProblemDetails, type paths };
|