@powerportalspro/core 5.0.0 → 6.0.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.d.cts CHANGED
@@ -53,6 +53,12 @@ declare const Routes: {
53
53
  * values across all sources). `culture` is a query-string parameter. SystemAdmin-only.
54
54
  */
55
55
  readonly localizationMergedDownload: "/api/localizations/merged/download";
56
+ /**
57
+ * GET — structured list of every key the cache will serve for a culture, its winning
58
+ * value, and the source that supplied it. `culture` is a query-string parameter. Backs
59
+ * the LocalizationAdmin "view merged sources" dialog. SystemAdmin-only.
60
+ */
61
+ readonly localizationMergedEntries: "/api/localizations/merged/entries";
56
62
  /** GET — whether translation is configured, the managed solution is installed, and the candidate target languages. SystemAdmin-only. */
57
63
  readonly localizationTranslationAvailability: "/api/localizations/translation/availability";
58
64
  /** POST — translate an uploaded localization file into one or more target languages. SystemAdmin-only. */
@@ -1302,6 +1308,43 @@ interface paths {
1302
1308
  patch?: never;
1303
1309
  trace?: never;
1304
1310
  };
1311
+ "/api/localizations/merged/entries": {
1312
+ parameters: {
1313
+ query?: never;
1314
+ header?: never;
1315
+ path?: never;
1316
+ cookie?: never;
1317
+ };
1318
+ get: {
1319
+ parameters: {
1320
+ query: {
1321
+ culture: string;
1322
+ };
1323
+ header?: never;
1324
+ path?: never;
1325
+ cookie?: never;
1326
+ };
1327
+ requestBody?: never;
1328
+ responses: {
1329
+ /** @description OK */
1330
+ 200: {
1331
+ headers: {
1332
+ [name: string]: unknown;
1333
+ };
1334
+ content: {
1335
+ "application/json": components["schemas"]["MergedLocalizationEntry"][];
1336
+ };
1337
+ };
1338
+ };
1339
+ };
1340
+ put?: never;
1341
+ post?: never;
1342
+ delete?: never;
1343
+ options?: never;
1344
+ head?: never;
1345
+ patch?: never;
1346
+ trace?: never;
1347
+ };
1305
1348
  "/api/localizations/translation/availability": {
1306
1349
  parameters: {
1307
1350
  query?: never;
@@ -3337,12 +3380,34 @@ interface components {
3337
3380
  /** @description Indicates whether this column can be modified when updating an existing record. */
3338
3381
  isValidForUpdate: boolean;
3339
3382
  };
3340
- /** @description Metadata for a Dataverse boolean (yes/no) column. */
3383
+ /**
3384
+ * @description Metadata for a Dataverse boolean (yes/no) column. A boolean is an option set under the hood —
3385
+ * Dataverse exposes a customizable true/false label pair — so it carries the same option-set
3386
+ * identity (string BoolMetadata.ChoiceLogicalName, bool BoolMetadata.IsGlobal) and a two-entry
3387
+ * List<ChoiceValueMetadata> BoolMetadata.Choices list (value 0 = false, value 1 = true) used as the default display
3388
+ * labels when no localization override is present.
3389
+ */
3341
3390
  ColumnMetadataBaseBoolMetadata: {
3342
3391
  /** @enum {integer} */
3343
3392
  $type?: 0;
3344
3393
  /** @description Returns Boolean. */
3345
3394
  columnType?: components["schemas"]["ColumnType"];
3395
+ /**
3396
+ * @description The logical name of the boolean's option set (Dataverse `OptionSet.Name`), used to
3397
+ * build the `choices.{name}.values.{0|1}.label` localization keys.
3398
+ */
3399
+ choiceLogicalName?: string;
3400
+ /**
3401
+ * @description Whether the boolean's option set is a global option set (rare for booleans). Determines
3402
+ * whether the localization keys live under the global `choices.*` subtree or the
3403
+ * table-scoped `tables.{table}.choices.*` subtree.
3404
+ */
3405
+ isGlobal?: boolean;
3406
+ /**
3407
+ * @description The default false/true display labels (value 0 and value 1) as configured in Dataverse,
3408
+ * used as a fallback when a localization override isn't available.
3409
+ */
3410
+ choices?: components["schemas"]["ChoiceValueMetadata"][];
3346
3411
  /** @description The logical name of the column in Dataverse (e.g. "firstname", "emailaddress1"). */
3347
3412
  columnName: string;
3348
3413
  /** @description The localized display name of the column as configured in Dataverse. */
@@ -4087,16 +4152,7 @@ interface components {
4087
4152
  * don't use role-based authorization.
4088
4153
  */
4089
4154
  roles?: string[];
4090
- /**
4091
- * @description Logical name of the Dataverse table the signed-in user is backed by — typically
4092
- * `"contact"` for a portal user or `"systemuser"` for an internal user.
4093
- * Sourced from the principal's `tablename` claim that PowerPortalsPro's
4094
- * `SignInManager` stamps on every sign-in. `null` for anonymous
4095
- * requests, and also for hosts whose Identity stack doesn't emit the claim
4096
- * (e.g., a generic `IdentityUser` consumer that hasn't wired up a
4097
- * PortalUser-style backing entity).
4098
- */
4099
- tableName?: null | string;
4155
+ portalUserType?: null | components["schemas"]["PortalUserType"];
4100
4156
  /**
4101
4157
  * @description Logical name of the user's sibling Dataverse identity (`"contact"` or
4102
4158
  * `"systemuser"`) when one is registered — set on every principal refresh
@@ -4212,7 +4268,8 @@ interface components {
4212
4268
  */
4213
4269
  success?: boolean;
4214
4270
  };
4215
- EntityRole: number;
4271
+ /** @enum {integer} */
4272
+ EntityRole: 0 | 1;
4216
4273
  /**
4217
4274
  * @description One option presented to the user when a single external sign-in matches
4218
4275
  * both a Dataverse `systemuser` and a `contact`. Used by
@@ -4819,6 +4876,33 @@ interface components {
4819
4876
  /** @description The schema name of the relationship in Dataverse. */
4820
4877
  relationshipName: string;
4821
4878
  };
4879
+ /**
4880
+ * @description One merged localization key for a culture, paired with the source that supplied the
4881
+ * winning value. Backs the `LocalizationAdmin` "view merged sources" dialog — the
4882
+ * same data the merged-download produces, but per-key annotated with its origin so an
4883
+ * admin can see exactly which file / web resource / metadata table a given string came
4884
+ * from. Returned sorted by string MergedLocalizationEntry.Key. Surfaced via
4885
+ * Task<IReadOnlyList<MergedLocalizationEntry>> IPowerPortalsProService.GetMergedLocalizationEntriesAsync(string culture).
4886
+ */
4887
+ MergedLocalizationEntry: {
4888
+ /** @description The flat dot-delimited localization key (lowercased, as stored in the cache). */
4889
+ key: string;
4890
+ /** @description The winning value for this key in the requested culture (post-merge). */
4891
+ value: string;
4892
+ /**
4893
+ * @description Stable identifier of the source that supplied the winning value
4894
+ * (see string LocalizationSourceLoad.SourceId). Empty when no source
4895
+ * contributed a non-empty value for the key.
4896
+ */
4897
+ sourceId: string;
4898
+ /**
4899
+ * @description Human-readable name/location of the winning source — the file path, web-resource
4900
+ * name, or Dataverse-metadata display name. Empty when unattributed.
4901
+ */
4902
+ sourceDisplayName: string;
4903
+ /** @description The kind of the winning source — drives the "Kind" column / grouping in the UI. */
4904
+ sourceKind: components["schemas"]["LocalizationSourceKind"];
4905
+ };
4822
4906
  /** @description Metadata for a Dataverse one-to-many (1:N) relationship between a referenced (parent) table and a referencing (child) table. */
4823
4907
  OneToManyMetadata: {
4824
4908
  /** @description The logical name of the referenced (parent) table — the "one" side of the relationship. */
@@ -5019,6 +5103,16 @@ interface components {
5019
5103
  * compare file byte length directly against this for a pre-upload check.
5020
5104
  */
5021
5105
  maxUploadFileSizeInBytes: number | string;
5106
+ /**
5107
+ * @description The organization's default time-zone id (a Windows time-zone id such as
5108
+ * `Pacific Standard Time`, suitable for TimeZoneInfo TimeZoneInfo.FindSystemTimeZoneById(string id)),
5109
+ * resolved from the connecting app user's `usersettings.timezonecode`. The
5110
+ * `organization` entity has no time-zone column of its own, so this is the closest
5111
+ * org-wide default. Used server-side to format `UserLocal` dates for contacts (portal
5112
+ * users, which have no `usersettings` row); empty when it can't be resolved. Defaults to
5113
+ * empty for backward compatibility with older cached payloads.
5114
+ */
5115
+ defaultTimeZoneId?: string;
5022
5116
  };
5023
5117
  /** @description Paging metadata for a Dataverse query response. */
5024
5118
  PagingInfo: {
@@ -5108,6 +5202,8 @@ interface components {
5108
5202
  [key: string]: string;
5109
5203
  };
5110
5204
  };
5205
+ /** @enum {integer} */
5206
+ PortalUserType: 0 | 1 | 2;
5111
5207
  ProblemDetails: {
5112
5208
  type?: null | string;
5113
5209
  title?: null | string;
@@ -5323,6 +5419,15 @@ interface components {
5323
5419
  * so clients can match this directly against the property key.
5324
5420
  */
5325
5421
  columnName: string;
5422
+ /**
5423
+ * @description Logical name of the table this column actually belongs to. For a primary-entity column
5424
+ * this is the view's main table; for a linked-entity column it is the <em>related</em>
5425
+ * table the column lives on (e.g. `contact` for an account view's primary-contact
5426
+ * email column). Lets a client attribute each column to its owning table without a
5427
+ * separate metadata round-trip — needed to build the column's localization key, which is
5428
+ * keyed by the owning table, not the grid's primary table.
5429
+ */
5430
+ tableName: string;
5326
5431
  /**
5327
5432
  * @description Localized display name, resolved against the user's locale via
5328
5433
  * the framework's localization layer. Falls back through
@@ -5770,7 +5875,8 @@ interface components {
5770
5875
  */
5771
5876
  displayName?: null | string;
5772
5877
  };
5773
- ViewType: number;
5878
+ /** @enum {integer} */
5879
+ ViewType: 0 | 1 | 2 | 4 | 32 | 64 | 2048;
5774
5880
  };
5775
5881
  responses: never;
5776
5882
  parameters: never;
@@ -6148,6 +6254,13 @@ declare const DeletePersonalDataResult: {
6148
6254
  readonly RequireLocalPassword: 2;
6149
6255
  };
6150
6256
  type DeletePersonalDataResult = (typeof DeletePersonalDataResult)[keyof typeof DeletePersonalDataResult];
6257
+ declare const EntityRole: {
6258
+ /** The entity plays the "referenced" (primary) role. */
6259
+ readonly Referenced: 0;
6260
+ /** The entity plays the "referencing" (related) role. */
6261
+ readonly Referencing: 1;
6262
+ };
6263
+ type EntityRole = (typeof EntityRole)[keyof typeof EntityRole];
6151
6264
  /**
6152
6265
  * Which Dataverse table backs an external-login candidate. Members carry
6153
6266
  * explicit integer values so the JSON wire form is a stable contract
@@ -6218,6 +6331,15 @@ declare const LoginResult: {
6218
6331
  readonly LockedOut: 4;
6219
6332
  };
6220
6333
  type LoginResult = (typeof LoginResult)[keyof typeof LoginResult];
6334
+ declare const PortalUserType: {
6335
+ /** A portal contact under the classic (portal-side) security model — no stub systemuser; permission handlers enforce access. */
6336
+ readonly Contact: 0;
6337
+ /** A real internal Dataverse systemuser (e.g. Entra ID staff sign-in). */
6338
+ readonly SystemUser: 1;
6339
+ /** A portal contact whose Dataverse access is enforced through the system-managed (C2) stub systemuser provisioned for it under the Dataverse-native security model. Must never be presented as an internal user. */
6340
+ readonly ContactStubUser: 2;
6341
+ };
6342
+ type PortalUserType = (typeof PortalUserType)[keyof typeof PortalUserType];
6221
6343
  /**
6222
6344
  * Outcome of a RegisterRequest. Members carry explicit integer
6223
6345
  * values so the JSON wire form is a stable contract across reorderings.
@@ -6316,6 +6438,23 @@ declare const TableSecurityPermission: {
6316
6438
  readonly All: 63;
6317
6439
  };
6318
6440
  type TableSecurityPermission = (typeof TableSecurityPermission)[keyof typeof TableSecurityPermission];
6441
+ declare const ViewType: {
6442
+ /** A public view visible to all users. */
6443
+ readonly Public: 0;
6444
+ /** An advanced find view. */
6445
+ readonly AdvancedFind: 1;
6446
+ /** A view used for displaying associated records. */
6447
+ readonly Associated: 2;
6448
+ /** A view used for Quick Find search. */
6449
+ readonly QuickFind: 4;
6450
+ /** A view used for displaying team or queue members. */
6451
+ readonly Members: 32;
6452
+ /** A view used in lookup dialogs. */
6453
+ readonly Lookup: 64;
6454
+ /** A view used for the lookup display format. */
6455
+ readonly LookupDisplay: 2048;
6456
+ };
6457
+ type ViewType = (typeof ViewType)[keyof typeof ViewType];
6319
6458
 
6320
6459
  type Schemas = components['schemas'];
6321
6460
  type TableRecord$1 = Schemas['TableRecord'];
@@ -6381,6 +6520,7 @@ type LocalizationPipelineConfiguration = Schemas['LocalizationPipelineConfigurat
6381
6520
  type LocalizationSourceLoad = Schemas['LocalizationSourceLoad'];
6382
6521
  type LocalizationSourceKind = Schemas['LocalizationSourceKind'];
6383
6522
  type LocalizationSourceStatus = Schemas['LocalizationSourceStatus'];
6523
+ type MergedLocalizationEntry = Schemas['MergedLocalizationEntry'];
6384
6524
  /**
6385
6525
  * A localization file pulled from the per-source or merged download endpoint:
6386
6526
  * the UTF-8 JSON bytes plus the server-suggested filename (parsed from the
@@ -6463,6 +6603,13 @@ declare class PowerPortalsProClient {
6463
6603
  * Returns `null` when the culture has no entries (404). SystemAdmin-gated.
6464
6604
  */
6465
6605
  downloadMergedLocalizationsAsync(culture: string, signal?: AbortSignal): Promise<LocalizationFileDownload | null>;
6606
+ /**
6607
+ * Reads the merged localization keys for a culture as a structured list — every key the
6608
+ * cache will serve, its winning value, and which source supplied it. Same data as
6609
+ * {@link downloadMergedLocalizationsAsync} but per-key annotated with provenance, for the
6610
+ * `<LocalizationAdmin />` "view merged sources" dialog. Sorted by key. SystemAdmin-gated.
6611
+ */
6612
+ getMergedLocalizationEntriesAsync(culture: string, signal?: AbortSignal): Promise<readonly MergedLocalizationEntry[]>;
6466
6613
  /**
6467
6614
  * Shared binary-download path for the two localization download endpoints. Reads
6468
6615
  * the raw bytes via `response.arrayBuffer()` and derives the filename from the
@@ -6740,4 +6887,4 @@ declare function getRecordReferenceId(record: Pick<TableRecord, 'id' | '_idForCr
6740
6887
 
6741
6888
  declare const VERSION = "0.1.0";
6742
6889
 
6743
- 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 };
6890
+ 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, EntityRole, 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 MergedLocalizationEntry, type OrganizationRequest, type OrganizationResponse, type OrganizationSettings, type PendingExternalLoginResponse, type PersonalDataResponse, PortalUserType, 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, ViewType, type components, getRecordReferenceId, mapProblemDetails, type paths };
package/dist/index.d.ts CHANGED
@@ -53,6 +53,12 @@ declare const Routes: {
53
53
  * values across all sources). `culture` is a query-string parameter. SystemAdmin-only.
54
54
  */
55
55
  readonly localizationMergedDownload: "/api/localizations/merged/download";
56
+ /**
57
+ * GET — structured list of every key the cache will serve for a culture, its winning
58
+ * value, and the source that supplied it. `culture` is a query-string parameter. Backs
59
+ * the LocalizationAdmin "view merged sources" dialog. SystemAdmin-only.
60
+ */
61
+ readonly localizationMergedEntries: "/api/localizations/merged/entries";
56
62
  /** GET — whether translation is configured, the managed solution is installed, and the candidate target languages. SystemAdmin-only. */
57
63
  readonly localizationTranslationAvailability: "/api/localizations/translation/availability";
58
64
  /** POST — translate an uploaded localization file into one or more target languages. SystemAdmin-only. */
@@ -1302,6 +1308,43 @@ interface paths {
1302
1308
  patch?: never;
1303
1309
  trace?: never;
1304
1310
  };
1311
+ "/api/localizations/merged/entries": {
1312
+ parameters: {
1313
+ query?: never;
1314
+ header?: never;
1315
+ path?: never;
1316
+ cookie?: never;
1317
+ };
1318
+ get: {
1319
+ parameters: {
1320
+ query: {
1321
+ culture: string;
1322
+ };
1323
+ header?: never;
1324
+ path?: never;
1325
+ cookie?: never;
1326
+ };
1327
+ requestBody?: never;
1328
+ responses: {
1329
+ /** @description OK */
1330
+ 200: {
1331
+ headers: {
1332
+ [name: string]: unknown;
1333
+ };
1334
+ content: {
1335
+ "application/json": components["schemas"]["MergedLocalizationEntry"][];
1336
+ };
1337
+ };
1338
+ };
1339
+ };
1340
+ put?: never;
1341
+ post?: never;
1342
+ delete?: never;
1343
+ options?: never;
1344
+ head?: never;
1345
+ patch?: never;
1346
+ trace?: never;
1347
+ };
1305
1348
  "/api/localizations/translation/availability": {
1306
1349
  parameters: {
1307
1350
  query?: never;
@@ -3337,12 +3380,34 @@ interface components {
3337
3380
  /** @description Indicates whether this column can be modified when updating an existing record. */
3338
3381
  isValidForUpdate: boolean;
3339
3382
  };
3340
- /** @description Metadata for a Dataverse boolean (yes/no) column. */
3383
+ /**
3384
+ * @description Metadata for a Dataverse boolean (yes/no) column. A boolean is an option set under the hood —
3385
+ * Dataverse exposes a customizable true/false label pair — so it carries the same option-set
3386
+ * identity (string BoolMetadata.ChoiceLogicalName, bool BoolMetadata.IsGlobal) and a two-entry
3387
+ * List&lt;ChoiceValueMetadata&gt; BoolMetadata.Choices list (value 0 = false, value 1 = true) used as the default display
3388
+ * labels when no localization override is present.
3389
+ */
3341
3390
  ColumnMetadataBaseBoolMetadata: {
3342
3391
  /** @enum {integer} */
3343
3392
  $type?: 0;
3344
3393
  /** @description Returns Boolean. */
3345
3394
  columnType?: components["schemas"]["ColumnType"];
3395
+ /**
3396
+ * @description The logical name of the boolean's option set (Dataverse `OptionSet.Name`), used to
3397
+ * build the `choices.{name}.values.{0|1}.label` localization keys.
3398
+ */
3399
+ choiceLogicalName?: string;
3400
+ /**
3401
+ * @description Whether the boolean's option set is a global option set (rare for booleans). Determines
3402
+ * whether the localization keys live under the global `choices.*` subtree or the
3403
+ * table-scoped `tables.{table}.choices.*` subtree.
3404
+ */
3405
+ isGlobal?: boolean;
3406
+ /**
3407
+ * @description The default false/true display labels (value 0 and value 1) as configured in Dataverse,
3408
+ * used as a fallback when a localization override isn't available.
3409
+ */
3410
+ choices?: components["schemas"]["ChoiceValueMetadata"][];
3346
3411
  /** @description The logical name of the column in Dataverse (e.g. "firstname", "emailaddress1"). */
3347
3412
  columnName: string;
3348
3413
  /** @description The localized display name of the column as configured in Dataverse. */
@@ -4087,16 +4152,7 @@ interface components {
4087
4152
  * don't use role-based authorization.
4088
4153
  */
4089
4154
  roles?: string[];
4090
- /**
4091
- * @description Logical name of the Dataverse table the signed-in user is backed by — typically
4092
- * `"contact"` for a portal user or `"systemuser"` for an internal user.
4093
- * Sourced from the principal's `tablename` claim that PowerPortalsPro's
4094
- * `SignInManager` stamps on every sign-in. `null` for anonymous
4095
- * requests, and also for hosts whose Identity stack doesn't emit the claim
4096
- * (e.g., a generic `IdentityUser` consumer that hasn't wired up a
4097
- * PortalUser-style backing entity).
4098
- */
4099
- tableName?: null | string;
4155
+ portalUserType?: null | components["schemas"]["PortalUserType"];
4100
4156
  /**
4101
4157
  * @description Logical name of the user's sibling Dataverse identity (`"contact"` or
4102
4158
  * `"systemuser"`) when one is registered — set on every principal refresh
@@ -4212,7 +4268,8 @@ interface components {
4212
4268
  */
4213
4269
  success?: boolean;
4214
4270
  };
4215
- EntityRole: number;
4271
+ /** @enum {integer} */
4272
+ EntityRole: 0 | 1;
4216
4273
  /**
4217
4274
  * @description One option presented to the user when a single external sign-in matches
4218
4275
  * both a Dataverse `systemuser` and a `contact`. Used by
@@ -4819,6 +4876,33 @@ interface components {
4819
4876
  /** @description The schema name of the relationship in Dataverse. */
4820
4877
  relationshipName: string;
4821
4878
  };
4879
+ /**
4880
+ * @description One merged localization key for a culture, paired with the source that supplied the
4881
+ * winning value. Backs the `LocalizationAdmin` "view merged sources" dialog — the
4882
+ * same data the merged-download produces, but per-key annotated with its origin so an
4883
+ * admin can see exactly which file / web resource / metadata table a given string came
4884
+ * from. Returned sorted by string MergedLocalizationEntry.Key. Surfaced via
4885
+ * Task&lt;IReadOnlyList&lt;MergedLocalizationEntry&gt;&gt; IPowerPortalsProService.GetMergedLocalizationEntriesAsync(string culture).
4886
+ */
4887
+ MergedLocalizationEntry: {
4888
+ /** @description The flat dot-delimited localization key (lowercased, as stored in the cache). */
4889
+ key: string;
4890
+ /** @description The winning value for this key in the requested culture (post-merge). */
4891
+ value: string;
4892
+ /**
4893
+ * @description Stable identifier of the source that supplied the winning value
4894
+ * (see string LocalizationSourceLoad.SourceId). Empty when no source
4895
+ * contributed a non-empty value for the key.
4896
+ */
4897
+ sourceId: string;
4898
+ /**
4899
+ * @description Human-readable name/location of the winning source — the file path, web-resource
4900
+ * name, or Dataverse-metadata display name. Empty when unattributed.
4901
+ */
4902
+ sourceDisplayName: string;
4903
+ /** @description The kind of the winning source — drives the "Kind" column / grouping in the UI. */
4904
+ sourceKind: components["schemas"]["LocalizationSourceKind"];
4905
+ };
4822
4906
  /** @description Metadata for a Dataverse one-to-many (1:N) relationship between a referenced (parent) table and a referencing (child) table. */
4823
4907
  OneToManyMetadata: {
4824
4908
  /** @description The logical name of the referenced (parent) table — the "one" side of the relationship. */
@@ -5019,6 +5103,16 @@ interface components {
5019
5103
  * compare file byte length directly against this for a pre-upload check.
5020
5104
  */
5021
5105
  maxUploadFileSizeInBytes: number | string;
5106
+ /**
5107
+ * @description The organization's default time-zone id (a Windows time-zone id such as
5108
+ * `Pacific Standard Time`, suitable for TimeZoneInfo TimeZoneInfo.FindSystemTimeZoneById(string id)),
5109
+ * resolved from the connecting app user's `usersettings.timezonecode`. The
5110
+ * `organization` entity has no time-zone column of its own, so this is the closest
5111
+ * org-wide default. Used server-side to format `UserLocal` dates for contacts (portal
5112
+ * users, which have no `usersettings` row); empty when it can't be resolved. Defaults to
5113
+ * empty for backward compatibility with older cached payloads.
5114
+ */
5115
+ defaultTimeZoneId?: string;
5022
5116
  };
5023
5117
  /** @description Paging metadata for a Dataverse query response. */
5024
5118
  PagingInfo: {
@@ -5108,6 +5202,8 @@ interface components {
5108
5202
  [key: string]: string;
5109
5203
  };
5110
5204
  };
5205
+ /** @enum {integer} */
5206
+ PortalUserType: 0 | 1 | 2;
5111
5207
  ProblemDetails: {
5112
5208
  type?: null | string;
5113
5209
  title?: null | string;
@@ -5323,6 +5419,15 @@ interface components {
5323
5419
  * so clients can match this directly against the property key.
5324
5420
  */
5325
5421
  columnName: string;
5422
+ /**
5423
+ * @description Logical name of the table this column actually belongs to. For a primary-entity column
5424
+ * this is the view's main table; for a linked-entity column it is the <em>related</em>
5425
+ * table the column lives on (e.g. `contact` for an account view's primary-contact
5426
+ * email column). Lets a client attribute each column to its owning table without a
5427
+ * separate metadata round-trip — needed to build the column's localization key, which is
5428
+ * keyed by the owning table, not the grid's primary table.
5429
+ */
5430
+ tableName: string;
5326
5431
  /**
5327
5432
  * @description Localized display name, resolved against the user's locale via
5328
5433
  * the framework's localization layer. Falls back through
@@ -5770,7 +5875,8 @@ interface components {
5770
5875
  */
5771
5876
  displayName?: null | string;
5772
5877
  };
5773
- ViewType: number;
5878
+ /** @enum {integer} */
5879
+ ViewType: 0 | 1 | 2 | 4 | 32 | 64 | 2048;
5774
5880
  };
5775
5881
  responses: never;
5776
5882
  parameters: never;
@@ -6148,6 +6254,13 @@ declare const DeletePersonalDataResult: {
6148
6254
  readonly RequireLocalPassword: 2;
6149
6255
  };
6150
6256
  type DeletePersonalDataResult = (typeof DeletePersonalDataResult)[keyof typeof DeletePersonalDataResult];
6257
+ declare const EntityRole: {
6258
+ /** The entity plays the "referenced" (primary) role. */
6259
+ readonly Referenced: 0;
6260
+ /** The entity plays the "referencing" (related) role. */
6261
+ readonly Referencing: 1;
6262
+ };
6263
+ type EntityRole = (typeof EntityRole)[keyof typeof EntityRole];
6151
6264
  /**
6152
6265
  * Which Dataverse table backs an external-login candidate. Members carry
6153
6266
  * explicit integer values so the JSON wire form is a stable contract
@@ -6218,6 +6331,15 @@ declare const LoginResult: {
6218
6331
  readonly LockedOut: 4;
6219
6332
  };
6220
6333
  type LoginResult = (typeof LoginResult)[keyof typeof LoginResult];
6334
+ declare const PortalUserType: {
6335
+ /** A portal contact under the classic (portal-side) security model — no stub systemuser; permission handlers enforce access. */
6336
+ readonly Contact: 0;
6337
+ /** A real internal Dataverse systemuser (e.g. Entra ID staff sign-in). */
6338
+ readonly SystemUser: 1;
6339
+ /** A portal contact whose Dataverse access is enforced through the system-managed (C2) stub systemuser provisioned for it under the Dataverse-native security model. Must never be presented as an internal user. */
6340
+ readonly ContactStubUser: 2;
6341
+ };
6342
+ type PortalUserType = (typeof PortalUserType)[keyof typeof PortalUserType];
6221
6343
  /**
6222
6344
  * Outcome of a RegisterRequest. Members carry explicit integer
6223
6345
  * values so the JSON wire form is a stable contract across reorderings.
@@ -6316,6 +6438,23 @@ declare const TableSecurityPermission: {
6316
6438
  readonly All: 63;
6317
6439
  };
6318
6440
  type TableSecurityPermission = (typeof TableSecurityPermission)[keyof typeof TableSecurityPermission];
6441
+ declare const ViewType: {
6442
+ /** A public view visible to all users. */
6443
+ readonly Public: 0;
6444
+ /** An advanced find view. */
6445
+ readonly AdvancedFind: 1;
6446
+ /** A view used for displaying associated records. */
6447
+ readonly Associated: 2;
6448
+ /** A view used for Quick Find search. */
6449
+ readonly QuickFind: 4;
6450
+ /** A view used for displaying team or queue members. */
6451
+ readonly Members: 32;
6452
+ /** A view used in lookup dialogs. */
6453
+ readonly Lookup: 64;
6454
+ /** A view used for the lookup display format. */
6455
+ readonly LookupDisplay: 2048;
6456
+ };
6457
+ type ViewType = (typeof ViewType)[keyof typeof ViewType];
6319
6458
 
6320
6459
  type Schemas = components['schemas'];
6321
6460
  type TableRecord$1 = Schemas['TableRecord'];
@@ -6381,6 +6520,7 @@ type LocalizationPipelineConfiguration = Schemas['LocalizationPipelineConfigurat
6381
6520
  type LocalizationSourceLoad = Schemas['LocalizationSourceLoad'];
6382
6521
  type LocalizationSourceKind = Schemas['LocalizationSourceKind'];
6383
6522
  type LocalizationSourceStatus = Schemas['LocalizationSourceStatus'];
6523
+ type MergedLocalizationEntry = Schemas['MergedLocalizationEntry'];
6384
6524
  /**
6385
6525
  * A localization file pulled from the per-source or merged download endpoint:
6386
6526
  * the UTF-8 JSON bytes plus the server-suggested filename (parsed from the
@@ -6463,6 +6603,13 @@ declare class PowerPortalsProClient {
6463
6603
  * Returns `null` when the culture has no entries (404). SystemAdmin-gated.
6464
6604
  */
6465
6605
  downloadMergedLocalizationsAsync(culture: string, signal?: AbortSignal): Promise<LocalizationFileDownload | null>;
6606
+ /**
6607
+ * Reads the merged localization keys for a culture as a structured list — every key the
6608
+ * cache will serve, its winning value, and which source supplied it. Same data as
6609
+ * {@link downloadMergedLocalizationsAsync} but per-key annotated with provenance, for the
6610
+ * `<LocalizationAdmin />` "view merged sources" dialog. Sorted by key. SystemAdmin-gated.
6611
+ */
6612
+ getMergedLocalizationEntriesAsync(culture: string, signal?: AbortSignal): Promise<readonly MergedLocalizationEntry[]>;
6466
6613
  /**
6467
6614
  * Shared binary-download path for the two localization download endpoints. Reads
6468
6615
  * the raw bytes via `response.arrayBuffer()` and derives the filename from the
@@ -6740,4 +6887,4 @@ declare function getRecordReferenceId(record: Pick<TableRecord, 'id' | '_idForCr
6740
6887
 
6741
6888
  declare const VERSION = "0.1.0";
6742
6889
 
6743
- 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 };
6890
+ 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, EntityRole, 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 MergedLocalizationEntry, type OrganizationRequest, type OrganizationResponse, type OrganizationSettings, type PendingExternalLoginResponse, type PersonalDataResponse, PortalUserType, 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, ViewType, type components, getRecordReferenceId, mapProblemDetails, type paths };