@mohsinonxrm/dataverse-sdk-metadata 1.0.0 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +366 -77
- package/dist/index.d.ts +2588 -11530
- package/dist/index.js +1160 -890
- package/dist/index.js.map +1 -1
- package/package.json +13 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MetadataClient.ts","../src/types/AccessRights.ts","../src/types/AssociatedMenuBehavior.ts","../src/types/AssociatedMenuGroup.ts","../src/types/AttributeRequiredLevel.ts","../src/types/AttributeTypeCode.ts","../src/types/BusinessNotificationParameterType.ts","../src/types/BusinessNotificationSeverity.ts","../src/types/CascadeType.ts","../src/types/ChannelAccessProfilePrivilegeDepth.ts","../src/types/ConditionOperator.ts","../src/types/DateTimeFormat.ts","../src/types/DeletedMetadataFilters.ts","../src/types/DependencyDepth.ts","../src/types/EndpointAccessType.ts","../src/types/EndpointType.ts","../src/types/EntityClusterMode.ts","../src/types/EntityFilters.ts","../src/types/EntityKeyIndexStatus.ts","../src/types/ErrorType.ts","../src/types/ImeMode.ts","../src/types/ImportDecision.ts","../src/types/IntegerFormat.ts","../src/types/JoinOperator.ts","../src/types/LayerDesiredOrderType.ts","../src/types/LogicalOperator.ts","../src/types/LookupFormat.ts","../src/types/ManagedPropertyEvaluationPriority.ts","../src/types/ManagedPropertyOperation.ts","../src/types/ManagedPropertyType.ts","../src/types/MetadataConditionOperator.ts","../src/types/MissingPackageResolutionAction.ts","../src/types/OptionSetType.ts","../src/types/OrderType.ts","../src/types/OrganizationState.ts","../src/types/OrganizationType.ts","../src/types/OwnershipTypes.ts","../src/types/PresentInOrg.ts","../src/types/PrivilegeDepth.ts","../src/types/PrivilegeType.ts","../src/types/PropagationOwnershipOptions.ts","../src/types/ProvisionLanguageForUserStatusType.ts","../src/types/RecentlyViewedRecordType.ts","../src/types/RelationshipType.ts","../src/types/ResultCode.ts","../src/types/RibbonLocationFilters.ts","../src/types/RollupType.ts","../src/types/SearchDirection.ts","../src/types/SecurityTypes.ts","../src/types/ShareAccessRights.ts","../src/types/SolutionOperationStatus.ts","../src/types/SolutionOperationType.ts","../src/types/SolutionValidationResultType.ts","../src/types/StageSolutionStatus.ts","../src/types/StringFormat.ts","../src/types/SubCode.ts","../src/types/SubstitutionStatus.ts","../src/types/TargetFieldType.ts","../src/types/TimeCode.ts","../src/types/ValidateSolutionStatus.ts","../src/types/XrmAggregateType.ts","../src/types/XrmDateTimeGrouping.ts"],"names":["AccessRights","AssociatedMenuBehavior","AssociatedMenuGroup","AttributeRequiredLevel","AttributeTypeCode","BusinessNotificationParameterType","BusinessNotificationSeverity","CascadeType","ChannelAccessProfilePrivilegeDepth","ConditionOperator","DateTimeFormat","DeletedMetadataFilters","DependencyDepth","EndpointAccessType","EndpointType","EntityClusterMode","EntityFilters","EntityKeyIndexStatus","ErrorType","ImeMode","ImportDecision","IntegerFormat","JoinOperator","LayerDesiredOrderType","LogicalOperator","LookupFormat","ManagedPropertyEvaluationPriority","ManagedPropertyOperation","ManagedPropertyType","MetadataConditionOperator","MissingPackageResolutionAction","OptionSetType","OrderType","OrganizationState","OrganizationType","OwnershipTypes","PresentInOrg","PrivilegeDepth","PrivilegeType","PropagationOwnershipOptions","ProvisionLanguageForUserStatusType","RecentlyViewedRecordType","RelationshipType","ResultCode","RibbonLocationFilters","RollupType","SearchDirection","SecurityTypes","ShareAccessRights","SolutionOperationStatus","SolutionOperationType","SolutionValidationResultType","StageSolutionStatus","StringFormat","SubCode","SubstitutionStatus","TargetFieldType","TimeCode","ValidateSolutionStatus","XrmAggregateType","XrmDateTimeGrouping"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Metadata client for managing Dataverse metadata (entities, attributes, relationships)\n */\n\nimport type { DataverseClient } from \"@mohsinonxrm/dataverse-sdk-core\";\nimport type {\n EntityMetadata,\n EntityMetadataCreate,\n EntityMetadataUpdate,\n AttributeMetadata,\n AttributeMetadataCreateTypes,\n OneToManyRelationshipMetadata,\n ManyToManyRelationshipMetadata,\n OneToManyRelationshipMetadataCreate,\n OneToManyRelationshipMetadataUpdate,\n ManyToManyRelationshipMetadataCreate,\n ManyToManyRelationshipMetadataUpdate,\n OptionSetMetadata,\n OptionSetMetadataCreate,\n InsertOptionValueParams,\n InsertOptionValueResponse,\n UpdateOptionValueParams,\n DeleteOptionValueParams,\n OrderOptionParams,\n InsertStatusValueParams,\n InsertStatusValueResponse,\n CreateCustomerRelationshipsParams,\n CreateCustomerRelationshipsResponse,\n CreatePolymorphicLookupAttributeParams,\n CreatePolymorphicLookupAttributeResponse,\n CanBeReferencedResponse,\n CanBeReferencingResponse,\n CanManyToManyResponse,\n GetValidReferencingEntitiesResponse,\n GetValidReferencedEntitiesResponse,\n GetValidManyToManyResponse,\n EntityQueryExpression,\n RetrieveMetadataChangesResponse,\n DeletedMetadataFilters,\n} from \"./types/index.js\";\n\n/**\n * Query options for retrieving metadata\n */\nexport interface MetadataQueryOptions {\n select?: string[];\n filter?: string;\n expand?: string;\n}\n\n/**\n * Client for interacting with Dataverse metadata API\n */\nexport class MetadataClient {\n private readonly client: DataverseClient;\n\n constructor(client: DataverseClient) {\n this.client = client;\n }\n\n // ==================== Entity Definitions ====================\n\n /**\n * Retrieve all entity definitions\n * @param options Query options (select, filter, expand)\n * @returns Array of entity metadata\n * @example\n * ```typescript\n * const entities = await metadataClient.getEntityDefinitions({\n * select: ['LogicalName', 'DisplayName', 'SchemaName'],\n * filter: \"IsCustomEntity eq true\"\n * });\n * ```\n */\n async getEntityDefinitions(options?: MetadataQueryOptions): Promise<EntityMetadata[]> {\n let builder = this.client.api(\"/EntityDefinitions\");\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.filter) {\n builder = builder.filter(options.filter);\n }\n if (options?.expand) {\n builder = builder.expand(options.expand);\n }\n\n const response = await builder.get<{ value: EntityMetadata[] }>();\n return response.value;\n }\n\n /**\n * Retrieve a single entity definition by logical name\n * @param logicalName Entity logical name\n * @param options Query options (select, expand)\n * @returns Entity metadata\n * @example\n * ```typescript\n * const accountEntity = await metadataClient.getEntityDefinition('account', {\n * expand: 'Attributes'\n * });\n * ```\n */\n async getEntityDefinition(\n logicalName: string,\n options?: Omit<MetadataQueryOptions, \"filter\">\n ): Promise<EntityMetadata> {\n let builder = this.client.api(`/EntityDefinitions(LogicalName='${logicalName}')`);\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.expand) {\n builder = builder.expand(options.expand);\n }\n\n return await builder.get<EntityMetadata>();\n }\n\n /**\n * Create a new entity definition\n * @param entity Entity metadata to create\n * @returns Metadata ID of created entity (GUID)\n * @example\n * ```typescript\n * const metadataId = await metadataClient.createEntityDefinition({\n * '@odata.type': 'Microsoft.Dynamics.CRM.EntityMetadata',\n * SchemaName: 'new_CustomEntity',\n * DisplayName: {\n * LocalizedLabels: [{ Label: 'Custom Entity', LanguageCode: 1033 }]\n * },\n * DisplayCollectionName: {\n * LocalizedLabels: [{ Label: 'Custom Entities', LanguageCode: 1033 }]\n * },\n * OwnershipType: 1,\n * HasActivities: true\n * });\n * ```\n */\n async createEntityDefinition(entity: EntityMetadataCreate): Promise<string> {\n const response = await this.client\n .api(\"/EntityDefinitions\")\n .header(\"Content-Type\", \"application/json\")\n .preferRaw(\"return=representation\")\n .post<EntityMetadata>(entity);\n\n if (!response.MetadataId) {\n throw new Error(\"Failed to retrieve entity metadata ID from response\");\n }\n\n return response.MetadataId;\n }\n\n /**\n * Update an existing entity definition\n * @param logicalName Entity logical name\n * @param entity Entity metadata updates\n */\n async updateEntityDefinition(logicalName: string, entity: EntityMetadataUpdate): Promise<void> {\n await this.client\n .api(`/EntityDefinitions(LogicalName='${logicalName}')`)\n .header(\"Content-Type\", \"application/json\")\n .header(\"MSCRM.MergeLabels\", \"true\")\n .put<undefined>(entity);\n }\n\n /**\n * Delete an entity definition\n * @param logicalName Entity logical name\n */\n async deleteEntityDefinition(logicalName: string): Promise<void> {\n await this.client.api(`/EntityDefinitions(LogicalName='${logicalName}')`).delete<undefined>();\n }\n\n // ==================== Attribute Definitions ====================\n\n /**\n * Retrieve all attributes for an entity\n * @param entityLogicalName Entity logical name\n * @param options Query options (select, filter)\n * @returns Array of attribute metadata\n */\n async getAttributeDefinitions(\n entityLogicalName: string,\n options?: Omit<MetadataQueryOptions, \"expand\">\n ): Promise<AttributeMetadata[]> {\n let builder = this.client.api(\n `/EntityDefinitions(LogicalName='${entityLogicalName}')/Attributes`\n );\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.filter) {\n builder = builder.filter(options.filter);\n }\n\n const response = await builder.get<{ value: AttributeMetadata[] }>();\n return response.value;\n }\n\n /**\n * Retrieve a single attribute definition\n * @param entityLogicalName Entity logical name\n * @param attributeLogicalName Attribute logical name\n * @param options Query options (select)\n * @returns Attribute metadata\n */\n async getAttributeDefinition(\n entityLogicalName: string,\n attributeLogicalName: string,\n options?: Omit<MetadataQueryOptions, \"filter\" | \"expand\">\n ): Promise<AttributeMetadata> {\n let builder = this.client.api(\n `/EntityDefinitions(LogicalName='${entityLogicalName}')/Attributes(LogicalName='${attributeLogicalName}')`\n );\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n\n return await builder.get<AttributeMetadata>();\n }\n\n /**\n * Create a new attribute definition\n * @param entityLogicalName Entity logical name\n * @param attribute Attribute metadata to create\n * @returns Metadata ID of created attribute (GUID)\n */\n async createAttributeDefinition(\n entityLogicalName: string,\n attribute: AttributeMetadataCreateTypes\n ): Promise<string> {\n const response = await this.client\n .api(`/EntityDefinitions(LogicalName='${entityLogicalName}')/Attributes`)\n .header(\"Content-Type\", \"application/json\")\n .preferRaw(\"return=representation\")\n .post<AttributeMetadata>(attribute);\n\n if (!response.MetadataId) {\n throw new Error(\"Failed to retrieve attribute metadata ID from response\");\n }\n\n return response.MetadataId;\n }\n\n /**\n * Update an existing attribute definition\n * @param entityLogicalName Entity logical name\n * @param attributeLogicalName Attribute logical name\n * @param attribute Attribute metadata updates\n */\n async updateAttributeDefinition(\n entityLogicalName: string,\n attributeLogicalName: string,\n attribute: Partial<AttributeMetadataCreateTypes>\n ): Promise<void> {\n await this.client\n .api(\n `/EntityDefinitions(LogicalName='${entityLogicalName}')/Attributes(LogicalName='${attributeLogicalName}')`\n )\n .header(\"Content-Type\", \"application/json\")\n .header(\"MSCRM.MergeLabels\", \"true\")\n .put<undefined>(attribute);\n }\n\n /**\n * Delete an attribute definition\n * @param entityLogicalName Entity logical name\n * @param attributeLogicalName Attribute logical name\n */\n async deleteAttributeDefinition(\n entityLogicalName: string,\n attributeLogicalName: string\n ): Promise<void> {\n await this.client\n .api(\n `/EntityDefinitions(LogicalName='${entityLogicalName}')/Attributes(LogicalName='${attributeLogicalName}')`\n )\n .delete<undefined>();\n }\n\n // ==================== Relationship Definitions ====================\n\n /**\n * Create a one-to-many relationship\n * @param relationship Relationship metadata to create\n * @returns Metadata ID of created relationship (GUID)\n */\n async createOneToManyRelationship(\n relationship: OneToManyRelationshipMetadataCreate\n ): Promise<string> {\n const response = await this.client\n .api(\"/RelationshipDefinitions\")\n .header(\"Content-Type\", \"application/json\")\n .preferRaw(\"return=representation\")\n .post<OneToManyRelationshipMetadata>(relationship);\n\n if (!response.MetadataId) {\n throw new Error(\"Failed to retrieve relationship metadata ID from response\");\n }\n\n return response.MetadataId;\n }\n\n /**\n * Delete a relationship definition\n * @param metadataId Relationship metadata ID (GUID)\n */\n async deleteRelationship(metadataId: string): Promise<void> {\n await this.client.api(`/RelationshipDefinitions(${metadataId})`).delete<undefined>();\n }\n\n /**\n * Get one-to-many relationships for an entity\n * @param entityLogicalName Entity logical name\n * @param options Query options\n * @returns Array of one-to-many relationships\n */\n async getOneToManyRelationships(\n entityLogicalName: string,\n options?: MetadataQueryOptions\n ): Promise<OneToManyRelationshipMetadata[]> {\n let builder = this.client.api(\n `/EntityDefinitions(LogicalName='${entityLogicalName}')/OneToManyRelationships`\n );\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.filter) {\n builder = builder.filter(options.filter);\n }\n\n const response = await builder.get<{ value: OneToManyRelationshipMetadata[] }>();\n return response.value;\n }\n\n /**\n * Get many-to-one relationships for an entity\n * @param entityLogicalName Entity logical name\n * @param options Query options\n * @returns Array of many-to-one relationships\n */\n async getManyToOneRelationships(\n entityLogicalName: string,\n options?: MetadataQueryOptions\n ): Promise<OneToManyRelationshipMetadata[]> {\n let builder = this.client.api(\n `/EntityDefinitions(LogicalName='${entityLogicalName}')/ManyToOneRelationships`\n );\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.filter) {\n builder = builder.filter(options.filter);\n }\n\n const response = await builder.get<{ value: OneToManyRelationshipMetadata[] }>();\n return response.value;\n }\n\n /**\n * Get many-to-many relationships for an entity\n * @param entityLogicalName Entity logical name\n * @param options Query options\n * @returns Array of many-to-many relationships\n */\n async getManyToManyRelationships(\n entityLogicalName: string,\n options?: MetadataQueryOptions\n ): Promise<ManyToManyRelationshipMetadata[]> {\n let builder = this.client.api(\n `/EntityDefinitions(LogicalName='${entityLogicalName}')/ManyToManyRelationships`\n );\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.filter) {\n builder = builder.filter(options.filter);\n }\n\n const response = await builder.get<{ value: ManyToManyRelationshipMetadata[] }>();\n return response.value;\n }\n\n /**\n * Get a relationship by schema name\n * @param schemaName Relationship schema name\n * @param options Query options\n * @returns Relationship metadata\n */\n async getRelationshipBySchemaName(\n schemaName: string,\n options?: Omit<MetadataQueryOptions, \"filter\">\n ): Promise<OneToManyRelationshipMetadata | ManyToManyRelationshipMetadata> {\n let builder = this.client.api(`/RelationshipDefinitions(SchemaName='${schemaName}')`);\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.expand) {\n builder = builder.expand(options.expand);\n }\n\n return await builder.get<OneToManyRelationshipMetadata | ManyToManyRelationshipMetadata>();\n }\n\n /**\n * Get a relationship by metadata ID\n * @param metadataId Relationship metadata ID\n * @param options Query options\n * @returns Relationship metadata\n */\n async getRelationshipByMetadataId(\n metadataId: string,\n options?: Omit<MetadataQueryOptions, \"filter\">\n ): Promise<OneToManyRelationshipMetadata | ManyToManyRelationshipMetadata> {\n let builder = this.client.api(`/RelationshipDefinitions(${metadataId})`);\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.expand) {\n builder = builder.expand(options.expand);\n }\n\n return await builder.get<OneToManyRelationshipMetadata | ManyToManyRelationshipMetadata>();\n }\n\n /**\n * Create a many-to-many relationship\n * @param relationship Relationship metadata to create\n * @returns Metadata ID of created relationship (GUID)\n * @example\n * ```typescript\n * const metadataId = await metadataClient.createManyToManyRelationship({\n * '@odata.type': 'Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata',\n * SchemaName: 'new_account_contact',\n * Entity1LogicalName: 'account',\n * Entity2LogicalName: 'contact',\n * IntersectEntityName: 'new_account_contact'\n * });\n * ```\n */\n async createManyToManyRelationship(\n relationship: ManyToManyRelationshipMetadataCreate\n ): Promise<string> {\n const response = await this.client\n .api(\"/RelationshipDefinitions\")\n .header(\"Content-Type\", \"application/json\")\n .preferRaw(\"return=representation\")\n .post<ManyToManyRelationshipMetadata>(relationship);\n\n if (!response.MetadataId) {\n throw new Error(\"Failed to retrieve relationship metadata ID from response\");\n }\n\n return response.MetadataId;\n }\n\n /**\n * Update an existing one-to-many relationship\n * @param schemaName Relationship schema name\n * @param relationship Relationship metadata updates\n */\n async updateOneToManyRelationship(\n schemaName: string,\n relationship: OneToManyRelationshipMetadataUpdate\n ): Promise<void> {\n await this.client\n .api(`/RelationshipDefinitions(SchemaName='${schemaName}')`)\n .header(\"Content-Type\", \"application/json\")\n .header(\"MSCRM.MergeLabels\", \"true\")\n .put<undefined>(relationship);\n }\n\n /**\n * Update an existing many-to-many relationship\n * @param schemaName Relationship schema name\n * @param relationship Relationship metadata updates\n */\n async updateManyToManyRelationship(\n schemaName: string,\n relationship: ManyToManyRelationshipMetadataUpdate\n ): Promise<void> {\n await this.client\n .api(`/RelationshipDefinitions(SchemaName='${schemaName}')`)\n .header(\"Content-Type\", \"application/json\")\n .header(\"MSCRM.MergeLabels\", \"true\")\n .put<undefined>(relationship);\n }\n\n /**\n * Delete a relationship by schema name\n * @param schemaName Relationship schema name\n */\n async deleteRelationshipBySchemaName(schemaName: string): Promise<void> {\n await this.client\n .api(`/RelationshipDefinitions(SchemaName='${schemaName}')`)\n .delete<undefined>();\n }\n\n // ==================== Global Option Sets ====================\n\n /**\n * Get all global option sets\n * @param options Query options\n * @returns Array of global option set metadata\n */\n async getGlobalOptionSets(options?: MetadataQueryOptions): Promise<OptionSetMetadata[]> {\n let builder = this.client.api(\"/GlobalOptionSetDefinitions\");\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.filter) {\n builder = builder.filter(options.filter);\n }\n if (options?.expand) {\n builder = builder.expand(options.expand);\n }\n\n const response = await builder.get<{ value: OptionSetMetadata[] }>();\n return response.value;\n }\n\n /**\n * Get a global option set by name or metadata ID\n * @param nameOrMetadataId Option set name or metadata ID\n * @param options Query options\n * @returns Option set metadata\n */\n async getGlobalOptionSet(\n nameOrMetadataId: string,\n options?: Omit<MetadataQueryOptions, \"filter\">\n ): Promise<OptionSetMetadata> {\n // If it looks like a GUID, use MetadataId, otherwise use Name\n const isGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(\n nameOrMetadataId\n );\n const path = isGuid\n ? `/GlobalOptionSetDefinitions(${nameOrMetadataId})`\n : `/GlobalOptionSetDefinitions(Name='${nameOrMetadataId}')`;\n\n let builder = this.client.api(path);\n\n if (options?.select) {\n builder = builder.select(...options.select);\n }\n if (options?.expand) {\n builder = builder.expand(options.expand);\n }\n\n return await builder.get<OptionSetMetadata>();\n }\n\n /**\n * Create a global option set\n * @param optionSet Option set metadata to create\n * @returns Metadata ID of created option set (GUID)\n * @example\n * ```typescript\n * const metadataId = await metadataClient.createGlobalOptionSet({\n * '@odata.type': 'Microsoft.Dynamics.CRM.OptionSetMetadata',\n * Name: 'new_colors',\n * DisplayName: {\n * LocalizedLabels: [{ Label: 'Colors', LanguageCode: 1033 }]\n * },\n * Options: [\n * { Value: 1, Label: { LocalizedLabels: [{ Label: 'Red', LanguageCode: 1033 }] } },\n * { Value: 2, Label: { LocalizedLabels: [{ Label: 'Blue', LanguageCode: 1033 }] } }\n * ]\n * });\n * ```\n */\n async createGlobalOptionSet(optionSet: OptionSetMetadataCreate): Promise<string> {\n const response = await this.client\n .api(\"/GlobalOptionSetDefinitions\")\n .header(\"Content-Type\", \"application/json\")\n .preferRaw(\"return=representation\")\n .post<OptionSetMetadata>(optionSet);\n\n if (!response.MetadataId) {\n throw new Error(\"Failed to retrieve option set metadata ID from response\");\n }\n\n return response.MetadataId;\n }\n\n /**\n * Update a global option set\n * @param nameOrMetadataId Option set name or metadata ID\n * @param optionSet Option set metadata updates\n */\n async updateGlobalOptionSet(\n nameOrMetadataId: string,\n optionSet: Partial<OptionSetMetadata>\n ): Promise<void> {\n const isGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(\n nameOrMetadataId\n );\n const path = isGuid\n ? `/GlobalOptionSetDefinitions(${nameOrMetadataId})`\n : `/GlobalOptionSetDefinitions(Name='${nameOrMetadataId}')`;\n\n await this.client\n .api(path)\n .header(\"Content-Type\", \"application/json\")\n .header(\"MSCRM.MergeLabels\", \"true\")\n .put<undefined>(optionSet);\n }\n\n /**\n * Delete a global option set\n * @param nameOrMetadataId Option set name or metadata ID\n */\n async deleteGlobalOptionSet(nameOrMetadataId: string): Promise<void> {\n const isGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(\n nameOrMetadataId\n );\n const path = isGuid\n ? `/GlobalOptionSetDefinitions(${nameOrMetadataId})`\n : `/GlobalOptionSetDefinitions(Name='${nameOrMetadataId}')`;\n\n await this.client.api(path).delete<undefined>();\n }\n\n // ==================== Option Value Operations ====================\n\n /**\n * Insert an option value into a local or global option set\n * @param params Insert option value parameters\n * @returns New option value\n * @example\n * ```typescript\n * // For local option set\n * const result = await metadataClient.insertOptionValue({\n * EntityLogicalName: 'account',\n * AttributeLogicalName: 'new_category',\n * Label: { LocalizedLabels: [{ Label: 'Enterprise', LanguageCode: 1033 }] },\n * Value: 100000002\n * });\n *\n * // For global option set\n * const result = await metadataClient.insertOptionValue({\n * OptionSetName: 'new_colors',\n * Label: { LocalizedLabels: [{ Label: 'Green', LanguageCode: 1033 }] },\n * Value: 3\n * });\n * ```\n */\n async insertOptionValue(params: InsertOptionValueParams): Promise<InsertOptionValueResponse> {\n return await this.client.api(\"/InsertOptionValue\").post<InsertOptionValueResponse>(params);\n }\n\n /**\n * Update an option value in a local or global option set\n * @param params Update option value parameters\n */\n async updateOptionValue(params: UpdateOptionValueParams): Promise<void> {\n await this.client.api(\"/UpdateOptionValue\").post<undefined>(params);\n }\n\n /**\n * Delete an option value from a local or global option set\n * @param params Delete option value parameters\n */\n async deleteOptionValue(params: DeleteOptionValueParams): Promise<void> {\n await this.client.api(\"/DeleteOptionValue\").post<undefined>(params);\n }\n\n /**\n * Reorder options in a local or global option set\n * @param params Order option parameters\n */\n async orderOptions(params: OrderOptionParams): Promise<void> {\n await this.client.api(\"/OrderOption\").post<undefined>(params);\n }\n\n /**\n * Insert a status value (statuscode option)\n * @param params Insert status value parameters\n * @returns New option value\n */\n async insertStatusValue(params: InsertStatusValueParams): Promise<InsertStatusValueResponse> {\n return await this.client.api(\"/InsertStatusValue\").post<InsertStatusValueResponse>(params);\n }\n\n // ==================== Polymorphic Lookups ====================\n\n /**\n * Create a customer relationship (polymorphic lookup to account and contact)\n * @param params Customer relationship parameters\n * @returns Attribute ID and relationship IDs\n */\n async createCustomerRelationship(\n params: CreateCustomerRelationshipsParams\n ): Promise<CreateCustomerRelationshipsResponse> {\n return await this.client\n .api(\"/CreateCustomerRelationships\")\n .post<CreateCustomerRelationshipsResponse>(params);\n }\n\n /**\n * Create a polymorphic lookup attribute\n * @param params Polymorphic lookup parameters\n * @returns Attribute ID and relationship IDs\n * @example\n * ```typescript\n * const result = await metadataClient.createPolymorphicLookup({\n * Lookup: {\n * '@odata.type': 'Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata',\n * SchemaName: 'new_RegardingObjectId',\n * DisplayName: { LocalizedLabels: [{ Label: 'Regarding', LanguageCode: 1033 }] },\n * Targets: ['account', 'contact', 'lead']\n * },\n * OneToManyRelationships: [\n * // one relationship definition per target entity\n * ]\n * });\n * ```\n */\n async createPolymorphicLookup(\n params: CreatePolymorphicLookupAttributeParams\n ): Promise<CreatePolymorphicLookupAttributeResponse> {\n return await this.client\n .api(\"/CreatePolymorphicLookupAttribute\")\n .post<CreatePolymorphicLookupAttributeResponse>(params);\n }\n\n // ==================== Relationship Eligibility ====================\n\n /**\n * Check if an entity can be referenced (primary in 1:N)\n * @param entityName Entity logical name\n * @returns Whether the entity can be referenced\n */\n async canBeReferenced(entityName: string): Promise<boolean> {\n const response = await this.client\n .api(`/CanBeReferenced(EntityName='${entityName}')`)\n .get<CanBeReferencedResponse>();\n return response.CanBeReferenced ?? false;\n }\n\n /**\n * Check if an entity can be referencing (related in 1:N)\n * @param entityName Entity logical name\n * @returns Whether the entity can be referencing\n */\n async canBeReferencing(entityName: string): Promise<boolean> {\n const response = await this.client\n .api(`/CanBeReferencing(EntityName='${entityName}')`)\n .get<CanBeReferencingResponse>();\n return response.CanBeReferencing ?? false;\n }\n\n /**\n * Check if an entity can participate in many-to-many\n * @param entityName Entity logical name\n * @returns Whether the entity can participate in N:N\n */\n async canManyToMany(entityName: string): Promise<boolean> {\n const response = await this.client\n .api(`/CanManyToMany(EntityName='${entityName}')`)\n .get<CanManyToManyResponse>();\n return response.CanManyToMany ?? false;\n }\n\n /**\n * Get entities that can reference the specified entity\n * @param referencedEntityName Referenced entity name\n * @returns Array of entity names that can reference the specified entity\n */\n async getValidReferencingEntities(referencedEntityName: string): Promise<string[]> {\n const response = await this.client\n .api(`/GetValidReferencingEntities(ReferencedEntityName='${referencedEntityName}')`)\n .get<GetValidReferencingEntitiesResponse>();\n return response.EntityNames ?? [];\n }\n\n /**\n * Get entities that the specified entity can reference\n * @param referencingEntityName Referencing entity name\n * @returns Array of entity names that can be referenced\n */\n async getValidReferencedEntities(referencingEntityName: string): Promise<string[]> {\n const response = await this.client\n .api(`/GetValidReferencedEntities(ReferencingEntityName='${referencingEntityName}')`)\n .get<GetValidReferencedEntitiesResponse>();\n return response.EntityNames ?? [];\n }\n\n /**\n * Get all entities that can participate in many-to-many relationships\n * @returns Array of entity names\n */\n async getValidManyToMany(): Promise<string[]> {\n const response = await this.client\n .api(\"/GetValidManyToMany()\")\n .get<GetValidManyToManyResponse>();\n return response.EntityNames ?? [];\n }\n\n // ==================== Metadata Change Tracking ====================\n\n /**\n * Retrieve metadata changes since a client version stamp\n * @param query Entity query expression\n * @param clientVersionStamp Client version stamp from previous call\n * @param deletedMetadataFilters Types of deleted metadata to return\n * @returns Metadata changes response with server version stamp\n * @example\n * ```typescript\n * const result = await metadataClient.retrieveMetadataChanges({\n * Criteria: {\n * FilterOperator: 'And',\n * Conditions: [\n * {\n * PropertyName: 'LogicalName',\n * ConditionOperator: 'Equals',\n * Value: 'account'\n * }\n * ]\n * },\n * Properties: {\n * AllProperties: false,\n * PropertyNames: ['LogicalName', 'DisplayName', 'SchemaName']\n * }\n * });\n * // Store result.ServerVersionStamp for next call\n * ```\n */\n async retrieveMetadataChanges(\n query: EntityQueryExpression,\n clientVersionStamp?: string,\n deletedMetadataFilters?: DeletedMetadataFilters\n ): Promise<RetrieveMetadataChangesResponse> {\n const params: {\n Query: EntityQueryExpression;\n ClientVersionStamp?: string;\n DeletedMetadataFilters?: DeletedMetadataFilters;\n } = {\n Query: query,\n };\n\n if (clientVersionStamp) {\n params.ClientVersionStamp = clientVersionStamp;\n }\n\n if (deletedMetadataFilters) {\n params.DeletedMetadataFilters = deletedMetadataFilters;\n }\n\n return await this.client\n .api(\"/RetrieveMetadataChanges\")\n .post<RetrieveMetadataChangesResponse>(params);\n }\n}\n","/**\n * AccessRights\n */\nexport enum AccessRights {\n None = 0,\n ReadAccess = 1,\n WriteAccess = 2,\n AppendAccess = 4,\n AppendToAccess = 16,\n CreateAccess = 32,\n DeleteAccess = 65536,\n ShareAccess = 262144,\n AssignAccess = 524288,\n}\n","/**\n * AssociatedMenuBehavior\n */\nexport enum AssociatedMenuBehavior {\n UseCollectionName = 0,\n UseLabel = 1,\n DoNotDisplay = 2,\n}\n","/**\n * AssociatedMenuGroup\n */\nexport enum AssociatedMenuGroup {\n Details = 0,\n Sales = 1,\n Service = 2,\n Marketing = 3,\n}\n","/**\n * AttributeRequiredLevel\n */\nexport enum AttributeRequiredLevel {\n None = 0,\n SystemRequired = 1,\n ApplicationRequired = 2,\n Recommended = 3,\n}\n","/**\n * AttributeTypeCode\n */\nexport enum AttributeTypeCode {\n Boolean = 0,\n Customer = 1,\n DateTime = 2,\n Decimal = 3,\n Double = 4,\n Integer = 5,\n Lookup = 6,\n Memo = 7,\n Money = 8,\n Owner = 9,\n PartyList = 10,\n Picklist = 11,\n State = 12,\n Status = 13,\n String = 14,\n Uniqueidentifier = 15,\n CalendarRules = 16,\n Virtual = 17,\n BigInt = 18,\n ManagedProperty = 19,\n EntityName = 20,\n}\n","/**\n * BusinessNotificationParameterType\n */\nexport enum BusinessNotificationParameterType {\n None = 0,\n String = 1,\n Attribute = 2,\n}\n","/**\n * BusinessNotificationSeverity\n */\nexport enum BusinessNotificationSeverity {\n None = 0,\n Error = 1,\n Warning = 2,\n Information = 3,\n UserDefined = 4,\n}\n","/**\n * CascadeType\n */\nexport enum CascadeType {\n NoCascade = 0,\n Cascade = 1,\n Active = 2,\n UserOwned = 3,\n RemoveLink = 4,\n Restrict = 5,\n}\n","/**\n * ChannelAccessProfilePrivilegeDepth\n */\nexport enum ChannelAccessProfilePrivilegeDepth {\n None = 0,\n EntityReference = 1,\n ParentEntityReference = 2,\n Global = 8,\n}\n","/**\n * ConditionOperator\n */\nexport enum ConditionOperator {\n Equal = 0,\n NotEqual = 1,\n GreaterThan = 2,\n LessThan = 3,\n GreaterEqual = 4,\n LessEqual = 5,\n Like = 6,\n NotLike = 7,\n In = 8,\n NotIn = 9,\n Between = 10,\n NotBetween = 11,\n Null = 12,\n NotNull = 13,\n Yesterday = 14,\n Today = 15,\n Tomorrow = 16,\n Last7Days = 17,\n Next7Days = 18,\n LastWeek = 19,\n ThisWeek = 20,\n NextWeek = 21,\n LastMonth = 22,\n ThisMonth = 23,\n NextMonth = 24,\n On = 25,\n OnOrBefore = 26,\n OnOrAfter = 27,\n LastYear = 28,\n ThisYear = 29,\n NextYear = 30,\n LastXHours = 31,\n NextXHours = 32,\n LastXDays = 33,\n NextXDays = 34,\n LastXWeeks = 35,\n NextXWeeks = 36,\n LastXMonths = 37,\n NextXMonths = 38,\n LastXYears = 39,\n NextXYears = 40,\n EqualUserId = 41,\n NotEqualUserId = 42,\n EqualBusinessId = 43,\n NotEqualBusinessId = 44,\n ChildOf = 45,\n Mask = 46,\n NotMask = 47,\n MasksSelect = 48,\n Contains = 49,\n DoesNotContain = 50,\n EqualUserLanguage = 51,\n NotOn = 52,\n OlderThanXMonths = 53,\n BeginsWith = 54,\n DoesNotBeginWith = 55,\n EndsWith = 56,\n DoesNotEndWith = 57,\n ThisFiscalYear = 58,\n ThisFiscalPeriod = 59,\n NextFiscalYear = 60,\n NextFiscalPeriod = 61,\n LastFiscalYear = 62,\n LastFiscalPeriod = 63,\n LastXFiscalYears = 64,\n LastXFiscalPeriods = 65,\n NextXFiscalYears = 66,\n NextXFiscalPeriods = 67,\n InFiscalYear = 68,\n InFiscalPeriod = 69,\n InFiscalPeriodAndYear = 70,\n InOrBeforeFiscalPeriodAndYear = 71,\n InOrAfterFiscalPeriodAndYear = 72,\n EqualUserTeams = 73,\n EqualUserOrUserTeams = 74,\n Under = 75,\n NotUnder = 76,\n UnderOrEqual = 77,\n Above = 78,\n AboveOrEqual = 79,\n EqualUserOrUserHierarchy = 80,\n EqualUserOrUserHierarchyAndTeams = 81,\n OlderThanXYears = 82,\n OlderThanXWeeks = 83,\n OlderThanXDays = 84,\n OlderThanXHours = 85,\n OlderThanXMinutes = 86,\n ContainValues = 87,\n DoesNotContainValues = 88,\n EqualRoleBusinessId = 89,\n}\n","/**\n * DateTimeFormat\n */\nexport enum DateTimeFormat {\n DateOnly = 0,\n DateAndTime = 1,\n}\n","/**\n * DeletedMetadataFilters\n */\nexport enum DeletedMetadataFilters {\n Default = 1,\n Attribute = 2,\n Relationship = 4,\n Label = 8,\n OptionSet = 16,\n All = 31,\n}\n","/**\n * DependencyDepth\n */\nexport enum DependencyDepth {\n Unknown = 0,\n OnDemandWithContext = 1,\n OnDemandWithoutContext = 2,\n OnDemandContextOnly = 3,\n Offline = 4,\n Mobile = 5,\n UserContext = 6,\n NoDependency = 7,\n}\n","/**\n * EndpointAccessType\n */\nexport enum EndpointAccessType {\n Default = 0,\n Internet = 1,\n Intranet = 2,\n}\n","/**\n * EndpointType\n */\nexport enum EndpointType {\n OrganizationService = 0,\n OrganizationDataService = 1,\n WebApplication = 2,\n}\n","/**\n * EntityClusterMode\n */\nexport enum EntityClusterMode {\n Partitioned = 0,\n Replicated = 1,\n Local = 2,\n Inherited = 3,\n}\n","/**\n * EntityFilters\n */\nexport enum EntityFilters {\n Entity = 1,\n Attributes = 2,\n Privileges = 4,\n Relationships = 8,\n All = 15,\n}\n","/**\n * EntityKeyIndexStatus\n */\nexport enum EntityKeyIndexStatus {\n Pending = 0,\n InProgress = 1,\n Active = 2,\n Failed = 3,\n}\n","/**\n * ErrorType\n */\nexport enum ErrorType {\n Error = 1,\n Warning = 2,\n}\n","/**\n * ImeMode\n */\nexport enum ImeMode {\n Auto = 0,\n Inactive = 1,\n Active = 2,\n Disabled = 3,\n}\n","/**\n * ImportDecision\n */\nexport enum ImportDecision {\n Import = 0,\n Skip = 1,\n}\n","/**\n * IntegerFormat\n */\nexport enum IntegerFormat {\n None = 0,\n Duration = 1,\n TimeZone = 2,\n Language = 3,\n Locale = 4,\n}\n","/**\n * JoinOperator\n */\nexport enum JoinOperator {\n Inner = 0,\n LeftOuter = 1,\n Natural = 2,\n MatchFirstRowUsingCrossApply = 3,\n In = 4,\n Exists = 5,\n Any = 6,\n NotAny = 7,\n All = 8,\n NotAll = 9,\n}\n","/**\n * LayerDesiredOrderType\n */\nexport enum LayerDesiredOrderType {\n Below = 0,\n Above = 1,\n Base = 2,\n}\n","/**\n * LogicalOperator\n */\nexport enum LogicalOperator {\n And = 0,\n Or = 1,\n}\n","/**\n * LookupFormat\n */\nexport enum LookupFormat {\n None = 0,\n Connection = 1,\n Regarding = 2,\n Text = 3,\n}\n","/**\n * ManagedPropertyEvaluationPriority\n */\nexport enum ManagedPropertyEvaluationPriority {\n None = 0,\n Low = 1,\n Normal = 2,\n High = 3,\n Essential = 4,\n}\n","/**\n * ManagedPropertyOperation\n */\nexport enum ManagedPropertyOperation {\n None = 0,\n Create = 1,\n Update = 2,\n CreateUpdate = 3,\n Delete = 4,\n UpdateDelete = 6,\n All = 7,\n}\n","/**\n * ManagedPropertyType\n */\nexport enum ManagedPropertyType {\n Operation = 0,\n Attribute = 1,\n CustomEvaluator = 2,\n Custom = 3,\n}\n","/**\n * MetadataConditionOperator\n */\nexport enum MetadataConditionOperator {\n Equals = 0,\n NotEquals = 1,\n In = 2,\n NotIn = 3,\n GreaterThan = 4,\n LessThan = 5,\n}\n","/**\n * MissingPackageResolutionAction\n */\nexport enum MissingPackageResolutionAction {\n Install = 0,\n Update = 1,\n Ignore = 2,\n}\n","/**\n * OptionSetType\n */\nexport enum OptionSetType {\n Picklist = 0,\n State = 1,\n Status = 2,\n Boolean = 3,\n}\n","/**\n * OrderType\n */\nexport enum OrderType {\n Ascending = 0,\n Descending = 1,\n}\n","/**\n * OrganizationState\n */\nexport enum OrganizationState {\n Enabled = 0,\n Disabled = 1,\n}\n","/**\n * OrganizationType\n */\nexport enum OrganizationType {\n Customer = 0,\n Monitoring = 1,\n Support = 2,\n BackEnd = 3,\n Secondary = 4,\n CustomerTest = 5,\n CustomerFreeTest = 6,\n CustomerPreview = 7,\n Placeholder = 8,\n TestDrive = 9,\n MsftInvestigation = 10,\n EmailTrial = 11,\n Default = 12,\n Developer = 13,\n Trial = 14,\n Teams = 15,\n Platform = 16,\n}\n","/**\n * OwnershipTypes\n */\nexport enum OwnershipTypes {\n None = 0,\n UserOwned = 1,\n TeamOwned = 2,\n BusinessOwned = 4,\n OrganizationOwned = 8,\n BusinessParented = 16,\n Filtered = 32,\n}\n","/**\n * PresentInOrg\n */\nexport enum PresentInOrg {\n False = 0,\n True = 1,\n Unknown = 2,\n}\n","/**\n * PrivilegeDepth\n */\nexport enum PrivilegeDepth {\n Basic = 0,\n Local = 1,\n Deep = 2,\n Global = 3,\n RecordFilter = 4,\n}\n","/**\n * PrivilegeType\n */\nexport enum PrivilegeType {\n None = 0,\n Create = 1,\n Read = 2,\n Write = 3,\n Delete = 4,\n Assign = 5,\n Share = 6,\n Append = 7,\n AppendTo = 8,\n}\n","/**\n * PropagationOwnershipOptions\n */\nexport enum PropagationOwnershipOptions {\n None = 0,\n Caller = 1,\n ListMemberOwner = 2,\n}\n","/**\n * ProvisionLanguageForUserStatusType\n */\nexport enum ProvisionLanguageForUserStatusType {\n Queued = 0,\n Completed = 1,\n Skipped = 2,\n}\n","/**\n * RecentlyViewedRecordType\n */\nexport enum RecentlyViewedRecordType {\n Entity = 0,\n Grid = 1,\n Isv = 2,\n Invalid = -1,\n}\n","/**\n * RelationshipType\n */\nexport enum RelationshipType {\n OneToManyRelationship = 0,\n ManyToManyRelationship = 1,\n}\n","/**\n * ResultCode\n */\nexport enum ResultCode {\n Successful = 0,\n Failed = 1,\n Skipped = 2,\n}\n","/**\n * RibbonLocationFilters\n */\nexport enum RibbonLocationFilters {\n Form = 1,\n HomepageGrid = 2,\n SubGrid = 4,\n All = 7,\n}\n","/**\n * RollupType\n */\nexport enum RollupType {\n None = 0,\n Related = 1,\n Extended = 2,\n}\n","/**\n * SearchDirection\n */\nexport enum SearchDirection {\n Forward = 0,\n Backward = 1,\n}\n","/**\n * SecurityTypes\n */\nexport enum SecurityTypes {\n None = 0,\n Append = 1,\n ParentChild = 2,\n Pointer = 4,\n Inheritance = 8,\n}\n","/**\n * ShareAccessRights\n */\nexport enum ShareAccessRights {\n None = 0,\n ReadAccess = 1,\n WriteAccess = 2,\n AppendAccess = 4,\n AppendToAccess = 16,\n CreateAccess = 32,\n DeleteAccess = 65536,\n ShareAccess = 262144,\n AssignAccess = 524288,\n}\n","/**\n * SolutionOperationStatus\n */\nexport enum SolutionOperationStatus {\n Failed = 0,\n Passed = 1,\n}\n","/**\n * SolutionOperationType\n */\nexport enum SolutionOperationType {\n Import = 0,\n}\n","/**\n * SolutionValidationResultType\n */\nexport enum SolutionValidationResultType {\n Info = 0,\n Warning = 1,\n Error = 2,\n}\n","/**\n * StageSolutionStatus\n */\nexport enum StageSolutionStatus {\n Failed = 0,\n Passed = 1,\n}\n","/**\n * StringFormat\n */\nexport enum StringFormat {\n Email = 0,\n Text = 1,\n TextArea = 2,\n Url = 3,\n TickerSymbol = 4,\n PhoneticGuide = 5,\n VersionNumber = 6,\n Phone = 7,\n Json = 8,\n RichText = 9,\n}\n","/**\n * SubCode\n */\nexport enum SubCode {\n Unspecified = 0,\n Schedulable = 1,\n Committed = 2,\n Uncommitted = 3,\n Break = 4,\n Holiday = 5,\n Vacation = 6,\n Appointment = 7,\n ResourceStartTime = 8,\n ResourceServiceRestriction = 9,\n ResourceCapacity = 10,\n ServiceRestriction = 11,\n ServiceCost = 12,\n}\n","/**\n * SubstitutionStatus\n */\nexport enum SubstitutionStatus {\n Success = 0,\n Error = 1,\n Warning = 2,\n}\n","/**\n * TargetFieldType\n */\nexport enum TargetFieldType {\n All = 0,\n ValidForCreate = 1,\n ValidForUpdate = 2,\n ValidForRead = 3,\n}\n","/**\n * TimeCode\n */\nexport enum TimeCode {\n Available = 0,\n Busy = 1,\n Unavailable = 2,\n Filter = 3,\n}\n","/**\n * ValidateSolutionStatus\n */\nexport enum ValidateSolutionStatus {\n Failed = 0,\n Passed = 1,\n}\n","/**\n * XrmAggregateType\n */\nexport enum XrmAggregateType {\n None = 0,\n Count = 1,\n CountColumn = 2,\n Sum = 3,\n Avg = 4,\n Min = 5,\n Max = 6,\n}\n","/**\n * XrmDateTimeGrouping\n */\nexport enum XrmDateTimeGrouping {\n None = 0,\n Day = 1,\n Week = 2,\n Month = 3,\n Quarter = 4,\n Year = 5,\n FiscalPeriod = 6,\n FiscalYear = 7,\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/MetadataClient.ts","../src/builders.ts","../src/types/AssociatedMenuBehavior.ts","../src/types/AssociatedMenuGroup.ts","../src/types/AttributeRequiredLevel.ts","../src/types/AttributeTypeCode.ts","../src/types/CascadeType.ts","../src/types/DateTimeFormat.ts","../src/types/DeletedMetadataFilters.ts","../src/types/EntityClusterMode.ts","../src/types/EntityKeyIndexStatus.ts","../src/types/ImeMode.ts","../src/types/IntegerFormat.ts","../src/types/LogicalOperator.ts","../src/types/LookupFormat.ts","../src/types/ManagedPropertyEvaluationPriority.ts","../src/types/ManagedPropertyOperation.ts","../src/types/ManagedPropertyType.ts","../src/types/MetadataConditionOperator.ts","../src/types/OptionSetType.ts","../src/types/OwnershipTypes.ts","../src/types/PrivilegeType.ts","../src/types/RelationshipType.ts","../src/types/SecurityTypes.ts","../src/types/StringFormat.ts"],"names":["entity","GUID","DataverseInvalidRequestError"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Metadata client for managing Dataverse metadata (entities, attributes, relationships)\n */\n\nimport {\n DataverseInvalidRequestError,\n odataKey,\n odataLiteral,\n parseODataError,\n} from \"@mohsinonxrm/dataverse-sdk-core\";\nimport type { DataverseClient, DataverseRequestBuilder } from \"@mohsinonxrm/dataverse-sdk-core\";\nimport type {\n BigIntAttributeMetadata,\n BooleanAttributeMetadata,\n DateTimeAttributeMetadata,\n DecimalAttributeMetadata,\n DoubleAttributeMetadata,\n EntityNameAttributeMetadata,\n EnumAttributeMetadata,\n FileAttributeMetadata,\n ImageAttributeMetadata,\n IntegerAttributeMetadata,\n LookupAttributeMetadata,\n ManagedPropertyAttributeMetadata,\n MemoAttributeMetadata,\n MoneyAttributeMetadata,\n MultiSelectPicklistAttributeMetadata,\n PicklistAttributeMetadata,\n StateAttributeMetadata,\n StatusAttributeMetadata,\n StringAttributeMetadata,\n UniqueIdentifierAttributeMetadata,\n} from \"./types/index.js\";\nimport type {\n EntityMetadata,\n EntityMetadataCreate,\n EntityMetadataUpdate,\n EntityMetadataChanges,\n AttributeMetadata,\n AttributeMetadataChanges,\n AttributeMetadataCreateTypes,\n AttributeMetadataUpdateTypes,\n OneToManyRelationshipMetadata,\n ManyToManyRelationshipMetadata,\n OneToManyRelationshipMetadataCreate,\n OneToManyRelationshipMetadataUpdate,\n ManyToManyRelationshipMetadataCreate,\n ManyToManyRelationshipMetadataUpdate,\n RelationshipMetadataChanges,\n OptionSetMetadata,\n OptionSetMetadataChanges,\n OptionSetMetadataCreate,\n OptionSetMetadataUpdate,\n InsertOptionValueParams,\n InsertOptionValueResponse,\n UpdateOptionValueParams,\n DeleteOptionValueParams,\n OrderOptionParams,\n InsertStatusValueParams,\n InsertStatusValueResponse,\n CreateCustomerRelationshipsParams,\n CreateCustomerRelationshipsResponse,\n CreatePolymorphicLookupAttributeParams,\n CreatePolymorphicLookupAttributeResponse,\n CanBeReferencedResponse,\n CanBeReferencingResponse,\n CanManyToManyResponse,\n GetValidReferencingEntitiesResponse,\n GetValidReferencedEntitiesResponse,\n GetValidManyToManyResponse,\n EntityQueryExpression,\n RetrieveMetadataChangesResponse,\n} from \"./types/index.js\";\n\n/**\n * Query options for retrieving metadata\n */\nexport interface MetadataQueryOptions {\n /** `$select`: the properties to return. */\n select?: string[];\n /** `$filter` expression. */\n filter?: string;\n /** `$expand`: one or more navigation properties, with nested options inline, e.g. `\"OptionSet($select=Options)\"`. */\n expand?: string | string[];\n /**\n * `LabelLanguages`: return labels in these languages (LCIDs, e.g. `1033`) instead of only the\n * caller's language. Applies to every `Label` in the response.\n */\n labelLanguages?: number | number[];\n}\n\n/** Options of `getRelationshipByMetadataId`: the query options, and the kind to read it as. */\nexport interface RelationshipQueryOptions extends Omit<MetadataQueryOptions, \"filter\"> {\n /**\n * Read the relationship as this kind, so its own properties can be selected\n * (`/RelationshipDefinitions(id)/Microsoft.Dynamics.CRM.<cast>`).\n */\n cast?: \"OneToManyRelationshipMetadata\" | \"ManyToManyRelationshipMetadata\";\n}\n\n/**\n * The attribute types `getAttributeDefinitions` and `getAttributeDefinition` can cast to, and\n * the metadata type each one returns.\n */\nexport interface AttributeMetadataByCast {\n BigIntAttributeMetadata: BigIntAttributeMetadata;\n BooleanAttributeMetadata: BooleanAttributeMetadata;\n DateTimeAttributeMetadata: DateTimeAttributeMetadata;\n DecimalAttributeMetadata: DecimalAttributeMetadata;\n DoubleAttributeMetadata: DoubleAttributeMetadata;\n EntityNameAttributeMetadata: EntityNameAttributeMetadata;\n EnumAttributeMetadata: EnumAttributeMetadata;\n FileAttributeMetadata: FileAttributeMetadata;\n ImageAttributeMetadata: ImageAttributeMetadata;\n IntegerAttributeMetadata: IntegerAttributeMetadata;\n LookupAttributeMetadata: LookupAttributeMetadata;\n ManagedPropertyAttributeMetadata: ManagedPropertyAttributeMetadata;\n MemoAttributeMetadata: MemoAttributeMetadata;\n MoneyAttributeMetadata: MoneyAttributeMetadata;\n MultiSelectPicklistAttributeMetadata: MultiSelectPicklistAttributeMetadata;\n PicklistAttributeMetadata: PicklistAttributeMetadata;\n StateAttributeMetadata: StateAttributeMetadata;\n StatusAttributeMetadata: StatusAttributeMetadata;\n StringAttributeMetadata: StringAttributeMetadata;\n UniqueIdentifierAttributeMetadata: UniqueIdentifierAttributeMetadata;\n}\n\n/** An attribute type to cast to, e.g. `\"PicklistAttributeMetadata\"`. */\nexport type AttributeMetadataCast = keyof AttributeMetadataByCast;\n\n/**\n * Query options for attribute definitions.\n */\nexport interface AttributeQueryOptions extends MetadataQueryOptions {\n /**\n * Read only attributes of this type, through the `Microsoft.Dynamics.CRM.<cast>` path segment.\n * Needed to select or expand type-specific properties such as `OptionSet`, `Targets` or\n * `MaxLength`.\n */\n cast?: AttributeMetadataCast;\n}\n\n/**\n * Options for metadata creates and updates.\n */\nexport interface MetadataWriteOptions {\n /**\n * Unique name of an unmanaged solution to add the created or changed component to. Sent as\n * the `MSCRM.SolutionUniqueName` header. Without it, the change goes to the default solution.\n */\n solutionUniqueName?: string;\n}\n\n/**\n * Client for interacting with Dataverse metadata API\n */\nexport class MetadataClient {\n private readonly client: DataverseClient;\n private entitySetNames: Map<string, string> | undefined;\n private entitySetNamesLoad: Promise<Map<string, string>> | undefined;\n\n constructor(client: DataverseClient) {\n this.client = client;\n }\n\n // ==================== Entity Definitions ====================\n\n /**\n * Retrieve all entity definitions\n * @param options Query options (select, filter, expand)\n * @returns Array of entity metadata\n * @example\n * ```typescript\n * const entities = await metadataClient.getEntityDefinitions({\n * select: ['LogicalName', 'DisplayName', 'SchemaName'],\n * filter: \"IsCustomEntity eq true\"\n * });\n * ```\n */\n async getEntityDefinitions(options?: MetadataQueryOptions): Promise<EntityMetadata[]> {\n const response = await this.query(\"/EntityDefinitions\", options).get<{\n value: EntityMetadata[];\n }>();\n return response.value;\n }\n\n /**\n * Retrieve a single entity definition by logical name\n * @param logicalName Entity logical name\n * @param options Query options (select, expand)\n * @returns Entity metadata\n * @example\n * ```typescript\n * const accountEntity = await metadataClient.getEntityDefinition('account', {\n * expand: 'Attributes'\n * });\n * ```\n */\n async getEntityDefinition(\n logicalName: string,\n options?: Omit<MetadataQueryOptions, \"filter\">\n ): Promise<EntityMetadata> {\n return await this.query(\n `/EntityDefinitions(${odataKey({ LogicalName: logicalName })})`,\n options\n ).get<EntityMetadata>();\n }\n\n /**\n * The entity set name of a table, e.g. `\"accounts\"` for `\"account\"`, from metadata.\n *\n * The first call reads `EntityDefinitions?$select=LogicalName,EntitySetName` once and caches\n * the whole map on this `MetadataClient`; a table missing from the cache (created later) is\n * looked up on its own and added. Use {@link clearEntitySetNameCache} after renaming or\n * deleting tables.\n * @param logicalName Entity logical name\n * @returns The entity set name used in Web API URLs\n * @example\n * ```typescript\n * const set = await metadataClient.getEntitySetName(\"account\"); // \"accounts\"\n * await client.api(`${set}(${id})`).get();\n * ```\n */\n async getEntitySetName(logicalName: string): Promise<string> {\n const name = logicalName.toLowerCase();\n const cached = (await this.loadEntitySetNames()).get(name);\n if (cached) return cached;\n\n const def = await this.getEntityDefinition(name, { select: [\"LogicalName\", \"EntitySetName\"] });\n if (!def.EntitySetName) {\n throw DataverseInvalidRequestError.invalidParameter(\n \"logicalName\",\n `table '${logicalName}' has no entity set name`\n );\n }\n this.entitySetNames?.set(name, def.EntitySetName);\n return def.EntitySetName;\n }\n\n /** Forget the entity set names cached by {@link getEntitySetName}. */\n clearEntitySetNameCache(): void {\n this.entitySetNamesLoad = undefined;\n this.entitySetNames = undefined;\n }\n\n /**\n * Create a new entity definition (a table).\n *\n * A table create needs `SchemaName`, `DisplayName`, `DisplayCollectionName`, `OwnershipType`,\n * `IsActivity`, `HasActivities` and `HasNotes`, and its primary name column: a text column with\n * `IsPrimaryName: true`, first in `Attributes`. Other columns may follow it; lookups are created\n * with their relationship ({@link createOneToManyRelationship}) once the table exists.\n * @param entity Entity metadata to create\n * @param options Solution to add the new component to\n * @returns Metadata ID of the created entity (GUID), read from the `OData-EntityId` response header\n * @example\n * ```typescript\n * const metadataId = await metadataClient.createEntityDefinition({\n * \"@odata.type\": \"Microsoft.Dynamics.CRM.EntityMetadata\",\n * SchemaName: \"new_CustomEntity\",\n * DisplayName: { LocalizedLabels: [{ Label: \"Custom Entity\", LanguageCode: 1033 }] },\n * DisplayCollectionName: { LocalizedLabels: [{ Label: \"Custom Entities\", LanguageCode: 1033 }] },\n * Description: { LocalizedLabels: [{ Label: \"A custom table\", LanguageCode: 1033 }] },\n * OwnershipType: \"UserOwned\",\n * IsActivity: false,\n * HasActivities: true,\n * HasNotes: false,\n * Attributes: [\n * {\n * \"@odata.type\": \"Microsoft.Dynamics.CRM.StringAttributeMetadata\",\n * SchemaName: \"new_Name\",\n * DisplayName: { LocalizedLabels: [{ Label: \"Name\", LanguageCode: 1033 }] },\n * RequiredLevel: { Value: \"ApplicationRequired\" },\n * MaxLength: 100,\n * IsPrimaryName: true,\n * },\n * ],\n * });\n * ```\n */\n async createEntityDefinition(\n entity: EntityMetadataCreate,\n options?: MetadataWriteOptions\n ): Promise<string> {\n return this.createDefinition(\"/EntityDefinitions\", entity, options);\n }\n\n /**\n * Update an existing entity definition.\n *\n * Metadata updates use `PUT`, which **replaces** the definition: a property you leave out is\n * reset to its default. Send the complete definition, with its `@odata.type` (retrieve it,\n * change it, send it back), or use {@link mergeAndUpdateEntityDefinition}, which does that for\n * you. Labels are merged (`MSCRM.MergeLabels: true`), so labels in other languages are kept.\n * @param logicalName Entity logical name\n * @param entity The complete entity definition\n * @param options Solution to add the change to\n * @example\n * ```typescript\n * const current = await metadataClient.getEntityDefinition(\"new_project\");\n * await metadataClient.updateEntityDefinition(\"new_project\", {\n * ...current,\n * \"@odata.type\": \"Microsoft.Dynamics.CRM.EntityMetadata\",\n * HasNotes: true,\n * });\n * ```\n */\n async updateEntityDefinition(\n logicalName: string,\n entity: EntityMetadataUpdate,\n options?: MetadataWriteOptions\n ): Promise<void> {\n await this.updateDefinition(\n `/EntityDefinitions(${odataKey({ LogicalName: logicalName })})`,\n entity,\n options\n );\n }\n\n /**\n * Retrieve an entity definition, apply `changes` to it, and `PUT` the result back, so the\n * properties you don't change keep their current values.\n *\n * The retrieve sends `Consistency: Strong`, so it reads the latest definition rather than a\n * cached copy (up to ~30 seconds old) that would undo a recent change.\n * @param logicalName Entity logical name\n * @param changes The properties to change\n * @param options Solution to add the change to\n * @example\n * ```typescript\n * await metadataClient.mergeAndUpdateEntityDefinition(\"new_project\", {\n * Description: {\n * LocalizedLabels: [{ Label: \"Tracks projects\", LanguageCode: 1033 }],\n * },\n * });\n * ```\n */\n async mergeAndUpdateEntityDefinition(\n logicalName: string,\n changes: EntityMetadataChanges,\n options?: MetadataWriteOptions\n ): Promise<void> {\n const path = `/EntityDefinitions(${odataKey({ LogicalName: logicalName })})`;\n await this.mergeAndUpdate(\n path,\n path,\n \"Microsoft.Dynamics.CRM.EntityMetadata\",\n changes,\n options\n );\n }\n\n /**\n * Delete an entity definition\n * @param logicalName Entity logical name\n */\n async deleteEntityDefinition(logicalName: string): Promise<void> {\n await this.client\n .api(`/EntityDefinitions(${odataKey({ LogicalName: logicalName })})`)\n .delete<undefined>();\n }\n\n // ==================== Attribute Definitions ====================\n\n /**\n * Retrieve the attributes of an entity.\n *\n * With `cast`, only attributes of that type are returned, typed accordingly, and `select` and\n * `expand` can use the type's own properties, e.g. `OptionSet` on a picklist or `Targets` on\n * a lookup. Without the cast, Dataverse rejects those (`0x80060888`).\n * @param entityLogicalName Entity logical name\n * @param options Query options (cast, select, filter, expand, labelLanguages)\n * @returns Array of attribute metadata\n * @example\n * ```typescript\n * // GET EntityDefinitions(LogicalName='account')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata\n * // ?LabelLanguages=1033&$select=LogicalName&$expand=OptionSet($select=Options),GlobalOptionSet($select=Options)\n * const picklists = await metadataClient.getAttributeDefinitions(\"account\", {\n * cast: \"PicklistAttributeMetadata\",\n * select: [\"LogicalName\"],\n * expand: [\"OptionSet($select=Options)\", \"GlobalOptionSet($select=Options)\"],\n * labelLanguages: 1033,\n * });\n * picklists[0].OptionSet?.Options; // typed as PicklistAttributeMetadata\n * ```\n */\n async getAttributeDefinitions<C extends AttributeMetadataCast>(\n entityLogicalName: string,\n options: AttributeQueryOptions & { cast: C }\n ): Promise<Array<AttributeMetadataByCast[C]>>;\n async getAttributeDefinitions(\n entityLogicalName: string,\n options?: AttributeQueryOptions\n ): Promise<AttributeMetadata[]>;\n async getAttributeDefinitions(\n entityLogicalName: string,\n options?: AttributeQueryOptions\n ): Promise<AttributeMetadata[]> {\n const path = `/EntityDefinitions(${odataKey({ LogicalName: entityLogicalName })})/Attributes${castSegment(options?.cast)}`;\n const response = await this.query(path, options).get<{ value: AttributeMetadata[] }>();\n return response.value;\n }\n\n /**\n * Retrieve a single attribute definition.\n *\n * With `cast`, the attribute is read as that type, so `select` and `expand` can use the type's\n * own properties. Dataverse answers 404 if the attribute is of another type.\n * @param entityLogicalName Entity logical name\n * @param attributeLogicalName Attribute logical name\n * @param options Query options (cast, select, expand, labelLanguages)\n * @returns Attribute metadata\n * @example\n * ```typescript\n * const industry = await metadataClient.getAttributeDefinition(\"account\", \"industrycode\", {\n * cast: \"PicklistAttributeMetadata\",\n * expand: \"OptionSet\",\n * });\n * ```\n */\n async getAttributeDefinition<C extends AttributeMetadataCast>(\n entityLogicalName: string,\n attributeLogicalName: string,\n options: Omit<AttributeQueryOptions, \"filter\"> & { cast: C }\n ): Promise<AttributeMetadataByCast[C]>;\n async getAttributeDefinition(\n entityLogicalName: string,\n attributeLogicalName: string,\n options?: Omit<AttributeQueryOptions, \"filter\">\n ): Promise<AttributeMetadata>;\n async getAttributeDefinition(\n entityLogicalName: string,\n attributeLogicalName: string,\n options?: Omit<AttributeQueryOptions, \"filter\">\n ): Promise<AttributeMetadata> {\n const path = `/EntityDefinitions(${odataKey({ LogicalName: entityLogicalName })})/Attributes(${odataKey({ LogicalName: attributeLogicalName })})${castSegment(options?.cast)}`;\n return await this.query(path, options).get<AttributeMetadata>();\n }\n\n /**\n * Create a new attribute definition. A lookup column is not created here: create it with its\n * relationship, as the `Lookup` of {@link createOneToManyRelationship}.\n * @param entityLogicalName Entity logical name\n * @param attribute Attribute metadata to create\n * @param options Solution to add the new component to\n * @returns Metadata ID of the created attribute (GUID), read from the `OData-EntityId` response header\n */\n async createAttributeDefinition(\n entityLogicalName: string,\n attribute: AttributeMetadataCreateTypes,\n options?: MetadataWriteOptions\n ): Promise<string> {\n return this.createDefinition(\n `/EntityDefinitions(${odataKey({ LogicalName: entityLogicalName })})/Attributes`,\n attribute,\n options\n );\n }\n\n /**\n * Update an existing attribute definition.\n *\n * Like every metadata update this is a `PUT`, which **replaces** the definition: send the\n * complete attribute definition, including its `@odata.type`, not just the changed properties\n * (a property you leave out is reset to its default). Retrieve the column cast to its type,\n * change it and send it back, or use {@link mergeAndUpdateAttributeDefinition}.\n * @param entityLogicalName Entity logical name\n * @param attributeLogicalName Attribute logical name\n * @param attribute The complete attribute definition\n * @param options Solution to add the change to\n * @example\n * ```typescript\n * const current = await metadataClient.getAttributeDefinition(\"new_project\", \"new_note\", {\n * cast: \"StringAttributeMetadata\",\n * });\n * await metadataClient.updateAttributeDefinition(\"new_project\", \"new_note\", {\n * ...current,\n * \"@odata.type\": \"Microsoft.Dynamics.CRM.StringAttributeMetadata\",\n * MaxLength: 500,\n * });\n * ```\n */\n async updateAttributeDefinition(\n entityLogicalName: string,\n attributeLogicalName: string,\n attribute: AttributeMetadataUpdateTypes,\n options?: MetadataWriteOptions\n ): Promise<void> {\n await this.updateDefinition(\n attributePath(entityLogicalName, attributeLogicalName),\n attribute,\n options\n );\n }\n\n /**\n * Retrieve an attribute definition, apply `changes` to it, and `PUT` the result back, so the\n * properties you don't change keep their current values.\n *\n * `changes` names the column's `@odata.type`; the retrieve is cast to that type\n * (`…/Attributes(LogicalName='…')/Microsoft.Dynamics.CRM.<Type>`) so it returns the type's own\n * properties, such as `MaxLength`, and Dataverse answers 404 if the column is of another type.\n * The retrieve sends `Consistency: Strong`, so it reads the latest definition rather than a\n * cached copy that would undo a recent change. Options of a choice column are not part of the\n * definition: use {@link insertOptionValue} and the other option actions.\n * @param entityLogicalName Entity logical name\n * @param attributeLogicalName Attribute logical name\n * @param changes The properties to change, with the column's `@odata.type`\n * @param options Solution to add the change to\n * @example\n * ```typescript\n * await metadataClient.mergeAndUpdateAttributeDefinition(\"new_project\", \"new_note\", {\n * \"@odata.type\": \"Microsoft.Dynamics.CRM.StringAttributeMetadata\",\n * DisplayName: { LocalizedLabels: [{ Label: \"Comment\", LanguageCode: 1033 }] },\n * });\n * ```\n */\n async mergeAndUpdateAttributeDefinition(\n entityLogicalName: string,\n attributeLogicalName: string,\n changes: AttributeMetadataChanges,\n options?: MetadataWriteOptions\n ): Promise<void> {\n const path = attributePath(entityLogicalName, attributeLogicalName);\n const type = metadataType(changes);\n await this.mergeAndUpdate(`${path}/${type}`, path, type, changes, options);\n }\n\n /**\n * Delete an attribute definition\n * @param entityLogicalName Entity logical name\n * @param attributeLogicalName Attribute logical name\n */\n async deleteAttributeDefinition(\n entityLogicalName: string,\n attributeLogicalName: string\n ): Promise<void> {\n await this.client\n .api(\n `/EntityDefinitions(${odataKey({ LogicalName: entityLogicalName })})/Attributes(${odataKey({ LogicalName: attributeLogicalName })})`\n )\n .delete<undefined>();\n }\n\n // ==================== Relationship Definitions ====================\n\n /**\n * Create a one-to-many relationship\n * @param relationship Relationship metadata to create\n * @param options Solution to add the new component to\n * @returns Metadata ID of the created relationship (GUID), read from the `OData-EntityId` response header\n */\n async createOneToManyRelationship(\n relationship: OneToManyRelationshipMetadataCreate,\n options?: MetadataWriteOptions\n ): Promise<string> {\n return this.createDefinition(\"/RelationshipDefinitions\", relationship, options);\n }\n\n /**\n * Delete a relationship definition\n * @param metadataId Relationship metadata ID (GUID)\n */\n async deleteRelationship(metadataId: string): Promise<void> {\n await this.client\n .api(`/RelationshipDefinitions(${odataLiteral.guid(metadataId)})`)\n .delete<undefined>();\n }\n\n /**\n * Get one-to-many relationships for an entity\n * @param entityLogicalName Entity logical name\n * @param options Query options\n * @returns Array of one-to-many relationships\n */\n async getOneToManyRelationships(\n entityLogicalName: string,\n options?: MetadataQueryOptions\n ): Promise<OneToManyRelationshipMetadata[]> {\n const response = await this.query(\n `/EntityDefinitions(${odataKey({ LogicalName: entityLogicalName })})/OneToManyRelationships`,\n options\n ).get<{ value: OneToManyRelationshipMetadata[] }>();\n return response.value;\n }\n\n /**\n * Get many-to-one relationships for an entity\n * @param entityLogicalName Entity logical name\n * @param options Query options\n * @returns Array of many-to-one relationships\n */\n async getManyToOneRelationships(\n entityLogicalName: string,\n options?: MetadataQueryOptions\n ): Promise<OneToManyRelationshipMetadata[]> {\n const response = await this.query(\n `/EntityDefinitions(${odataKey({ LogicalName: entityLogicalName })})/ManyToOneRelationships`,\n options\n ).get<{ value: OneToManyRelationshipMetadata[] }>();\n return response.value;\n }\n\n /**\n * Get many-to-many relationships for an entity\n * @param entityLogicalName Entity logical name\n * @param options Query options\n * @returns Array of many-to-many relationships\n */\n async getManyToManyRelationships(\n entityLogicalName: string,\n options?: MetadataQueryOptions\n ): Promise<ManyToManyRelationshipMetadata[]> {\n const response = await this.query(\n `/EntityDefinitions(${odataKey({ LogicalName: entityLogicalName })})/ManyToManyRelationships`,\n options\n ).get<{ value: ManyToManyRelationshipMetadata[] }>();\n return response.value;\n }\n\n /**\n * Get a relationship by schema name\n * @param schemaName Relationship schema name\n * @param options Query options\n * @returns Relationship metadata\n */\n async getRelationshipBySchemaName(\n schemaName: string,\n options?: Omit<MetadataQueryOptions, \"filter\">\n ): Promise<OneToManyRelationshipMetadata | ManyToManyRelationshipMetadata> {\n return await this.query(\n `/RelationshipDefinitions(${odataKey({ SchemaName: schemaName })})`,\n options\n ).get<OneToManyRelationshipMetadata | ManyToManyRelationshipMetadata>();\n }\n\n /**\n * Get a relationship by metadata ID.\n *\n * `RelationshipDefinitions` holds the base type, so properties of one kind of relationship\n * (`ReferencedEntity`, `Entity1LogicalName`, …) can be selected only with a `cast`:\n *\n * ```typescript\n * const rel = await md.getRelationshipByMetadataId(id, {\n * cast: \"OneToManyRelationshipMetadata\",\n * select: [\"SchemaName\", \"ReferencedEntity\", \"ReferencingEntity\"],\n * });\n * ```\n * @param metadataId Relationship metadata ID\n * @param options Query options, and `cast` to read the relationship as one kind\n * @returns Relationship metadata\n */\n async getRelationshipByMetadataId(\n metadataId: string,\n options: Omit<MetadataQueryOptions, \"filter\"> & { cast: \"OneToManyRelationshipMetadata\" }\n ): Promise<OneToManyRelationshipMetadata>;\n async getRelationshipByMetadataId(\n metadataId: string,\n options: Omit<MetadataQueryOptions, \"filter\"> & { cast: \"ManyToManyRelationshipMetadata\" }\n ): Promise<ManyToManyRelationshipMetadata>;\n async getRelationshipByMetadataId(\n metadataId: string,\n options?: RelationshipQueryOptions\n ): Promise<OneToManyRelationshipMetadata | ManyToManyRelationshipMetadata>;\n async getRelationshipByMetadataId(\n metadataId: string,\n options?: RelationshipQueryOptions\n ): Promise<OneToManyRelationshipMetadata | ManyToManyRelationshipMetadata> {\n const { cast, ...query } = options ?? {};\n const path = `/RelationshipDefinitions(${odataLiteral.guid(metadataId)})${cast ? `/Microsoft.Dynamics.CRM.${cast}` : \"\"}`;\n return await this.query(path, query).get<\n OneToManyRelationshipMetadata | ManyToManyRelationshipMetadata\n >();\n }\n\n /**\n * Create a many-to-many relationship\n * @param relationship Relationship metadata to create\n * @param options Solution to add the new component to\n * @returns Metadata ID of the created relationship (GUID), read from the `OData-EntityId` response header\n * @example\n * ```typescript\n * const metadataId = await metadataClient.createManyToManyRelationship({\n * '@odata.type': 'Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata',\n * SchemaName: 'new_account_contact',\n * Entity1LogicalName: 'account',\n * Entity2LogicalName: 'contact',\n * IntersectEntityName: 'new_account_contact'\n * });\n * ```\n */\n async createManyToManyRelationship(\n relationship: ManyToManyRelationshipMetadataCreate,\n options?: MetadataWriteOptions\n ): Promise<string> {\n return this.createDefinition(\"/RelationshipDefinitions\", relationship, options);\n }\n\n /**\n * Update an existing one-to-many relationship.\n * A `PUT` that **replaces** the definition: send the complete relationship definition, with its\n * `@odata.type`, or use {@link mergeAndUpdateRelationship}.\n * @param schemaName Relationship schema name\n * @param relationship The complete relationship definition\n * @param options Solution to add the change to\n */\n async updateOneToManyRelationship(\n schemaName: string,\n relationship: OneToManyRelationshipMetadataUpdate,\n options?: MetadataWriteOptions\n ): Promise<void> {\n await this.updateDefinition(\n `/RelationshipDefinitions(${odataKey({ SchemaName: schemaName })})`,\n relationship,\n options\n );\n }\n\n /**\n * Update an existing many-to-many relationship.\n * A `PUT` that **replaces** the definition: send the complete relationship definition, with its\n * `@odata.type`, or use {@link mergeAndUpdateRelationship}.\n * @param schemaName Relationship schema name\n * @param relationship The complete relationship definition\n * @param options Solution to add the change to\n */\n async updateManyToManyRelationship(\n schemaName: string,\n relationship: ManyToManyRelationshipMetadataUpdate,\n options?: MetadataWriteOptions\n ): Promise<void> {\n await this.updateDefinition(\n `/RelationshipDefinitions(${odataKey({ SchemaName: schemaName })})`,\n relationship,\n options\n );\n }\n\n /**\n * Retrieve a 1:N or N:N relationship definition, apply `changes` to it, and `PUT` the result\n * back, so the properties you don't change keep their current values.\n *\n * `changes` names the relationship's `@odata.type` (`OneToManyRelationshipMetadata` or\n * `ManyToManyRelationshipMetadata`); the retrieve is cast to that type so it returns the type's\n * own properties, such as `CascadeConfiguration`. It sends `Consistency: Strong`, so it reads\n * the latest definition rather than a cached copy that would undo a recent change.\n * @param schemaName Relationship schema name\n * @param changes The properties to change, with the relationship's `@odata.type`\n * @param options Solution to add the change to\n * @example\n * ```typescript\n * await metadataClient.mergeAndUpdateRelationship(\"new_account_project\", {\n * \"@odata.type\": \"Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata\",\n * IsValidForAdvancedFind: false,\n * });\n * ```\n */\n async mergeAndUpdateRelationship(\n schemaName: string,\n changes: RelationshipMetadataChanges,\n options?: MetadataWriteOptions\n ): Promise<void> {\n const path = `/RelationshipDefinitions(${odataKey({ SchemaName: schemaName })})`;\n const type = metadataType(changes);\n await this.mergeAndUpdate(`${path}/${type}`, path, type, changes, options);\n }\n\n /**\n * Delete a relationship by schema name\n * @param schemaName Relationship schema name\n */\n async deleteRelationshipBySchemaName(schemaName: string): Promise<void> {\n await this.client\n .api(`/RelationshipDefinitions(${odataKey({ SchemaName: schemaName })})`)\n .delete<undefined>();\n }\n\n // ==================== Global Option Sets ====================\n\n /**\n * Get all global option sets\n * @param options Query options\n * @returns Array of global option set metadata\n */\n async getGlobalOptionSets(options?: MetadataQueryOptions): Promise<OptionSetMetadata[]> {\n const response = await this.query(\"/GlobalOptionSetDefinitions\", options).get<{\n value: OptionSetMetadata[];\n }>();\n return response.value;\n }\n\n /**\n * Get a global option set by name or metadata ID\n * @param nameOrMetadataId Option set name or metadata ID\n * @param options Query options\n * @returns Option set metadata\n */\n async getGlobalOptionSet(\n nameOrMetadataId: string,\n options?: Omit<MetadataQueryOptions, \"filter\">\n ): Promise<OptionSetMetadata> {\n return await this.query(\n globalOptionSetPath(nameOrMetadataId),\n options\n ).get<OptionSetMetadata>();\n }\n\n /**\n * Create a global option set\n * @param optionSet Option set metadata to create\n * @param options Solution to add the new component to\n * @returns Metadata ID of the created option set (GUID), read from the `OData-EntityId` response header\n * @example\n * ```typescript\n * const metadataId = await metadataClient.createGlobalOptionSet({\n * '@odata.type': 'Microsoft.Dynamics.CRM.OptionSetMetadata',\n * Name: 'new_colors',\n * DisplayName: {\n * LocalizedLabels: [{ Label: 'Colors', LanguageCode: 1033 }]\n * },\n * Options: [\n * { Value: 1, Label: { LocalizedLabels: [{ Label: 'Red', LanguageCode: 1033 }] } },\n * { Value: 2, Label: { LocalizedLabels: [{ Label: 'Blue', LanguageCode: 1033 }] } }\n * ]\n * });\n * ```\n */\n async createGlobalOptionSet(\n optionSet: OptionSetMetadataCreate,\n options?: MetadataWriteOptions\n ): Promise<string> {\n return this.createDefinition(\"/GlobalOptionSetDefinitions\", optionSet, options);\n }\n\n /**\n * Update a global option set.\n * A `PUT` that **replaces** the definition: send the complete option set definition, with its\n * `@odata.type`, or use {@link mergeAndUpdateGlobalOptionSet}. A `PUT` doesn't change the\n * options: to add, change, remove or reorder them, use {@link insertOptionValue},\n * {@link updateOptionValue}, {@link deleteOptionValue} or {@link orderOptions}.\n * @param nameOrMetadataId Option set name or metadata ID\n * @param optionSet The complete option set definition\n * @param options Solution to add the change to\n */\n async updateGlobalOptionSet(\n nameOrMetadataId: string,\n optionSet: OptionSetMetadataUpdate,\n options?: MetadataWriteOptions\n ): Promise<void> {\n await this.updateDefinition(globalOptionSetPath(nameOrMetadataId), optionSet, options);\n }\n\n /**\n * Retrieve a global option set, apply `changes` to it, and `PUT` the result back, so the\n * properties you don't change keep their current values.\n *\n * The retrieve is cast to `OptionSetMetadata` and sends `Consistency: Strong`, so it reads the\n * latest definition rather than a cached copy that would undo a recent change. The options are\n * left out of the `PUT`, which doesn't change them: use {@link insertOptionValue} and the other\n * option actions for that.\n * @param nameOrMetadataId Option set name or metadata ID\n * @param changes The properties to change\n * @param options Solution to add the change to\n * @example\n * ```typescript\n * await metadataClient.mergeAndUpdateGlobalOptionSet(\"new_colors\", {\n * Description: { LocalizedLabels: [{ Label: \"Paint colors\", LanguageCode: 1033 }] },\n * });\n * ```\n */\n async mergeAndUpdateGlobalOptionSet(\n nameOrMetadataId: string,\n changes: OptionSetMetadataChanges,\n options?: MetadataWriteOptions\n ): Promise<void> {\n const path = globalOptionSetPath(nameOrMetadataId);\n const type = \"Microsoft.Dynamics.CRM.OptionSetMetadata\";\n await this.mergeAndUpdate(`${path}/${type}`, path, type, changes, options, [\"Options\"]);\n }\n\n /**\n * Delete a global option set\n * @param nameOrMetadataId Option set name or metadata ID\n */\n async deleteGlobalOptionSet(nameOrMetadataId: string): Promise<void> {\n await this.client.api(globalOptionSetPath(nameOrMetadataId)).delete<undefined>();\n }\n\n // ==================== Option Value Operations ====================\n\n /**\n * Insert an option value into a local or global option set\n * @param params Insert option value parameters\n * @returns New option value\n * @example\n * ```typescript\n * // For local option set\n * const result = await metadataClient.insertOptionValue({\n * EntityLogicalName: 'account',\n * AttributeLogicalName: 'new_category',\n * Label: { LocalizedLabels: [{ Label: 'Enterprise', LanguageCode: 1033 }] },\n * Value: 100000002\n * });\n *\n * // For global option set\n * const result = await metadataClient.insertOptionValue({\n * OptionSetName: 'new_colors',\n * Label: { LocalizedLabels: [{ Label: 'Green', LanguageCode: 1033 }] },\n * Value: 3\n * });\n * ```\n */\n async insertOptionValue(params: InsertOptionValueParams): Promise<InsertOptionValueResponse> {\n checkOptionSetTarget(params);\n return await this.client.api(\"/InsertOptionValue\").post<InsertOptionValueResponse>(params);\n }\n\n /**\n * Update an option value in a local or global option set\n * @param params Update option value parameters: the choice (`OptionSetName`, or\n * `EntityLogicalName` and `AttributeLogicalName`), the option's `Value` and `MergeLabels`\n */\n async updateOptionValue(params: UpdateOptionValueParams): Promise<void> {\n checkOptionSetTarget(params);\n await this.client.api(\"/UpdateOptionValue\").post<undefined>(params);\n }\n\n /**\n * Delete an option value from a local or global option set\n * @param params Delete option value parameters: the choice (`OptionSetName`, or\n * `EntityLogicalName` and `AttributeLogicalName`) and the option's `Value`\n */\n async deleteOptionValue(params: DeleteOptionValueParams): Promise<void> {\n checkOptionSetTarget(params);\n await this.client.api(\"/DeleteOptionValue\").post<undefined>(params);\n }\n\n /**\n * Reorder options in a local or global option set\n * @param params Order option parameters: the choice (`OptionSetName`, or `EntityLogicalName`\n * and `AttributeLogicalName`) and every option value in the new order\n */\n async orderOptions(params: OrderOptionParams): Promise<void> {\n checkOptionSetTarget(params);\n await this.client.api(\"/OrderOption\").post<undefined>(params);\n }\n\n /**\n * Insert a status value (statuscode option). Status reasons belong to a table's `statuscode`\n * column, so the target is always `EntityLogicalName` and `AttributeLogicalName`.\n * @param params Insert status value parameters\n * @returns New option value\n */\n async insertStatusValue(params: InsertStatusValueParams): Promise<InsertStatusValueResponse> {\n checkOptionSetTarget(params, { localOnly: true });\n return await this.client.api(\"/InsertStatusValue\").post<InsertStatusValueResponse>(params);\n }\n\n // ==================== Polymorphic Lookups ====================\n\n /**\n * Create a customer relationship (polymorphic lookup to account and contact)\n * @param params Customer relationship parameters\n * @returns Attribute ID and relationship IDs\n */\n async createCustomerRelationship(\n params: CreateCustomerRelationshipsParams\n ): Promise<CreateCustomerRelationshipsResponse> {\n return await this.client\n .api(\"/CreateCustomerRelationships\")\n .post<CreateCustomerRelationshipsResponse>(params);\n }\n\n /**\n * Create a polymorphic lookup attribute\n * @param params Polymorphic lookup parameters\n * @returns Attribute ID and relationship IDs\n * @example\n * ```typescript\n * const result = await metadataClient.createPolymorphicLookup({\n * Lookup: {\n * '@odata.type': 'Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata',\n * SchemaName: 'new_RegardingObjectId',\n * DisplayName: { LocalizedLabels: [{ Label: 'Regarding', LanguageCode: 1033 }] },\n * Targets: ['account', 'contact', 'lead']\n * },\n * OneToManyRelationships: [\n * // one relationship definition per target entity\n * ]\n * });\n * ```\n */\n async createPolymorphicLookup(\n params: CreatePolymorphicLookupAttributeParams\n ): Promise<CreatePolymorphicLookupAttributeResponse> {\n return await this.client\n .api(\"/CreatePolymorphicLookupAttribute\")\n .post<CreatePolymorphicLookupAttributeResponse>(params);\n }\n\n // ==================== Relationship Eligibility ====================\n\n /**\n * Check if an entity can be the primary (referenced) table in a 1:N relationship.\n * Sends the `CanBeReferenced` action: `POST /CanBeReferenced` with `{ \"EntityName\": … }`.\n * @param entityName Entity logical name\n * @returns Whether the entity can be referenced\n */\n async canBeReferenced(entityName: string): Promise<boolean> {\n const response = await this.client\n .api(\"/CanBeReferenced\")\n .post<CanBeReferencedResponse | undefined>({ EntityName: entityName });\n return response?.CanBeReferenced ?? false;\n }\n\n /**\n * Check if an entity can be the related (referencing) table in a 1:N relationship.\n * Sends the `CanBeReferencing` action: `POST /CanBeReferencing` with `{ \"EntityName\": … }`.\n * @param entityName Entity logical name\n * @returns Whether the entity can be referencing\n */\n async canBeReferencing(entityName: string): Promise<boolean> {\n const response = await this.client\n .api(\"/CanBeReferencing\")\n .post<CanBeReferencingResponse | undefined>({ EntityName: entityName });\n return response?.CanBeReferencing ?? false;\n }\n\n /**\n * Check if an entity can take part in a many-to-many relationship.\n * Sends the `CanManyToMany` action: `POST /CanManyToMany` with `{ \"EntityName\": … }`.\n * @param entityName Entity logical name\n * @returns Whether the entity can participate in N:N\n */\n async canManyToMany(entityName: string): Promise<boolean> {\n const response = await this.client\n .api(\"/CanManyToMany\")\n .post<CanManyToManyResponse | undefined>({ EntityName: entityName });\n return response?.CanManyToMany ?? false;\n }\n\n /**\n * Get entities that can reference the specified entity\n * @param referencedEntityName Referenced entity name\n * @returns Array of entity names that can reference the specified entity\n */\n async getValidReferencingEntities(referencedEntityName: string): Promise<string[]> {\n const response = await this.client\n .api(\n `/GetValidReferencingEntities(${odataKey({ ReferencedEntityName: referencedEntityName })})`\n )\n .get<GetValidReferencingEntitiesResponse>();\n return response.EntityNames ?? [];\n }\n\n /**\n * Get entities that the specified entity can reference\n * @param referencingEntityName Referencing entity name\n * @returns Array of entity names that can be referenced\n */\n async getValidReferencedEntities(referencingEntityName: string): Promise<string[]> {\n const response = await this.client\n .api(\n `/GetValidReferencedEntities(${odataKey({ ReferencingEntityName: referencingEntityName })})`\n )\n .get<GetValidReferencedEntitiesResponse>();\n return response.EntityNames ?? [];\n }\n\n /**\n * Get all entities that can participate in many-to-many relationships\n * @returns Array of entity names\n */\n async getValidManyToMany(): Promise<string[]> {\n const response = await this.client\n .api(\"/GetValidManyToMany()\")\n .get<GetValidManyToManyResponse>();\n return response.EntityNames ?? [];\n }\n\n // ==================== Metadata Change Tracking ====================\n\n /**\n * Retrieve metadata, or the changes to it since an earlier call.\n *\n * `RetrieveMetadataChanges` is a Web API **function**, so this sends a GET with parameter\n * aliases: `GET /RetrieveMetadataChanges(Query=@p1,ClientVersionStamp=@p2,…)?@p1=<json>`.\n * Keep the returned `ServerVersionStamp` and pass it as `clientVersionStamp` next time to get\n * only what changed since then.\n *\n * Dataverse reads the enum members in the query (`FilterOperator`, `ConditionOperator`) only\n * by name (`\"And\"`, `\"Equals\"`), so numeric values are sent as their names. A condition's\n * `Value` is `{ Type, Value }`, e.g. `{ Type: \"System.String\", Value: \"account\" }`.\n *\n * @param query Entity query expression\n * @param clientVersionStamp `ServerVersionStamp` from a previous call\n * @param deletedMetadataFilters With a version stamp, which deleted metadata to return: a\n * member name (`\"Default\"`, `\"Attribute\"`, `\"Relationship\"`, `\"Label\"`, `\"OptionSet\"`,\n * `\"All\"`, or a `DeletedMetadataFilters` member), a comma-separated list of names, or the\n * numeric flag value\n * @returns The matching metadata, any deleted metadata, and the new `ServerVersionStamp`\n * @example\n * ```typescript\n * const query = {\n * Criteria: {\n * FilterOperator: \"And\",\n * Conditions: [\n * {\n * PropertyName: \"LogicalName\",\n * ConditionOperator: \"Equals\",\n * Value: { Type: \"System.String\", Value: \"account\" },\n * },\n * ],\n * },\n * Properties: { AllProperties: false, PropertyNames: [\"LogicalName\", \"SchemaName\"] },\n * };\n * const first = await metadataClient.retrieveMetadataChanges(query);\n * // Later: only what changed since the first call\n * const changes = await metadataClient.retrieveMetadataChanges(query, first.ServerVersionStamp);\n * ```\n */\n async retrieveMetadataChanges(\n query: EntityQueryExpression,\n clientVersionStamp?: string,\n deletedMetadataFilters?: string | number\n ): Promise<RetrieveMetadataChangesResponse> {\n const aliases = [\"Query=@p1\"];\n const values = [`@p1=${encodeURIComponent(JSON.stringify(query, enumNameReplacer))}`];\n\n if (clientVersionStamp) {\n aliases.push(\"ClientVersionStamp=@p2\");\n values.push(`@p2=${encodeURIComponent(odataLiteral.string(clientVersionStamp))}`);\n }\n\n if (deletedMetadataFilters !== undefined) {\n aliases.push(\"DeletedMetadataFilters=@p3\");\n const literal = odataLiteral.enum(\n \"Microsoft.Dynamics.CRM.DeletedMetadataFilters\",\n String(deletedMetadataFilters)\n .split(\",\")\n .map((member) => member.trim())\n );\n values.push(`@p3=${encodeURIComponent(literal)}`);\n }\n\n return await this.client\n .api(`/RetrieveMetadataChanges(${aliases.join(\",\")})?${values.join(\"&\")}`)\n .get<RetrieveMetadataChangesResponse>();\n }\n\n // ==================== Internals ====================\n\n /**\n * POST a metadata definition and return its MetadataId. Dataverse answers a metadata create\n * with `204 No Content` and the new id in the `OData-EntityId` header\n * (`…/EntityDefinitions(<id>)`); a `MetadataId` in a JSON body is the fallback.\n */\n private async createDefinition(\n path: string,\n body: unknown,\n options: MetadataWriteOptions | undefined\n ): Promise<string> {\n const res = await this.writeBuilder(path, options).response(\"POST\", body);\n if (!res.ok) throw await parseODataError(res);\n\n const fromHeader = GUID_AT_END.exec(res.headers.get(\"odata-entityid\") ?? \"\")?.[1];\n if (fromHeader) {\n // Don't await: cancelling a stream that was tee'd (e.g. by logging) can wait forever.\n res.body?.cancel().catch(() => undefined);\n return fromHeader;\n }\n\n const text = res.status === 204 ? \"\" : await res.text();\n const fromBody = text.trim() ? (JSON.parse(text) as { MetadataId?: unknown }).MetadataId : \"\";\n if (typeof fromBody === \"string\" && fromBody) return fromBody;\n\n throw DataverseInvalidRequestError.missingParameter(\"OData-EntityId response header\");\n }\n\n /**\n * Retrieve the definition at `getPath` (with `Consistency: Strong`, so not a cached copy that\n * would undo a recent change), drop its OData annotations and the `omit` properties, apply\n * `changes`, set `@odata.type`, and `PUT` the result to `putPath`.\n */\n private async mergeAndUpdate(\n getPath: string,\n putPath: string,\n odataType: string,\n changes: object,\n options: MetadataWriteOptions | undefined,\n omit: readonly string[] = []\n ): Promise<void> {\n const current = await this.client\n .api(getPath)\n .header(\"Consistency\", \"Strong\")\n .get<Record<string, unknown>>();\n const kept = Object.fromEntries(\n Object.entries(withoutAnnotations(current)).filter(([key]) => !omit.includes(key))\n );\n const merged = { ...kept, ...changes, \"@odata.type\": odataType };\n await this.updateDefinition(putPath, merged, options);\n }\n\n /** PUT a complete metadata definition, merging labels. */\n private async updateDefinition(\n path: string,\n body: unknown,\n options: MetadataWriteOptions | undefined\n ): Promise<void> {\n await this.writeBuilder(path, options).header(\"MSCRM.MergeLabels\", \"true\").put<undefined>(body);\n }\n\n private writeBuilder(path: string, options: MetadataWriteOptions | undefined) {\n const builder = this.client.api(path).header(\"Content-Type\", \"application/json\");\n return options?.solutionUniqueName\n ? builder.header(\"MSCRM.SolutionUniqueName\", options.solutionUniqueName)\n : builder;\n }\n\n // ==================== Internals ====================\n\n /** A GET builder for `path` with the query options applied. */\n private query(path: string, options: MetadataQueryOptions | undefined): DataverseRequestBuilder {\n const languages = options?.labelLanguages === undefined ? [] : [options.labelLanguages].flat();\n // LabelLanguages is a Dataverse query option, not an OData one; the builder has no setter.\n const url = languages.length > 0 ? `${path}?LabelLanguages=${languages.join(\",\")}` : path;\n\n let builder = this.client.api(url);\n if (options?.select?.length) builder = builder.select(...options.select);\n if (options?.filter) builder = builder.filter(options.filter);\n if (options?.expand?.length) builder = builder.expand(...[options.expand].flat());\n return builder;\n }\n\n /** Load every table's entity set name once; a failed load is not cached. */\n private loadEntitySetNames(): Promise<Map<string, string>> {\n this.entitySetNamesLoad ??= this.query(\"/EntityDefinitions\", {\n select: [\"LogicalName\", \"EntitySetName\"],\n })\n .get<{ value: Array<Pick<EntityMetadata, \"LogicalName\" | \"EntitySetName\">> }>()\n .then((response) => {\n const names = new Map<string, string>();\n for (const e of response.value) {\n if (e.LogicalName && e.EntitySetName) names.set(e.LogicalName, e.EntitySetName);\n }\n this.entitySetNames = names;\n return names;\n })\n .catch((err: unknown) => {\n this.entitySetNamesLoad = undefined;\n throw err;\n });\n return this.entitySetNamesLoad;\n }\n}\n\n/**\n * Check that an option-value action names exactly one choice before it is sent: a global choice\n * (`OptionSetName`) or a local one (`EntityLogicalName` and `AttributeLogicalName`). The\n * parameter types already require that; this catches untyped callers and casts. Given both,\n * Dataverse silently changes the global choice and ignores the column.\n */\nfunction checkOptionSetTarget(\n params: { OptionSetName?: unknown; EntityLogicalName?: unknown; AttributeLogicalName?: unknown },\n { localOnly = false }: { localOnly?: boolean } = {}\n): void {\n const global = params.OptionSetName != null;\n const local = params.EntityLogicalName != null || params.AttributeLogicalName != null;\n if (global && (local || localOnly)) {\n throw DataverseInvalidRequestError.invalidParameter(\n \"OptionSetName\",\n localOnly\n ? \"status values belong to a table's statuscode column; pass EntityLogicalName and AttributeLogicalName\"\n : \"pass either OptionSetName (a global choice) or EntityLogicalName and AttributeLogicalName (a local choice), not both\"\n );\n }\n if (global) return;\n if (!local) {\n throw DataverseInvalidRequestError.missingParameter(\n localOnly\n ? \"EntityLogicalName and AttributeLogicalName\"\n : \"OptionSetName, or EntityLogicalName and AttributeLogicalName\"\n );\n }\n if (params.EntityLogicalName == null) {\n throw DataverseInvalidRequestError.missingParameter(\"EntityLogicalName\");\n }\n if (params.AttributeLogicalName == null) {\n throw DataverseInvalidRequestError.missingParameter(\"AttributeLogicalName\");\n }\n}\n\n/** The path of a table's column definition. */\nfunction attributePath(entityLogicalName: string, attributeLogicalName: string): string {\n return `/EntityDefinitions(${odataKey({ LogicalName: entityLogicalName })})/Attributes(${odataKey({ LogicalName: attributeLogicalName })})`;\n}\n\nconst GUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/** The path of a global option set, by MetadataId if it looks like a GUID, otherwise by Name. */\nfunction globalOptionSetPath(nameOrMetadataId: string): string {\n return GUID.test(nameOrMetadataId)\n ? `/GlobalOptionSetDefinitions(${nameOrMetadataId})`\n : `/GlobalOptionSetDefinitions(${odataKey({ Name: nameOrMetadataId })})`;\n}\n\n/**\n * The `@odata.type` of a merge helper's changes, as a cast path segment\n * (`Microsoft.Dynamics.CRM.<Type>`). The types require it; this catches untyped callers.\n */\nfunction metadataType(changes: { \"@odata.type\"?: unknown }): string {\n const type = changes[\"@odata.type\"];\n if (type == null) throw DataverseInvalidRequestError.missingParameter(\"@odata.type\");\n const name = typeof type === \"string\" ? type.replace(/^#/, \"\") : \"\";\n if (!/^Microsoft\\.Dynamics\\.CRM\\.\\w+$/.test(name)) {\n throw DataverseInvalidRequestError.invalidParameter(\n \"@odata.type\",\n `expected \"Microsoft.Dynamics.CRM.<Type>\", got ${JSON.stringify(type)}`\n );\n }\n return name;\n}\n\n/** The type-cast path segment for an attribute query, or `\"\"`. */\nfunction castSegment(cast: AttributeMetadataCast | undefined): string {\n return cast ? `/Microsoft.Dynamics.CRM.${cast}` : \"\";\n}\n\n/** A GUID in parentheses at the end of an `OData-EntityId` URL. */\nconst GUID_AT_END = /\\(([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\)\\s*$/i;\n\n/** A copy of a retrieved definition without its `@odata.*` annotations (context, etag, …). */\nfunction withoutAnnotations(definition: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !key.includes(\"@odata.\")));\n}\n\nconst LOGICAL_OPERATORS = [\"And\", \"Or\"];\nconst CONDITION_OPERATORS = [\"Equals\", \"NotEquals\", \"In\", \"NotIn\", \"GreaterThan\", \"LessThan\"];\n\n/**\n * JSON replacer for metadata queries. Dataverse reads an enum member in a JSON parameter only\n * by name (\"Cannot read the value '0' as a quoted JSON string value\"), so numeric\n * `FilterOperator` and `ConditionOperator` values are written as their member names.\n */\nfunction enumNameReplacer(key: string, value: unknown): unknown {\n if (typeof value !== \"number\") return value;\n if (key === \"FilterOperator\") return LOGICAL_OPERATORS[value] ?? value;\n if (key === \"ConditionOperator\") return CONDITION_OPERATORS[value] ?? value;\n return value;\n}\n","/**\n * Metadata builders (#345): plain functions that return the `*Create` payloads `MetadataClient`\n * takes, with the parts that are easy to get wrong filled in: the `@odata.type`, labels with\n * their `LanguageCode`, `RequiredLevel`, a local choice's `IsGlobal: false`, a global choice's\n * bind path, and Dataverse's defaults for length and precision.\n *\n * Exported as the `Metadata` object (typed `MetadataBuilders`):\n *\n * ```typescript\n * import { Metadata, MetadataClient } from \"@mohsinonxrm/dataverse-sdk-metadata\";\n *\n * await metadata.createAttributeDefinition(\n * \"new_project\",\n * Metadata.string(\"new_Code\", { displayName: \"Code\", maxLength: 20 })\n * );\n * ```\n *\n * Each builder checks its input and throws `DataverseInvalidRequestError` (`InvalidParameter`) for\n * a value Dataverse would reject: a schema name without a customization prefix, a length or\n * precision out of range, a minimum above the maximum, duplicate option values. The result is\n * an ordinary object of the create type; spread it to set a property the builder doesn't take:\n * `{ ...Metadata.string(\"new_Code\", { displayName: \"Code\" }), IsAuditEnabled: { Value: true } }`.\n */\nimport { DataverseInvalidRequestError } from \"@mohsinonxrm/dataverse-sdk-core\";\nimport type {\n AttributeMetadataCreateTypes,\n AttributeRequiredLevel,\n BooleanAttributeMetadataCreate,\n CascadeConfiguration,\n DateTimeAttributeMetadataCreate,\n DecimalAttributeMetadataCreate,\n DoubleAttributeMetadataCreate,\n EntityMetadataCreate,\n FileAttributeMetadataCreate,\n ImageAttributeMetadataCreate,\n IntegerAttributeMetadataCreate,\n IntegerFormat,\n Label,\n LocalOptionSetMetadataCreate,\n ManyToManyRelationshipMetadataCreate,\n MemoAttributeMetadataCreate,\n MoneyAttributeMetadataCreate,\n MultiSelectPicklistAttributeMetadataCreate,\n OneToManyRelationshipMetadataCreate,\n OptionMetadataCreate,\n OptionSetMetadataCreate,\n PicklistAttributeMetadataCreate,\n PrimaryNameAttributeMetadataCreate,\n StringAttributeMetadataCreate,\n StringFormat,\n} from \"./types/index.js\";\n\n// ==================== Inputs ====================\n\n/** A label: its text in one language, or a complete `Label`. */\nexport type LabelInput = string | Label;\n\n/**\n * The texts of a label by language, e.g. `{ 1033: \"Name\", 1036: \"Nom\" }`. Each key is a\n * language's LCID.\n */\nexport type LabelTexts = Readonly<Record<number, string>>;\n\n/**\n * The requirement levels a custom column can have. `SystemRequired` is for columns Dataverse\n * owns, and a create with it is rejected.\n */\nexport type ColumnRequiredLevel = Exclude<AttributeRequiredLevel, \"SystemRequired\">;\n\n/** What every builder that takes a label as text can be told about its language. */\nexport interface LabelLanguageOptions {\n /**\n * The language (LCID) of the labels given as text. Default `1033` (English). Dataverse needs a\n * label in the organization's base language, so pass yours if it isn't English.\n */\n languageCode?: number;\n}\n\n/** The options every column builder takes. */\nexport interface ColumnOptions extends LabelLanguageOptions {\n /** The column's display name. */\n displayName: LabelInput;\n /** The column's description. */\n description?: LabelInput;\n /** Whether a value is required. Default `\"None\"`. */\n requiredLevel?: ColumnRequiredLevel;\n}\n\n/** Options of a text column (`Metadata.string`). */\nexport interface StringColumnOptions extends ColumnOptions {\n /** The maximum length, 1 to 4,000. Default 100. */\n maxLength?: number;\n /** How the text is shown and checked, sent as `FormatName`. Default `\"Text\"`. */\n format?: StringFormat;\n}\n\n/** Options of a table's primary name column (`Metadata.primaryName`). */\nexport interface PrimaryNameColumnOptions extends ColumnOptions {\n /**\n * The maximum length, 1 to 4,000. Default 100. Dataverse may not keep it when it creates the\n * table: a live org gave the primary name column 850 whatever was sent. Read the column back,\n * and change its length with `mergeAndUpdateAttributeDefinition` if it matters.\n */\n maxLength?: number;\n}\n\n/** Options of a multiline text column (`Metadata.memo`). */\nexport interface MemoColumnOptions extends ColumnOptions {\n /** The maximum length, 1 to 1,048,576. Default 2,000. */\n maxLength?: number;\n}\n\n/** Options of a whole number column (`Metadata.integer`). */\nexport interface IntegerColumnOptions extends ColumnOptions {\n /** The smallest value, from -2,147,483,648. */\n minValue?: number;\n /** The largest value, up to 2,147,483,647. */\n maxValue?: number;\n /** What the number means (`\"Duration\"`, `\"TimeZone\"`, `\"Language\"`, …). Default `\"None\"`. */\n format?: IntegerFormat;\n}\n\n/** Options of a decimal number column (`Metadata.decimal`). */\nexport interface DecimalColumnOptions extends ColumnOptions {\n /** Decimal places, 0 to 10. Default 2. */\n precision?: number;\n /** The smallest value, from -100,000,000,000. */\n minValue?: number;\n /** The largest value, up to 100,000,000,000. */\n maxValue?: number;\n}\n\n/** Options of a floating point number column (`Metadata.double`). */\nexport interface DoubleColumnOptions extends ColumnOptions {\n /** Decimal places, 0 to 5. Default 2. */\n precision?: number;\n /** The smallest value, from -100,000,000,000. */\n minValue?: number;\n /** The largest value, up to 100,000,000,000. */\n maxValue?: number;\n}\n\n/** Options of a currency column (`Metadata.money`). */\nexport interface MoneyColumnOptions extends ColumnOptions {\n /**\n * Decimal places: a number from 0 to 4, `\"currency\"` for the precision of the record's currency,\n * or `\"pricing\"` for the organization's pricing precision. Sent as `PrecisionSource` (and\n * `Precision` for a number). Default `\"currency\"`.\n */\n precision?: number | \"currency\" | \"pricing\";\n /** The smallest value, from -922,337,203,685,477. */\n minValue?: number;\n /** The largest value, up to 922,337,203,685,477. */\n maxValue?: number;\n}\n\n/** Options of a date and time column (`Metadata.dateTime`) that stores a time. */\nexport interface DateAndTimeColumnOptions extends ColumnOptions {\n /** A date and a time. The default. */\n format?: \"DateAndTime\";\n /**\n * How the value is stored: `\"UserLocal\"` (converted to UTC, the default) or\n * `\"TimeZoneIndependent\"` (stored as entered).\n */\n behavior?: \"UserLocal\" | \"TimeZoneIndependent\";\n}\n\n/** Options of a date and time column (`Metadata.dateTime`) that stores only a date. */\nexport interface DateOnlyColumnOptions extends ColumnOptions {\n /** A date, no time. */\n format: \"DateOnly\";\n /**\n * How the value is stored: `\"UserLocal\"` (the default), `\"DateOnly\"` (a date with no time zone)\n * or `\"TimeZoneIndependent\"`.\n */\n behavior?: \"UserLocal\" | \"DateOnly\" | \"TimeZoneIndependent\";\n}\n\n/**\n * Options of a date and time column (`Metadata.dateTime`). The `\"DateOnly\"` behavior needs the\n * `\"DateOnly\"` format.\n */\nexport type DateTimeColumnOptions = DateAndTimeColumnOptions | DateOnlyColumnOptions;\n\n/** Options of a yes/no column (`Metadata.boolean`). */\nexport interface BooleanColumnOptions extends ColumnOptions {\n /** The label of the yes value (1). Default `\"Yes\"`. */\n trueLabel?: LabelInput;\n /** The label of the no value (0). Default `\"No\"`. */\n falseLabel?: LabelInput;\n /** The value a new record gets. Default `false`. */\n defaultValue?: boolean;\n}\n\n/** An option of a choice. */\nexport interface ChoiceOption {\n /** The option's label. */\n label: LabelInput;\n /**\n * The option's value. Leave it out and Dataverse assigns the next value from the publisher's\n * choice value prefix (e.g. 100000000).\n */\n value?: number;\n /** The option's description. */\n description?: LabelInput;\n /** A color for the option, e.g. `\"#0000ff\"`. */\n color?: string;\n}\n\n/** An option of a choice: its label, or a `ChoiceOption`. */\nexport type ChoiceOptionInput = string | ChoiceOption;\n\n/** A choice column with options of its own (a local choice, created with the column). */\nexport interface LocalChoiceColumnOptions extends ColumnOptions {\n /** The options, at least one. */\n options: readonly ChoiceOptionInput[];\n globalOptionSetId?: never;\n /** The value a new record gets (`DefaultFormValue`). */\n defaultValue?: number;\n}\n\n/** A choice column that uses an existing global choice. */\nexport interface GlobalChoiceColumnOptions extends ColumnOptions {\n /**\n * The global choice's `MetadataId` (what `createGlobalOptionSet` returns, or\n * `getGlobalOptionSet(name, { select: [\"MetadataId\"] })`). Dataverse binds a global choice by\n * id only.\n */\n globalOptionSetId: string;\n options?: never;\n /** The value a new record gets (`DefaultFormValue`). */\n defaultValue?: number;\n}\n\n/**\n * Options of a choice or choices column (`Metadata.picklist`, `Metadata.multiSelectPicklist`):\n * its own `options` or a `globalOptionSetId`, exactly one of the two.\n */\nexport type ChoiceColumnOptions = LocalChoiceColumnOptions | GlobalChoiceColumnOptions;\n\n/** Options of a file column (`Metadata.file`). */\nexport interface FileColumnOptions extends ColumnOptions {\n /** The largest file, in KB: 1 to 10,485,760 (10 GB). Default 32,768 (32 MB). */\n maxSizeInKB?: number;\n}\n\n/** Options of an image column (`Metadata.image`). */\nexport interface ImageColumnOptions extends ColumnOptions {\n /** The largest image, in KB: 1 to 30,720 (30 MB). Default 10,240 (10 MB). */\n maxSizeInKB?: number;\n /** Keep the full-size image as well as the thumbnail. Default `false`. */\n canStoreFullImage?: boolean;\n}\n\n/** Options of a lookup column and the 1:N relationship it is created with (`Metadata.lookup`). */\nexport interface LookupColumnOptions extends ColumnOptions {\n /** The table that gets the lookup column (the \"many\" side): `ReferencingEntity`. */\n referencingEntity: string;\n /** The table the lookup points to (the \"one\" side): `ReferencedEntity`. */\n referencedEntity: string;\n /** The relationship's schema name, with the customization prefix, e.g. `\"new_account_project\"`. */\n relationshipSchemaName: string;\n /** The referenced table's column the lookup holds. Default: its primary key. */\n referencedAttribute?: string;\n /**\n * What happens to the related rows when a row of the referenced table is assigned, deleted, …\n * Default: Dataverse's (`Delete: \"RemoveLink\"`, the others `\"NoCascade\"`).\n */\n cascade?: CascadeConfiguration;\n}\n\n/** Options of a table (`Metadata.entity`). */\nexport interface EntityDefinitionOptions extends LabelLanguageOptions {\n /** The table's display name, e.g. `\"Project\"`. */\n displayName: LabelInput;\n /** The table's plural display name, e.g. `\"Projects\"`. */\n displayCollectionName: LabelInput;\n /** The table's description. */\n description?: LabelInput;\n /**\n * Who owns the rows: a user or team (`\"UserOwned\"`, the default) or the organization\n * (`\"OrganizationOwned\"`). It can't be changed after the table is created.\n */\n ownershipType?: \"UserOwned\" | \"OrganizationOwned\";\n /** Whether activities can be related to the table's rows. Default `false`. */\n hasActivities?: boolean;\n /** Whether notes can be attached to the table's rows. Default `false`. */\n hasNotes?: boolean;\n /** The primary name column, from `Metadata.primaryName`. */\n primaryName: PrimaryNameAttributeMetadataCreate;\n /**\n * Other columns to create with the table. A lookup is created afterwards, with its\n * relationship (`Metadata.lookup` and `createOneToManyRelationship`).\n */\n attributes?: readonly AttributeMetadataCreateTypes[];\n}\n\n/** Options of a global choice (`Metadata.globalOptionSet`). */\nexport interface GlobalOptionSetOptions extends LabelLanguageOptions {\n /** The choice's display name. */\n displayName: LabelInput;\n /** The choice's description. */\n description?: LabelInput;\n /** The options, at least one. */\n options: readonly ChoiceOptionInput[];\n}\n\n/** Options of an N:N relationship (`Metadata.manyToMany`). */\nexport interface ManyToManyRelationshipOptions {\n /** The first table's logical name. */\n entity1LogicalName: string;\n /** The second table's logical name. */\n entity2LogicalName: string;\n /** The intersect table Dataverse creates. Default: the relationship's schema name, lowercased. */\n intersectEntityName?: string;\n}\n\n// ==================== The builders ====================\n\n/**\n * The metadata builders, as `Metadata`. Each returns the create type a `MetadataClient` method\n * takes. Column builders take the column's schema name, with the customization prefix (e.g.\n * `\"new_Code\"`), and its options: `displayName` (required), `description`, `requiredLevel`\n * (default `\"None\"`) and `languageCode` (default 1033) for labels given as text.\n */\nexport interface MetadataBuilders {\n /**\n * A `Label` with its text in one language (default 1033), or in several.\n *\n * @example\n * ```typescript\n * Metadata.label(\"Name\");\n * Metadata.label(\"Nom\", 1036);\n * Metadata.label({ 1033: \"Name\", 1036: \"Nom\" });\n * ```\n */\n readonly label: {\n (text: string, languageCode?: number): Label;\n (texts: LabelTexts): Label;\n };\n\n /**\n * A table, for `createEntityDefinition`: its primary name column (from `Metadata.primaryName`)\n * first, then any other columns. Not an activity table. Lookups are created afterwards, with\n * their relationship (`Metadata.lookup`).\n *\n * @param schemaName The table's schema name, with the customization prefix, e.g. `\"new_Project\"`\n * @example\n * ```typescript\n * await metadata.createEntityDefinition(\n * Metadata.entity(\"new_Project\", {\n * displayName: \"Project\",\n * displayCollectionName: \"Projects\",\n * primaryName: Metadata.primaryName(\"new_Name\", { displayName: \"Name\" }),\n * attributes: [Metadata.dateTime(\"new_DueDate\", { displayName: \"Due date\", format: \"DateOnly\" })],\n * })\n * );\n * ```\n */\n readonly entity: (schemaName: string, options: EntityDefinitionOptions) => EntityMetadataCreate;\n\n /**\n * The primary name column of a table, for `Metadata.entity`'s `primaryName`: a text column\n * with `IsPrimaryName: true` (`MaxLength` 100 by default).\n */\n readonly primaryName: (\n schemaName: string,\n options: PrimaryNameColumnOptions\n ) => PrimaryNameAttributeMetadataCreate;\n\n /**\n * A text column (`MaxLength` 100 and the `Text` format by default), for\n * `createAttributeDefinition` or `Metadata.entity`'s `attributes`.\n *\n * @example\n * ```typescript\n * await metadata.createAttributeDefinition(\n * \"new_project\",\n * Metadata.string(\"new_Code\", { displayName: \"Code\", maxLength: 20 })\n * );\n * ```\n */\n readonly string: (\n schemaName: string,\n options: StringColumnOptions\n ) => StringAttributeMetadataCreate;\n\n /** A multiline text column (`MaxLength` 2,000 by default). */\n readonly memo: (schemaName: string, options: MemoColumnOptions) => MemoAttributeMetadataCreate;\n\n /** A whole number column (the `None` format by default). */\n readonly integer: (\n schemaName: string,\n options: IntegerColumnOptions\n ) => IntegerAttributeMetadataCreate;\n\n /** A decimal number column (2 decimal places by default). */\n readonly decimal: (\n schemaName: string,\n options: DecimalColumnOptions\n ) => DecimalAttributeMetadataCreate;\n\n /** A floating point number column (2 decimal places by default). */\n readonly double: (\n schemaName: string,\n options: DoubleColumnOptions\n ) => DoubleAttributeMetadataCreate;\n\n /** A currency column (the precision of the record's currency by default). */\n readonly money: (schemaName: string, options: MoneyColumnOptions) => MoneyAttributeMetadataCreate;\n\n /**\n * A date and time column (`DateAndTime` by default). The `\"DateOnly\"` behavior needs the\n * `\"DateOnly\"` format.\n *\n * @example\n * ```typescript\n * Metadata.dateTime(\"new_DueDate\", { displayName: \"Due date\", format: \"DateOnly\", behavior: \"DateOnly\" });\n * ```\n */\n readonly dateTime: (\n schemaName: string,\n options: DateTimeColumnOptions\n ) => DateTimeAttributeMetadataCreate;\n\n /** A yes/no column, with its two options: Yes (1) and No (0) by default, default No. */\n readonly boolean: (\n schemaName: string,\n options: BooleanColumnOptions\n ) => BooleanAttributeMetadataCreate;\n\n /**\n * A choice column: its own `options` (a local choice, `IsGlobal: false`), or an existing global\n * choice by `globalOptionSetId`. Exactly one of the two.\n *\n * @example\n * ```typescript\n * Metadata.picklist(\"new_Size\", { displayName: \"Size\", options: [\"Small\", \"Large\"] });\n * Metadata.picklist(\"new_Priority\", { displayName: \"Priority\", globalOptionSetId: id });\n * ```\n */\n readonly picklist: (\n schemaName: string,\n options: ChoiceColumnOptions\n ) => PicklistAttributeMetadataCreate;\n\n /**\n * A choices (multi-select) column: its own `options` or an existing global choice by\n * `globalOptionSetId`, exactly one of the two.\n */\n readonly multiSelectPicklist: (\n schemaName: string,\n options: ChoiceColumnOptions\n ) => MultiSelectPicklistAttributeMetadataCreate;\n\n /** A file column (32 MB by default). */\n readonly file: (schemaName: string, options: FileColumnOptions) => FileAttributeMetadataCreate;\n\n /** An image column (10 MB, thumbnail only, by default). */\n readonly image: (schemaName: string, options: ImageColumnOptions) => ImageAttributeMetadataCreate;\n\n /**\n * A lookup column, as the 1:N relationship it is created with: pass the result to\n * `createOneToManyRelationship`. (Dataverse creates a lookup only through its relationship.)\n *\n * @param schemaName The lookup column's schema name, with the customization prefix, e.g.\n * `\"new_AccountId\"`\n * @example\n * ```typescript\n * await metadata.createOneToManyRelationship(\n * Metadata.lookup(\"new_AccountId\", {\n * displayName: \"Account\",\n * referencingEntity: \"new_project\", // gets the column\n * referencedEntity: \"account\", // the table it points to\n * relationshipSchemaName: \"new_account_project\",\n * })\n * );\n * ```\n */\n readonly lookup: (\n schemaName: string,\n options: LookupColumnOptions\n ) => OneToManyRelationshipMetadataCreate;\n\n /**\n * An N:N relationship, for `createManyToManyRelationship`.\n *\n * @param schemaName The relationship's schema name, with the customization prefix\n */\n readonly manyToMany: (\n schemaName: string,\n options: ManyToManyRelationshipOptions\n ) => ManyToManyRelationshipMetadataCreate;\n\n /**\n * A global choice, for `createGlobalOptionSet`.\n *\n * @param name The choice's name, with the customization prefix, e.g. `\"new_priority\"`\n */\n readonly globalOptionSet: (\n name: string,\n options: GlobalOptionSetOptions\n ) => OptionSetMetadataCreate;\n}\n\n/**\n * Builders for the metadata create payloads (#345): `Metadata.entity`, `Metadata.string`,\n * `Metadata.picklist`, `Metadata.lookup`, … See {@link MetadataBuilders}.\n *\n * Each fills in the `@odata.type`, labels with their `LanguageCode`, `RequiredLevel` and\n * Dataverse's defaults, and throws `DataverseInvalidRequestError` (`InvalidParameter`) for input\n * Dataverse would reject. The result is an ordinary object of the create type: spread it to set a\n * property the builder doesn't take.\n *\n * @example\n * ```typescript\n * await metadata.createAttributeDefinition(\n * \"new_project\",\n * Metadata.picklist(\"new_Size\", { displayName: \"Size\", options: [\"Small\", \"Large\"] })\n * );\n * ```\n */\nexport const Metadata: MetadataBuilders = {\n label,\n entity,\n primaryName,\n string,\n memo,\n integer,\n decimal,\n double,\n money,\n dateTime,\n boolean,\n picklist,\n multiSelectPicklist,\n file,\n image,\n lookup,\n manyToMany,\n globalOptionSet,\n};\n\n// ==================== Labels ====================\n\nconst DEFAULT_LANGUAGE = 1033;\n\nfunction label(text: string, languageCode?: number): Label;\nfunction label(texts: LabelTexts): Label;\nfunction label(textOrTexts: string | LabelTexts, languageCode?: number): Label {\n if (typeof textOrTexts === \"string\") {\n return makeLabel([[textOrTexts, checkLanguage(languageCode ?? DEFAULT_LANGUAGE)]], \"text\");\n }\n if (languageCode !== undefined) {\n throw invalid(\"languageCode\", \"give the languages as the keys of the texts, not separately\");\n }\n const entries = Object.entries(textOrTexts).map(([lcid, text]): [string, number] => [\n text,\n checkLanguage(Number(lcid)),\n ]);\n if (entries.length === 0) throw invalid(\"texts\", \"a label needs a text in at least one language\");\n return makeLabel(entries, \"texts\");\n}\n\nfunction makeLabel(entries: ReadonlyArray<readonly [string, number]>, param: string): Label {\n for (const [text] of entries) {\n // unknown: JavaScript callers can pass anything\n const value: unknown = text;\n if (typeof value !== \"string\" || value.trim() === \"\") {\n throw invalid(param, \"a label's text can't be empty\");\n }\n }\n return {\n \"@odata.type\": \"Microsoft.Dynamics.CRM.Label\",\n LocalizedLabels: entries.map(([text, LanguageCode]) => ({\n \"@odata.type\": \"Microsoft.Dynamics.CRM.LocalizedLabel\",\n Label: text,\n LanguageCode,\n })),\n };\n}\n\nfunction checkLanguage(languageCode: number): number {\n if (!Number.isInteger(languageCode) || languageCode <= 0 || languageCode > 0xffff) {\n throw invalid(\n \"languageCode\",\n `${String(languageCode)} isn't a language code (LCID), e.g. 1033`\n );\n }\n return languageCode;\n}\n\nfunction toLabel(input: LabelInput, languageCode: number | undefined, param: string): Label {\n if (typeof input !== \"string\") return input;\n return makeLabel([[input, checkLanguage(languageCode ?? DEFAULT_LANGUAGE)]], param);\n}\n\n// ==================== Columns ====================\n\nfunction string(schemaName: string, options: StringColumnOptions): StringAttributeMetadataCreate {\n return {\n ...column(\"StringAttributeMetadata\", schemaName, options),\n MaxLength: checkRange(\"maxLength\", options.maxLength ?? 100, 1, 4000, true),\n FormatName: { Value: options.format ?? \"Text\" },\n };\n}\n\nfunction primaryName(\n schemaName: string,\n options: PrimaryNameColumnOptions\n): PrimaryNameAttributeMetadataCreate {\n return {\n ...column(\"StringAttributeMetadata\", schemaName, options),\n IsPrimaryName: true,\n MaxLength: checkRange(\"maxLength\", options.maxLength ?? 100, 1, 4000, true),\n FormatName: { Value: \"Text\" },\n };\n}\n\nfunction memo(schemaName: string, options: MemoColumnOptions): MemoAttributeMetadataCreate {\n return {\n ...column(\"MemoAttributeMetadata\", schemaName, options),\n MaxLength: checkRange(\"maxLength\", options.maxLength ?? 2000, 1, 1_048_576, true),\n Format: \"TextArea\",\n };\n}\n\nfunction integer(\n schemaName: string,\n options: IntegerColumnOptions\n): IntegerAttributeMetadataCreate {\n return {\n ...column(\"IntegerAttributeMetadata\", schemaName, options),\n Format: options.format ?? \"None\",\n ...minMax(options, -2_147_483_648, 2_147_483_647, true),\n };\n}\n\nfunction decimal(\n schemaName: string,\n options: DecimalColumnOptions\n): DecimalAttributeMetadataCreate {\n return {\n ...column(\"DecimalAttributeMetadata\", schemaName, options),\n Precision: checkRange(\"precision\", options.precision ?? 2, 0, 10, true),\n ...minMax(options, -100_000_000_000, 100_000_000_000, false),\n };\n}\n\nfunction double(schemaName: string, options: DoubleColumnOptions): DoubleAttributeMetadataCreate {\n return {\n ...column(\"DoubleAttributeMetadata\", schemaName, options),\n Precision: checkRange(\"precision\", options.precision ?? 2, 0, 5, true),\n ...minMax(options, -100_000_000_000, 100_000_000_000, false),\n };\n}\n\nfunction money(schemaName: string, options: MoneyColumnOptions): MoneyAttributeMetadataCreate {\n const precision = options.precision ?? \"currency\";\n return {\n ...column(\"MoneyAttributeMetadata\", schemaName, options),\n ...(precision === \"currency\"\n ? { PrecisionSource: 2 }\n : precision === \"pricing\"\n ? { PrecisionSource: 1 }\n : { PrecisionSource: 0, Precision: checkRange(\"precision\", precision, 0, 4, true) }),\n ...minMax(options, -922_337_203_685_477, 922_337_203_685_477, false),\n };\n}\n\nfunction dateTime(\n schemaName: string,\n options: DateTimeColumnOptions\n): DateTimeAttributeMetadataCreate {\n const format = options.format ?? \"DateAndTime\";\n if (options.behavior === \"DateOnly\" && format !== \"DateOnly\") {\n throw invalid(\"behavior\", 'the \"DateOnly\" behavior needs the \"DateOnly\" format');\n }\n return {\n ...column(\"DateTimeAttributeMetadata\", schemaName, options),\n Format: format,\n ...(options.behavior !== undefined && { DateTimeBehavior: { Value: options.behavior } }),\n };\n}\n\nfunction boolean(\n schemaName: string,\n options: BooleanColumnOptions\n): BooleanAttributeMetadataCreate {\n const lang = options.languageCode;\n return {\n ...column(\"BooleanAttributeMetadata\", schemaName, options),\n DefaultValue: options.defaultValue ?? false,\n OptionSet: {\n \"@odata.type\": \"Microsoft.Dynamics.CRM.BooleanOptionSetMetadata\",\n OptionSetType: \"Boolean\",\n TrueOption: { Value: 1, Label: toLabel(options.trueLabel ?? \"Yes\", lang, \"trueLabel\") },\n FalseOption: { Value: 0, Label: toLabel(options.falseLabel ?? \"No\", lang, \"falseLabel\") },\n },\n };\n}\n\nfunction picklist(\n schemaName: string,\n options: ChoiceColumnOptions\n): PicklistAttributeMetadataCreate {\n return {\n ...column(\"PicklistAttributeMetadata\", schemaName, options),\n ...choice(options),\n };\n}\n\nfunction multiSelectPicklist(\n schemaName: string,\n options: ChoiceColumnOptions\n): MultiSelectPicklistAttributeMetadataCreate {\n return {\n ...column(\"MultiSelectPicklistAttributeMetadata\", schemaName, options),\n ...choice(options),\n };\n}\n\nfunction file(schemaName: string, options: FileColumnOptions): FileAttributeMetadataCreate {\n return {\n ...column(\"FileAttributeMetadata\", schemaName, options),\n MaxSizeInKB: checkRange(\"maxSizeInKB\", options.maxSizeInKB ?? 32_768, 1, 10_485_760, true),\n };\n}\n\nfunction image(schemaName: string, options: ImageColumnOptions): ImageAttributeMetadataCreate {\n return {\n ...column(\"ImageAttributeMetadata\", schemaName, options),\n MaxSizeInKB: checkRange(\"maxSizeInKB\", options.maxSizeInKB ?? 10_240, 1, 30_720, true),\n CanStoreFullImage: options.canStoreFullImage ?? false,\n };\n}\n\n// ==================== Relationships ====================\n\nfunction lookup(\n schemaName: string,\n options: LookupColumnOptions\n): OneToManyRelationshipMetadataCreate {\n return {\n \"@odata.type\": \"Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata\",\n SchemaName: checkSchemaName(\"relationshipSchemaName\", options.relationshipSchemaName),\n ReferencedEntity: checkLogicalName(\"referencedEntity\", options.referencedEntity),\n ReferencingEntity: checkLogicalName(\"referencingEntity\", options.referencingEntity),\n ...(options.referencedAttribute !== undefined && {\n ReferencedAttribute: checkLogicalName(\"referencedAttribute\", options.referencedAttribute),\n }),\n ...(options.cascade !== undefined && { CascadeConfiguration: options.cascade }),\n Lookup: column(\"LookupAttributeMetadata\", schemaName, options),\n };\n}\n\nfunction manyToMany(\n schemaName: string,\n options: ManyToManyRelationshipOptions\n): ManyToManyRelationshipMetadataCreate {\n const name = checkSchemaName(\"schemaName\", schemaName);\n return {\n \"@odata.type\": \"Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata\",\n SchemaName: name,\n Entity1LogicalName: checkLogicalName(\"entity1LogicalName\", options.entity1LogicalName),\n Entity2LogicalName: checkLogicalName(\"entity2LogicalName\", options.entity2LogicalName),\n IntersectEntityName: checkSchemaName(\n \"intersectEntityName\",\n options.intersectEntityName ?? name.toLowerCase()\n ),\n };\n}\n\n// ==================== Tables and global choices ====================\n\nfunction entity(schemaName: string, options: EntityDefinitionOptions): EntityMetadataCreate {\n const lang = options.languageCode;\n // For JavaScript callers and casts: the types already require these.\n if ((options.primaryName as { IsPrimaryName?: unknown }).IsPrimaryName !== true) {\n throw invalid(\"primaryName\", \"use Metadata.primaryName(...) for the primary name column\");\n }\n const attributes = options.attributes ?? [];\n if (attributes.some((a) => (a as { IsPrimaryName?: unknown }).IsPrimaryName === true)) {\n throw invalid(\"attributes\", \"a table has one primary name column: pass it as primaryName\");\n }\n return {\n \"@odata.type\": \"Microsoft.Dynamics.CRM.EntityMetadata\",\n SchemaName: checkSchemaName(\"schemaName\", schemaName),\n DisplayName: toLabel(options.displayName, lang, \"displayName\"),\n DisplayCollectionName: toLabel(options.displayCollectionName, lang, \"displayCollectionName\"),\n ...(options.description !== undefined && {\n Description: toLabel(options.description, lang, \"description\"),\n }),\n OwnershipType: options.ownershipType ?? \"UserOwned\",\n IsActivity: false,\n HasActivities: options.hasActivities ?? false,\n HasNotes: options.hasNotes ?? false,\n Attributes: [options.primaryName, ...attributes],\n };\n}\n\nfunction globalOptionSet(name: string, options: GlobalOptionSetOptions): OptionSetMetadataCreate {\n const lang = options.languageCode;\n return {\n \"@odata.type\": \"Microsoft.Dynamics.CRM.OptionSetMetadata\",\n Name: checkSchemaName(\"name\", name),\n DisplayName: toLabel(options.displayName, lang, \"displayName\"),\n ...(options.description !== undefined && {\n Description: toLabel(options.description, lang, \"description\"),\n }),\n IsGlobal: true,\n OptionSetType: \"Picklist\",\n Options: toOptions(options.options, lang),\n };\n}\n\n// ==================== Helpers ====================\n\n/** The properties every column create has. */\ninterface ColumnBase<Name extends string> {\n \"@odata.type\": `Microsoft.Dynamics.CRM.${Name}`;\n SchemaName: string;\n DisplayName: Label;\n Description?: Label;\n RequiredLevel: { Value: ColumnRequiredLevel };\n}\n\nfunction column<Name extends string>(\n type: Name,\n schemaName: string,\n options: ColumnOptions\n): ColumnBase<Name> {\n const lang = options.languageCode;\n const requiredLevel = options.requiredLevel ?? \"None\";\n if (!REQUIRED_LEVELS.includes(requiredLevel)) {\n throw invalid(\"requiredLevel\", `use one of ${REQUIRED_LEVELS.join(\", \")}`);\n }\n return {\n \"@odata.type\": `Microsoft.Dynamics.CRM.${type}`,\n SchemaName: checkSchemaName(\"schemaName\", schemaName),\n DisplayName: toLabel(options.displayName, lang, \"displayName\"),\n ...(options.description !== undefined && {\n Description: toLabel(options.description, lang, \"description\"),\n }),\n RequiredLevel: { Value: requiredLevel },\n };\n}\n\nconst REQUIRED_LEVELS: readonly string[] = [\"None\", \"Recommended\", \"ApplicationRequired\"];\n\ntype ChoicePart =\n | { OptionSet: LocalOptionSetMetadataCreate; DefaultFormValue?: number }\n | {\n \"GlobalOptionSet@odata.bind\": `/GlobalOptionSetDefinitions(${string})`;\n DefaultFormValue?: number;\n };\n\nfunction choice(options: ChoiceColumnOptions): ChoicePart {\n const hasLocal = options.options !== undefined;\n const hasGlobal = options.globalOptionSetId !== undefined;\n if (hasLocal === hasGlobal) {\n throw invalid(\n \"options\",\n \"give the column its own options or a globalOptionSetId, not both or neither\"\n );\n }\n const defaultValue =\n options.defaultValue === undefined\n ? {}\n : {\n DefaultFormValue: checkRange(\n \"defaultValue\",\n options.defaultValue,\n -2_147_483_648,\n 2_147_483_647,\n true\n ),\n };\n\n if (options.globalOptionSetId !== undefined) {\n const id = options.globalOptionSetId;\n if (!GUID.test(id)) {\n throw invalid(\n \"globalOptionSetId\",\n \"use the global choice's MetadataId (a GUID); Dataverse binds by id only\"\n );\n }\n return { \"GlobalOptionSet@odata.bind\": `/GlobalOptionSetDefinitions(${id})`, ...defaultValue };\n }\n\n const opts = toOptions(options.options, options.languageCode);\n if (\n options.defaultValue !== undefined &&\n opts.every((o) => o.Value !== undefined) &&\n !opts.some((o) => o.Value === options.defaultValue)\n ) {\n throw invalid(\n \"defaultValue\",\n `${String(options.defaultValue)} isn't one of the options' values`\n );\n }\n return {\n OptionSet: {\n \"@odata.type\": \"Microsoft.Dynamics.CRM.OptionSetMetadata\",\n IsGlobal: false,\n OptionSetType: \"Picklist\",\n Options: opts,\n },\n ...defaultValue,\n };\n}\n\nfunction toOptions(\n inputs: readonly ChoiceOptionInput[],\n languageCode: number | undefined\n): OptionMetadataCreate[] {\n if (inputs.length === 0) throw invalid(\"options\", \"a choice needs at least one option\");\n const seen = new Set<number>();\n return inputs.map((input, i): OptionMetadataCreate => {\n const o: ChoiceOption = typeof input === \"string\" ? { label: input } : input;\n const param = `options[${String(i)}]`;\n if (o.value !== undefined) {\n checkRange(`${param}.value`, o.value, -2_147_483_648, 2_147_483_647, true);\n if (seen.has(o.value)) throw invalid(`${param}.value`, `${String(o.value)} is used twice`);\n seen.add(o.value);\n }\n return {\n ...(o.value !== undefined && { Value: o.value }),\n Label: toLabel(o.label, languageCode, `${param}.label`),\n ...(o.description !== undefined && {\n Description: toLabel(o.description, languageCode, `${param}.description`),\n }),\n ...(o.color !== undefined && { Color: o.color }),\n };\n });\n}\n\nfunction minMax(\n options: { minValue?: number; maxValue?: number },\n lowest: number,\n highest: number,\n integerOnly: boolean\n): { MinValue?: number; MaxValue?: number } {\n const { minValue, maxValue } = options;\n if (minValue !== undefined) checkRange(\"minValue\", minValue, lowest, highest, integerOnly);\n if (maxValue !== undefined) checkRange(\"maxValue\", maxValue, lowest, highest, integerOnly);\n if (minValue !== undefined && maxValue !== undefined && minValue > maxValue) {\n throw invalid(\"minValue\", `${String(minValue)} is greater than maxValue ${String(maxValue)}`);\n }\n return {\n ...(minValue !== undefined && { MinValue: minValue }),\n ...(maxValue !== undefined && { MaxValue: maxValue }),\n };\n}\n\nfunction checkRange(\n param: string,\n value: number,\n lowest: number,\n highest: number,\n integerOnly: boolean\n): number {\n // unknown: JavaScript callers can pass anything\n const n: unknown = value;\n if (\n typeof n !== \"number\" ||\n !Number.isFinite(n) ||\n (integerOnly && !Number.isInteger(n)) ||\n n < lowest ||\n n > highest\n ) {\n throw invalid(\n param,\n `${String(value)} must be ${integerOnly ? \"a whole number\" : \"a number\"} from ${String(lowest)} to ${String(highest)}`\n );\n }\n return value;\n}\n\n/** A customization prefix, an underscore, then letters, digits and underscores. */\nconst SCHEMA_NAME = /^[A-Za-z][A-Za-z0-9]*_[A-Za-z0-9_]+$/;\nconst LOGICAL_NAME = /^[A-Za-z][A-Za-z0-9_]*$/;\nconst GUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nfunction checkSchemaName(param: string, name: string): string {\n const value: unknown = name;\n if (typeof value !== \"string\" || !SCHEMA_NAME.test(value)) {\n throw invalid(\n param,\n `'${String(value)}' needs the customization prefix and only letters, digits and underscores, e.g. \"new_Name\"`\n );\n }\n return name;\n}\n\nfunction checkLogicalName(param: string, name: string): string {\n const value: unknown = name;\n if (typeof value !== \"string\" || !LOGICAL_NAME.test(value)) {\n throw invalid(param, `'${String(value)}' isn't a logical name, e.g. \"account\"`);\n }\n return name;\n}\n\nfunction invalid(param: string, reason: string): DataverseInvalidRequestError {\n return DataverseInvalidRequestError.invalidParameter(param, reason);\n}\n","/**\n * AssociatedMenuBehavior\n *\n * The Web API reads and writes enum members by name (`\"UseCollectionName\"`), never by number,\n * so this is a string union. `AssociatedMenuBehavior.UseCollectionName` is the name; each member's comment\n * gives its numeric value.\n */\nexport const AssociatedMenuBehavior = {\n /** 0 */\n UseCollectionName: \"UseCollectionName\",\n /** 1 */\n UseLabel: \"UseLabel\",\n /** 2 */\n DoNotDisplay: \"DoNotDisplay\",\n} as const;\n\nexport type AssociatedMenuBehavior =\n (typeof AssociatedMenuBehavior)[keyof typeof AssociatedMenuBehavior];\n","/**\n * AssociatedMenuGroup\n *\n * The Web API reads and writes enum members by name (`\"Details\"`), never by number,\n * so this is a string union. `AssociatedMenuGroup.Details` is the name; each member's comment\n * gives its numeric value.\n */\nexport const AssociatedMenuGroup = {\n /** 0 */\n Details: \"Details\",\n /** 1 */\n Sales: \"Sales\",\n /** 2 */\n Service: \"Service\",\n /** 3 */\n Marketing: \"Marketing\",\n} as const;\n\nexport type AssociatedMenuGroup = (typeof AssociatedMenuGroup)[keyof typeof AssociatedMenuGroup];\n","/**\n * AttributeRequiredLevel\n *\n * The Web API reads and writes enum members by name (`\"None\"`), never by number,\n * so this is a string union. `AttributeRequiredLevel.None` is the name; each member's comment\n * gives its numeric value.\n */\nexport const AttributeRequiredLevel = {\n /** 0 */\n None: \"None\",\n /** 1 */\n SystemRequired: \"SystemRequired\",\n /** 2 */\n ApplicationRequired: \"ApplicationRequired\",\n /** 3 */\n Recommended: \"Recommended\",\n} as const;\n\nexport type AttributeRequiredLevel =\n (typeof AttributeRequiredLevel)[keyof typeof AttributeRequiredLevel];\n","/**\n * AttributeTypeCode\n *\n * The Web API reads and writes enum members by name (`\"Boolean\"`), never by number,\n * so this is a string union. `AttributeTypeCode.Boolean` is the name; each member's comment\n * gives its numeric value.\n */\nexport const AttributeTypeCode = {\n /** 0 */\n Boolean: \"Boolean\",\n /** 1 */\n Customer: \"Customer\",\n /** 2 */\n DateTime: \"DateTime\",\n /** 3 */\n Decimal: \"Decimal\",\n /** 4 */\n Double: \"Double\",\n /** 5 */\n Integer: \"Integer\",\n /** 6 */\n Lookup: \"Lookup\",\n /** 7 */\n Memo: \"Memo\",\n /** 8 */\n Money: \"Money\",\n /** 9 */\n Owner: \"Owner\",\n /** 10 */\n PartyList: \"PartyList\",\n /** 11 */\n Picklist: \"Picklist\",\n /** 12 */\n State: \"State\",\n /** 13 */\n Status: \"Status\",\n /** 14 */\n String: \"String\",\n /** 15 */\n Uniqueidentifier: \"Uniqueidentifier\",\n /** 16 */\n CalendarRules: \"CalendarRules\",\n /** 17 */\n Virtual: \"Virtual\",\n /** 18 */\n BigInt: \"BigInt\",\n /** 19 */\n ManagedProperty: \"ManagedProperty\",\n /** 20 */\n EntityName: \"EntityName\",\n} as const;\n\nexport type AttributeTypeCode = (typeof AttributeTypeCode)[keyof typeof AttributeTypeCode];\n","/**\n * CascadeType\n *\n * The Web API reads and writes enum members by name (`\"NoCascade\"`), never by number,\n * so this is a string union. `CascadeType.NoCascade` is the name; each member's comment\n * gives its numeric value.\n */\nexport const CascadeType = {\n /** 0 */\n NoCascade: \"NoCascade\",\n /** 1 */\n Cascade: \"Cascade\",\n /** 2 */\n Active: \"Active\",\n /** 3 */\n UserOwned: \"UserOwned\",\n /** 4 */\n RemoveLink: \"RemoveLink\",\n /** 5 */\n Restrict: \"Restrict\",\n} as const;\n\nexport type CascadeType = (typeof CascadeType)[keyof typeof CascadeType];\n","/**\n * DateTimeFormat\n *\n * The Web API reads and writes enum members by name (`\"DateOnly\"`), never by number,\n * so this is a string union. `DateTimeFormat.DateOnly` is the name; each member's comment\n * gives its numeric value.\n */\nexport const DateTimeFormat = {\n /** 0 */\n DateOnly: \"DateOnly\",\n /** 1 */\n DateAndTime: \"DateAndTime\",\n} as const;\n\nexport type DateTimeFormat = (typeof DateTimeFormat)[keyof typeof DateTimeFormat];\n","/**\n * DeletedMetadataFilters\n *\n * The Web API reads and writes enum members by name (`\"Default\"`), never by number,\n * so this is a string union. `DeletedMetadataFilters.Default` is the name; each member's comment\n * gives its numeric value.\n */\nexport const DeletedMetadataFilters = {\n /** 1 */\n Default: \"Default\",\n /** 2 */\n Attribute: \"Attribute\",\n /** 4 */\n Relationship: \"Relationship\",\n /** 8 */\n Label: \"Label\",\n /** 16 */\n OptionSet: \"OptionSet\",\n /** 31 */\n All: \"All\",\n} as const;\n\nexport type DeletedMetadataFilters =\n (typeof DeletedMetadataFilters)[keyof typeof DeletedMetadataFilters];\n","/**\n * EntityClusterMode\n *\n * The Web API reads and writes enum members by name (`\"Partitioned\"`), never by number,\n * so this is a string union. `EntityClusterMode.Partitioned` is the name; each member's comment\n * gives its numeric value.\n */\nexport const EntityClusterMode = {\n /** 0 */\n Partitioned: \"Partitioned\",\n /** 1 */\n Replicated: \"Replicated\",\n /** 2 */\n Local: \"Local\",\n /** 3 */\n Inherited: \"Inherited\",\n} as const;\n\nexport type EntityClusterMode = (typeof EntityClusterMode)[keyof typeof EntityClusterMode];\n","/**\n * EntityKeyIndexStatus\n *\n * The Web API reads and writes enum members by name (`\"Pending\"`), never by number,\n * so this is a string union. `EntityKeyIndexStatus.Pending` is the name; each member's comment\n * gives its numeric value.\n */\nexport const EntityKeyIndexStatus = {\n /** 0 */\n Pending: \"Pending\",\n /** 1 */\n InProgress: \"InProgress\",\n /** 2 */\n Active: \"Active\",\n /** 3 */\n Failed: \"Failed\",\n} as const;\n\nexport type EntityKeyIndexStatus = (typeof EntityKeyIndexStatus)[keyof typeof EntityKeyIndexStatus];\n","/**\n * ImeMode\n *\n * The Web API reads and writes enum members by name (`\"Auto\"`), never by number,\n * so this is a string union. `ImeMode.Auto` is the name; each member's comment\n * gives its numeric value.\n */\nexport const ImeMode = {\n /** 0 */\n Auto: \"Auto\",\n /** 1 */\n Inactive: \"Inactive\",\n /** 2 */\n Active: \"Active\",\n /** 3 */\n Disabled: \"Disabled\",\n} as const;\n\nexport type ImeMode = (typeof ImeMode)[keyof typeof ImeMode];\n","/**\n * IntegerFormat\n *\n * The Web API reads and writes enum members by name (`\"None\"`), never by number,\n * so this is a string union. `IntegerFormat.None` is the name; each member's comment\n * gives its numeric value.\n */\nexport const IntegerFormat = {\n /** 0 */\n None: \"None\",\n /** 1 */\n Duration: \"Duration\",\n /** 2 */\n TimeZone: \"TimeZone\",\n /** 3 */\n Language: \"Language\",\n /** 4 */\n Locale: \"Locale\",\n} as const;\n\nexport type IntegerFormat = (typeof IntegerFormat)[keyof typeof IntegerFormat];\n","/**\n * LogicalOperator\n *\n * The Web API reads and writes enum members by name (`\"And\"`), never by number,\n * so this is a string union. `LogicalOperator.And` is the name; each member's comment\n * gives its numeric value.\n */\nexport const LogicalOperator = {\n /** 0 */\n And: \"And\",\n /** 1 */\n Or: \"Or\",\n} as const;\n\nexport type LogicalOperator = (typeof LogicalOperator)[keyof typeof LogicalOperator];\n","/**\n * LookupFormat\n *\n * The Web API reads and writes enum members by name (`\"None\"`), never by number,\n * so this is a string union. `LookupFormat.None` is the name; each member's comment\n * gives its numeric value.\n */\nexport const LookupFormat = {\n /** 0 */\n None: \"None\",\n /** 1 */\n Connection: \"Connection\",\n /** 2 */\n Regarding: \"Regarding\",\n /** 3 */\n Text: \"Text\",\n} as const;\n\nexport type LookupFormat = (typeof LookupFormat)[keyof typeof LookupFormat];\n","/**\n * ManagedPropertyEvaluationPriority\n *\n * The Web API reads and writes enum members by name (`\"None\"`), never by number,\n * so this is a string union. `ManagedPropertyEvaluationPriority.None` is the name; each member's comment\n * gives its numeric value.\n */\nexport const ManagedPropertyEvaluationPriority = {\n /** 0 */\n None: \"None\",\n /** 1 */\n Low: \"Low\",\n /** 2 */\n Normal: \"Normal\",\n /** 3 */\n High: \"High\",\n /** 4 */\n Essential: \"Essential\",\n} as const;\n\nexport type ManagedPropertyEvaluationPriority =\n (typeof ManagedPropertyEvaluationPriority)[keyof typeof ManagedPropertyEvaluationPriority];\n","/**\n * ManagedPropertyOperation\n *\n * The Web API reads and writes enum members by name (`\"None\"`), never by number,\n * so this is a string union. `ManagedPropertyOperation.None` is the name; each member's comment\n * gives its numeric value.\n */\nexport const ManagedPropertyOperation = {\n /** 0 */\n None: \"None\",\n /** 1 */\n Create: \"Create\",\n /** 2 */\n Update: \"Update\",\n /** 3 */\n CreateUpdate: \"CreateUpdate\",\n /** 4 */\n Delete: \"Delete\",\n /** 6 */\n UpdateDelete: \"UpdateDelete\",\n /** 7 */\n All: \"All\",\n} as const;\n\nexport type ManagedPropertyOperation =\n (typeof ManagedPropertyOperation)[keyof typeof ManagedPropertyOperation];\n","/**\n * ManagedPropertyType\n *\n * The Web API reads and writes enum members by name (`\"Operation\"`), never by number,\n * so this is a string union. `ManagedPropertyType.Operation` is the name; each member's comment\n * gives its numeric value.\n */\nexport const ManagedPropertyType = {\n /** 0 */\n Operation: \"Operation\",\n /** 1 */\n Attribute: \"Attribute\",\n /** 2 */\n CustomEvaluator: \"CustomEvaluator\",\n /** 3 */\n Custom: \"Custom\",\n} as const;\n\nexport type ManagedPropertyType = (typeof ManagedPropertyType)[keyof typeof ManagedPropertyType];\n","/**\n * MetadataConditionOperator\n *\n * The Web API reads and writes enum members by name (`\"Equals\"`), never by number,\n * so this is a string union. `MetadataConditionOperator.Equals` is the name; each member's comment\n * gives its numeric value.\n */\nexport const MetadataConditionOperator = {\n /** 0 */\n Equals: \"Equals\",\n /** 1 */\n NotEquals: \"NotEquals\",\n /** 2 */\n In: \"In\",\n /** 3 */\n NotIn: \"NotIn\",\n /** 4 */\n GreaterThan: \"GreaterThan\",\n /** 5 */\n LessThan: \"LessThan\",\n} as const;\n\nexport type MetadataConditionOperator =\n (typeof MetadataConditionOperator)[keyof typeof MetadataConditionOperator];\n","/**\n * OptionSetType\n *\n * The Web API reads and writes enum members by name (`\"Picklist\"`), never by number,\n * so this is a string union. `OptionSetType.Picklist` is the name; each member's comment\n * gives its numeric value.\n */\nexport const OptionSetType = {\n /** 0 */\n Picklist: \"Picklist\",\n /** 1 */\n State: \"State\",\n /** 2 */\n Status: \"Status\",\n /** 3 */\n Boolean: \"Boolean\",\n} as const;\n\nexport type OptionSetType = (typeof OptionSetType)[keyof typeof OptionSetType];\n","/**\n * OwnershipTypes\n *\n * The Web API reads and writes enum members by name (`\"None\"`), never by number,\n * so this is a string union. `OwnershipTypes.None` is the name; each member's comment\n * gives its numeric value.\n */\nexport const OwnershipTypes = {\n /** 0 */\n None: \"None\",\n /** 1 */\n UserOwned: \"UserOwned\",\n /** 2 */\n TeamOwned: \"TeamOwned\",\n /** 4 */\n BusinessOwned: \"BusinessOwned\",\n /** 8 */\n OrganizationOwned: \"OrganizationOwned\",\n /** 16 */\n BusinessParented: \"BusinessParented\",\n /** 32 */\n Filtered: \"Filtered\",\n} as const;\n\nexport type OwnershipTypes = (typeof OwnershipTypes)[keyof typeof OwnershipTypes];\n","/**\n * PrivilegeType\n *\n * The Web API reads and writes enum members by name (`\"None\"`), never by number,\n * so this is a string union. `PrivilegeType.None` is the name; each member's comment\n * gives its numeric value.\n */\nexport const PrivilegeType = {\n /** 0 */\n None: \"None\",\n /** 1 */\n Create: \"Create\",\n /** 2 */\n Read: \"Read\",\n /** 3 */\n Write: \"Write\",\n /** 4 */\n Delete: \"Delete\",\n /** 5 */\n Assign: \"Assign\",\n /** 6 */\n Share: \"Share\",\n /** 7 */\n Append: \"Append\",\n /** 8 */\n AppendTo: \"AppendTo\",\n} as const;\n\nexport type PrivilegeType = (typeof PrivilegeType)[keyof typeof PrivilegeType];\n","/**\n * RelationshipType\n *\n * The Web API reads and writes enum members by name (`\"OneToManyRelationship\"`), never by number,\n * so this is a string union. `RelationshipType.OneToManyRelationship` is the name; each member's comment\n * gives its numeric value.\n */\nexport const RelationshipType = {\n /** 0 */\n OneToManyRelationship: \"OneToManyRelationship\",\n /** 1 */\n ManyToManyRelationship: \"ManyToManyRelationship\",\n} as const;\n\nexport type RelationshipType = (typeof RelationshipType)[keyof typeof RelationshipType];\n","/**\n * SecurityTypes\n *\n * The Web API reads and writes enum members by name (`\"None\"`), never by number,\n * so this is a string union. `SecurityTypes.None` is the name; each member's comment\n * gives its numeric value.\n */\nexport const SecurityTypes = {\n /** 0 */\n None: \"None\",\n /** 1 */\n Append: \"Append\",\n /** 2 */\n ParentChild: \"ParentChild\",\n /** 4 */\n Pointer: \"Pointer\",\n /** 8 */\n Inheritance: \"Inheritance\",\n} as const;\n\nexport type SecurityTypes = (typeof SecurityTypes)[keyof typeof SecurityTypes];\n","/**\n * StringFormat\n *\n * The Web API reads and writes enum members by name (`\"Email\"`), never by number,\n * so this is a string union. `StringFormat.Email` is the name; each member's comment\n * gives its numeric value.\n */\nexport const StringFormat = {\n /** 0 */\n Email: \"Email\",\n /** 1 */\n Text: \"Text\",\n /** 2 */\n TextArea: \"TextArea\",\n /** 3 */\n Url: \"Url\",\n /** 4 */\n TickerSymbol: \"TickerSymbol\",\n /** 5 */\n PhoneticGuide: \"PhoneticGuide\",\n /** 6 */\n VersionNumber: \"VersionNumber\",\n /** 7 */\n Phone: \"Phone\",\n /** 8 */\n Json: \"Json\",\n /** 9 */\n RichText: \"RichText\",\n} as const;\n\nexport type StringFormat = (typeof StringFormat)[keyof typeof StringFormat];\n"]}
|