diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/Azure.AI.Language.Text.sln b/sdk/cognitivelanguage/Azure.AI.Language.Text/Azure.AI.Language.Text.sln deleted file mode 100644 index 2954cacf36cf..000000000000 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/Azure.AI.Language.Text.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.9.34723.18 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Azure.Core.TestFramework", "..\..\core\Azure.Core.TestFramework\src\Azure.Core.TestFramework.csproj", "{ECC730C1-4AEA-420C-916A-66B19B79E4DC}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Azure.AI.Language.Text", "src\Azure.AI.Language.Text.csproj", "{1E26A793-F2E8-4A31-8DA9-91B247D55645}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Azure.AI.Language.Text.Tests", "tests\Azure.AI.Language.Text.Tests.csproj", "{03FA9AB4-74F1-4572-B348-E850CEEBC3D1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {ECC730C1-4AEA-420C-916A-66B19B79E4DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ECC730C1-4AEA-420C-916A-66B19B79E4DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ECC730C1-4AEA-420C-916A-66B19B79E4DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ECC730C1-4AEA-420C-916A-66B19B79E4DC}.Release|Any CPU.Build.0 = Release|Any CPU - {1E26A793-F2E8-4A31-8DA9-91B247D55645}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1E26A793-F2E8-4A31-8DA9-91B247D55645}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1E26A793-F2E8-4A31-8DA9-91B247D55645}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1E26A793-F2E8-4A31-8DA9-91B247D55645}.Release|Any CPU.Build.0 = Release|Any CPU - {03FA9AB4-74F1-4572-B348-E850CEEBC3D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {03FA9AB4-74F1-4572-B348-E850CEEBC3D1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {03FA9AB4-74F1-4572-B348-E850CEEBC3D1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {03FA9AB4-74F1-4572-B348-E850CEEBC3D1}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/CHANGELOG.md b/sdk/cognitivelanguage/Azure.AI.Language.Text/CHANGELOG.md index 5c4532b67831..30c73af7b086 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/CHANGELOG.md +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/CHANGELOG.md @@ -1,14 +1,15 @@ # Release History -## 1.0.0-beta.4 (Unreleased) +## 1.0.0-beta.4 (2025-11-20) -### Features Added - -### Breaking Changes +This version of the client library defaults to the service API version `2025-11-15-preview`. -### Bugs Fixed +### Features Added -### Other Changes +- Added support for **multiple redaction policies** in a single request. +- Added **synthetic replacement redaction**, enabling selected PII types (e.g., Person, Email) to be replaced with realistic synthetic values rather than masked. +- Added **confidence score thresholding**, allowing customers to define minimum confidence levels—globally or per-entity—so that only entities meeting the required confidence are returned. +- Added **entity validation control** with the `disableEntityValidation` parameter, allowing users to bypass entity validation when needed. ## 1.0.0-beta.3 (2025-06-23) diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/README.md b/sdk/cognitivelanguage/Azure.AI.Language.Text/README.md index 92aa25e096c7..aa8b985f3d30 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/README.md +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/README.md @@ -17,7 +17,7 @@ Text Analytics is part of the Azure Cognitive Service for Language, a cloud-base [Source code][source_root] | [Package (NuGet)][package]| [API reference documentation][text_refdocs] | [Product documentation][text_docs] | [Samples][source_samples] > [!NOTE] -> Text Authoring is not supported in version 2.0.0-beta.1. If you use Text Authoring, please continue to use version 1.1.0. You can find the [samples][textauthoring_samples] here. +> Text Authoring is not supported from version 2.0.0-beta.1. If you use Text Authoring, please use the separate Text Authoring SDK. You can find the [samples][textauthoring_samples] here. ## Getting started @@ -31,6 +31,7 @@ dotnet add package Azure.AI.Language.Text --prerelease |SDK version |Supported API version of service |-------------|------------------------------------------------------------------------------------------------ +|1.0.0-beta.4 | 2022-05-01, 2023-04-01, 2024-11-01, 2025-05-15-preview, 2025-11-15-preview (default) |1.0.0-beta.3 | 2022-05-01, 2023-04-01, 2024-11-01, 2024-11-15-preview, 2025-05-15-preview (default) |1.0.0-beta.2 | 2022-05-01, 2023-04-01, 2024-11-01, 2024-11-15-preview (default) |1.0.0-beta.1 | 2022-05-01, 2023-04-01, 2023-11-15-preview (default) diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/api/Azure.AI.Language.Text.net8.0.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/api/Azure.AI.Language.Text.net8.0.cs index d9ae893c97fc..65f5e995132c 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/api/Azure.AI.Language.Text.net8.0.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/api/Azure.AI.Language.Text.net8.0.cs @@ -79,6 +79,22 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } } + public partial class AddressMetadata : Azure.AI.Language.Text.BaseMetadata, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + { + internal AddressMetadata() { } + public System.Collections.Generic.IReadOnlyList AddressLines { get { throw null; } } + public string City { get { throw null; } } + public string CountryOrRegion { get { throw null; } } + public string FormatedAddress { get { throw null; } } + public string PostalCode { get { throw null; } } + public string State { get { throw null; } } + protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.AddressMetadata System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.AddressMetadata System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + } public partial class AgeMetadata : Azure.AI.Language.Text.BaseMetadata, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { internal AgeMetadata() { } @@ -361,6 +377,9 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public abstract partial class BaseRedactionPolicy : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { protected BaseRedactionPolicy() { } + public System.Collections.Generic.IList EntityTypes { get { throw null; } } + public bool? IsDefault { get { throw null; } set { } } + public string PolicyName { get { throw null; } set { } } protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } Azure.AI.Language.Text.BaseRedactionPolicy System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } @@ -372,6 +391,8 @@ public partial class CharacterMaskPolicyType : Azure.AI.Language.Text.BaseRedact { public CharacterMaskPolicyType() { } public Azure.AI.Language.Text.RedactionCharacter? RedactionCharacter { get { throw null; } set { } } + public bool? UnmaskFromEnd { get { throw null; } set { } } + public int? UnmaskLength { get { throw null; } set { } } protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } Azure.AI.Language.Text.CharacterMaskPolicyType System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } @@ -406,6 +427,31 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } } + public partial class ConfidenceScoreThreshold : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + { + public ConfidenceScoreThreshold(float @default) { } + public float Default { get { throw null; } } + public System.Collections.Generic.IList Overrides { get { throw null; } } + protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.ConfidenceScoreThreshold System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.ConfidenceScoreThreshold System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + } + public partial class ConfidenceScoreThresholdOverride : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + { + public ConfidenceScoreThresholdOverride(Azure.AI.Language.Text.PiiCategoriesExclude entity, float value) { } + public Azure.AI.Language.Text.PiiCategoriesExclude Entity { get { throw null; } } + public string Language { get { throw null; } set { } } + public float Value { get { throw null; } } + protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.ConfidenceScoreThresholdOverride System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.ConfidenceScoreThresholdOverride System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + } public partial class CurrencyMetadata : Azure.AI.Language.Text.BaseMetadata, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { internal CurrencyMetadata() { } @@ -1757,13 +1803,15 @@ protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter write public partial class PiiActionContent : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { public PiiActionContent() { } + public Azure.AI.Language.Text.ConfidenceScoreThreshold ConfidenceScoreThreshold { get { throw null; } set { } } + public bool? DisableEntityValidation { get { throw null; } set { } } public Azure.AI.Language.Text.PiiDomain? Domain { get { throw null; } set { } } public System.Collections.Generic.IList EntitySynonyms { get { throw null; } } public System.Collections.Generic.IList ExcludePiiCategories { get { throw null; } } public bool? LoggingOptOut { get { throw null; } set { } } public string ModelVersion { get { throw null; } set { } } public System.Collections.Generic.IList PiiCategories { get { throw null; } } - public Azure.AI.Language.Text.BaseRedactionPolicy RedactionPolicy { get { throw null; } set { } } + public System.Collections.Generic.IList RedactionPolicies { get { throw null; } } public Azure.AI.Language.Text.StringIndexType? StringIndexType { get { throw null; } set { } } public Azure.AI.Language.Text.ValueExclusionPolicy ValueExclusionPolicy { get { throw null; } set { } } protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } @@ -1798,6 +1846,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude AbaRoutingNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Address { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Age { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude Airport { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ArNationalIdentityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude AtIdentityCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude AtTaxIdentificationNumber { get { throw null; } } @@ -1831,11 +1880,14 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude CaHealthServiceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CaPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CaPersonalHealthIdentification { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude CASocialIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CaSocialInsuranceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ChSocialSecurityNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude City { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ClIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CnResidentIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CreditCardNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude CVV { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CyIdentityCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CyTaxIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CzPersonalIdentityNumber { get { throw null; } } @@ -1863,6 +1915,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude EuPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude EuSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude EuTaxIdentificationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude ExpirationDate { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FiEuropeanHealthNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FiNationalId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FiNationalIdV2 { get { throw null; } } @@ -1874,6 +1927,8 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude FrSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FrTaxIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FrValueAddedTaxNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude GovernmentIssuedId { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude GPE { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude GrNationalIdCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude GrNationalIdV2 { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude GrTaxIdentificationNumber { get { throw null; } } @@ -1905,15 +1960,21 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude JpResidenceCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude JpResidentRegistrationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude JpSocialInsuranceNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude KRDriversLicenseNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude KRPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude KrResidentRegistrationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude KRSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LicensePlate { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude Location { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LtPersonalCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LuNationalIdentificationNumberNatural { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LuNationalIdentificationNumberNonNatural { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LvPersonalCode { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude MedicareBeneficiaryId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude MtIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude MtTaxIdNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude MyIdentityCardNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude NationalId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Neighborhood { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude NlCitizensServiceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude NlCitizensServiceNumberV2 { get { throw null; } } @@ -1927,6 +1988,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude NzSocialWelfareNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Organization { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude PassportNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude Password { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Person { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude PhoneNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude PhUnifiedMultiPurposeIdNumber { get { throw null; } } @@ -1954,6 +2016,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude SkPersonalNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude SortCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude SqlServerConnectionString { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude State { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude SwiftCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ThPopulationIdentificationCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude TrNationalIdentificationNumber { get { throw null; } } @@ -1973,8 +2036,10 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude UsIndividualTaxpayerIdentification { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude UsSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude UsUkPassportNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude VehicleIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude VIN { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ZaIdentificationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude ZipCode { get { throw null; } } public bool Equals(Azure.AI.Language.Text.PiiCategoriesExclude other) { throw null; } [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] public override bool Equals(object obj) { throw null; } @@ -1994,6 +2059,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory AbaRoutingNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Address { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Age { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory Airport { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory All { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ArNationalIdentityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory AtIdentityCard { get { throw null; } } @@ -2028,11 +2094,14 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory CaHealthServiceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CaPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CaPersonalHealthIdentification { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory CASocialIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CaSocialInsuranceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ChSocialSecurityNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory City { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ClIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CnResidentIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CreditCardNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory CVV { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CyIdentityCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CyTaxIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CzPersonalIdentityNumber { get { throw null; } } @@ -2061,6 +2130,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory EuPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory EuSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory EuTaxIdentificationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory ExpirationDate { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FiEuropeanHealthNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FiNationalId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FiNationalIdV2 { get { throw null; } } @@ -2072,6 +2142,8 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory FrSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FrTaxIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FrValueAddedTaxNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory GovernmentIssuedId { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory GPE { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory GrNationalIdCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory GrNationalIdV2 { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory GrTaxIdentificationNumber { get { throw null; } } @@ -2103,15 +2175,21 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory JpResidenceCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory JpResidentRegistrationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory JpSocialInsuranceNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory KRDriversLicenseNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory KRPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory KrResidentRegistrationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory KRSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LicensePlate { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory Location { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LtPersonalCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LuNationalIdentificationNumberNatural { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LuNationalIdentificationNumberNonNatural { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LvPersonalCode { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory MedicareBeneficiaryId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory MtIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory MtTaxIdNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory MyIdentityCardNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory NationalId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Neighborhood { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory NlCitizensServiceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory NlCitizensServiceNumberV2 { get { throw null; } } @@ -2125,6 +2203,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory NzSocialWelfareNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Organization { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory PassportNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory Password { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Person { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory PhoneNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory PhUnifiedMultiPurposeIdNumber { get { throw null; } } @@ -2152,6 +2231,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory SkPersonalNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory SortCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory SqlServerConnectionString { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory State { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory SwiftCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ThPopulationIdentificationCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory TrNationalIdentificationNumber { get { throw null; } } @@ -2171,8 +2251,10 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory UsIndividualTaxpayerIdentification { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory UsSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory UsUkPassportNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory VehicleIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory VIN { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ZaIdentificationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory ZipCode { get { throw null; } } public bool Equals(Azure.AI.Language.Text.PiiCategory other) { throw null; } [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] public override bool Equals(object obj) { throw null; } @@ -2607,7 +2689,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public partial class SentimentAnalysisOperationAction : Azure.AI.Language.Text.AnalyzeTextOperationAction, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { public SentimentAnalysisOperationAction() { } - public Azure.AI.Language.Text.SentimentAnalysisActionContent ActionContent { get { throw null; } set { } } + public Azure.AI.Language.Text.SentimentAnalysisActionContent Parameters { get { throw null; } set { } } protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } Azure.AI.Language.Text.SentimentAnalysisOperationAction System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } @@ -2628,16 +2710,16 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } } - public partial class SentimentOperationResult : Azure.AI.Language.Text.AnalyzeTextOperationResult, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + public partial class SentimentLROResult : Azure.AI.Language.Text.AnalyzeTextOperationResult, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { - internal SentimentOperationResult() : base (default(System.DateTimeOffset), default(Azure.AI.Language.Text.TextActionState)) { } + internal SentimentLROResult() : base (default(System.DateTimeOffset), default(Azure.AI.Language.Text.TextActionState)) { } public Azure.AI.Language.Text.SentimentResult Results { get { throw null; } } protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } - Azure.AI.Language.Text.SentimentOperationResult System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } - void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } - Azure.AI.Language.Text.SentimentOperationResult System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } - string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } - System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + Azure.AI.Language.Text.SentimentLROResult System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.SentimentLROResult System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } } public partial class SentimentResult : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { @@ -2745,6 +2827,17 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static bool operator !=(Azure.AI.Language.Text.SummaryLengthBucket left, Azure.AI.Language.Text.SummaryLengthBucket right) { throw null; } public override string ToString() { throw null; } } + public partial class SyntheticReplacementPolicyType : Azure.AI.Language.Text.BaseRedactionPolicy, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + { + public SyntheticReplacementPolicyType() { } + public bool? PreserveDataFormat { get { throw null; } set { } } + protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.SyntheticReplacementPolicyType System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.SyntheticReplacementPolicyType System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + } public partial class TargetConfidenceScoreLabel : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { internal TargetConfidenceScoreLabel() { } @@ -2950,14 +3043,15 @@ public static partial class TextAnalysisClientBuilderExtensions } public partial class TextAnalysisClientOptions : Azure.Core.ClientOptions { - public TextAnalysisClientOptions(Azure.AI.Language.Text.TextAnalysisClientOptions.ServiceVersion version = Azure.AI.Language.Text.TextAnalysisClientOptions.ServiceVersion.V2025_05_15_Preview) { } + public TextAnalysisClientOptions(Azure.AI.Language.Text.TextAnalysisClientOptions.ServiceVersion version = Azure.AI.Language.Text.TextAnalysisClientOptions.ServiceVersion.V2025_11_15_Preview) { } public enum ServiceVersion { V2022_05_01 = 1, V2023_04_01 = 2, V2024_11_01 = 3, - V2024_11_15_Preview = 4, + V2025_11_01 = 4, V2025_05_15_Preview = 5, + V2025_11_15_Preview = 6, } } public static partial class TextAnalysisModelFactory @@ -2966,6 +3060,7 @@ public static partial class TextAnalysisModelFactory public static Azure.AI.Language.Text.AbstractiveSummarizationResult AbstractiveSummarizationResult(System.Collections.Generic.IEnumerable errors = null, Azure.AI.Language.Text.RequestStatistics statistics = null, string modelVersion = null, System.Collections.Generic.IEnumerable documents = null) { throw null; } public static Azure.AI.Language.Text.AbstractiveSummary AbstractiveSummary(string text = null, System.Collections.Generic.IEnumerable contexts = null) { throw null; } public static Azure.AI.Language.Text.AbstractiveSummaryActionResult AbstractiveSummaryActionResult(string id = null, System.Collections.Generic.IEnumerable warnings = null, Azure.AI.Language.Text.DocumentStatistics statistics = null, System.Collections.Generic.IEnumerable summaries = null, Azure.AI.Language.Text.DetectedLanguage detectedLanguage = null) { throw null; } + public static Azure.AI.Language.Text.AddressMetadata AddressMetadata(string formatedAddress = null, System.Collections.Generic.IEnumerable addressLines = null, string city = null, string state = null, string postalCode = null, string countryOrRegion = null) { throw null; } public static Azure.AI.Language.Text.AgeMetadata AgeMetadata(double value = 0, Azure.AI.Language.Text.AgeUnit unit = default(Azure.AI.Language.Text.AgeUnit)) { throw null; } public static Azure.AI.Language.Text.AnalyzeTextEntitiesResult AnalyzeTextEntitiesResult(Azure.AI.Language.Text.EntitiesWithMetadataAutoResult results = null) { throw null; } public static Azure.AI.Language.Text.AnalyzeTextEntityLinkingResult AnalyzeTextEntityLinkingResult(Azure.AI.Language.Text.EntityLinkingResult results = null) { throw null; } @@ -2979,6 +3074,8 @@ public static partial class TextAnalysisModelFactory public static Azure.AI.Language.Text.AreaMetadata AreaMetadata(double value = 0, Azure.AI.Language.Text.AreaUnit unit = default(Azure.AI.Language.Text.AreaUnit)) { throw null; } public static Azure.AI.Language.Text.ClassificationActionResult ClassificationActionResult(string id = null, System.Collections.Generic.IEnumerable warnings = null, Azure.AI.Language.Text.DocumentStatistics statistics = null, System.Collections.Generic.IEnumerable @class = null, Azure.AI.Language.Text.DetectedLanguage detectedLanguage = null) { throw null; } public static Azure.AI.Language.Text.ClassificationResult ClassificationResult(string category = null, double confidenceScore = 0) { throw null; } + public static Azure.AI.Language.Text.ConfidenceScoreThreshold ConfidenceScoreThreshold(float @default = 0f, System.Collections.Generic.IEnumerable overrides = null) { throw null; } + public static Azure.AI.Language.Text.ConfidenceScoreThresholdOverride ConfidenceScoreThresholdOverride(Azure.AI.Language.Text.PiiCategoriesExclude entity = default(Azure.AI.Language.Text.PiiCategoriesExclude), float value = 0f, string language = null) { throw null; } public static Azure.AI.Language.Text.CurrencyMetadata CurrencyMetadata(double value = 0, string unit = null, string iso4217 = null) { throw null; } public static Azure.AI.Language.Text.CustomEntitiesActionContent CustomEntitiesActionContent(bool? loggingOptOut = default(bool?), string projectName = null, string deploymentName = null, Azure.AI.Language.Text.StringIndexType? stringIndexType = default(Azure.AI.Language.Text.StringIndexType?)) { throw null; } public static Azure.AI.Language.Text.CustomEntitiesResult CustomEntitiesResult(System.Collections.Generic.IEnumerable errors = null, Azure.AI.Language.Text.RequestStatistics statistics = null, string projectName = null, string deploymentName = null, System.Collections.Generic.IEnumerable documents = null) { throw null; } @@ -3046,7 +3143,7 @@ public static partial class TextAnalysisModelFactory public static Azure.AI.Language.Text.SentenceTarget SentenceTarget(Azure.AI.Language.Text.TokenSentiment sentiment = Azure.AI.Language.Text.TokenSentiment.Positive, Azure.AI.Language.Text.TargetConfidenceScoreLabel confidenceScores = null, int offset = 0, int length = 0, string text = null, System.Collections.Generic.IEnumerable relations = null) { throw null; } public static Azure.AI.Language.Text.SentimentActionResult SentimentActionResult(string id = null, System.Collections.Generic.IEnumerable warnings = null, Azure.AI.Language.Text.DocumentStatistics statistics = null, Azure.AI.Language.Text.DocumentSentiment sentiment = Azure.AI.Language.Text.DocumentSentiment.Positive, Azure.AI.Language.Text.SentimentConfidenceScores confidenceScores = null, System.Collections.Generic.IEnumerable sentences = null, Azure.AI.Language.Text.DetectedLanguage detectedLanguage = null) { throw null; } public static Azure.AI.Language.Text.SentimentConfidenceScores SentimentConfidenceScores(double positive = 0, double neutral = 0, double negative = 0) { throw null; } - public static Azure.AI.Language.Text.SentimentOperationResult SentimentOperationResult(System.DateTimeOffset lastUpdateDateTime = default(System.DateTimeOffset), Azure.AI.Language.Text.TextActionState status = default(Azure.AI.Language.Text.TextActionState), string name = null, Azure.AI.Language.Text.SentimentResult results = null) { throw null; } + public static Azure.AI.Language.Text.SentimentLROResult SentimentLROResult(System.DateTimeOffset lastUpdateDateTime = default(System.DateTimeOffset), Azure.AI.Language.Text.TextActionState status = default(Azure.AI.Language.Text.TextActionState), string name = null, Azure.AI.Language.Text.SentimentResult results = null) { throw null; } public static Azure.AI.Language.Text.SentimentResult SentimentResult(System.Collections.Generic.IEnumerable errors = null, Azure.AI.Language.Text.RequestStatistics statistics = null, string modelVersion = null, System.Collections.Generic.IEnumerable documents = null) { throw null; } public static Azure.AI.Language.Text.SpeedMetadata SpeedMetadata(double value = 0, Azure.AI.Language.Text.SpeedUnit unit = default(Azure.AI.Language.Text.SpeedUnit)) { throw null; } public static Azure.AI.Language.Text.SummaryContext SummaryContext(int offset = 0, int length = 0) { throw null; } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/api/Azure.AI.Language.Text.netstandard2.0.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/api/Azure.AI.Language.Text.netstandard2.0.cs index 8f7c0820a154..c0ffcd2d19b7 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/api/Azure.AI.Language.Text.netstandard2.0.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/api/Azure.AI.Language.Text.netstandard2.0.cs @@ -79,6 +79,22 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } } + public partial class AddressMetadata : Azure.AI.Language.Text.BaseMetadata, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + { + internal AddressMetadata() { } + public System.Collections.Generic.IReadOnlyList AddressLines { get { throw null; } } + public string City { get { throw null; } } + public string CountryOrRegion { get { throw null; } } + public string FormatedAddress { get { throw null; } } + public string PostalCode { get { throw null; } } + public string State { get { throw null; } } + protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.AddressMetadata System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.AddressMetadata System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + } public partial class AgeMetadata : Azure.AI.Language.Text.BaseMetadata, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { internal AgeMetadata() { } @@ -361,6 +377,9 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public abstract partial class BaseRedactionPolicy : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { protected BaseRedactionPolicy() { } + public System.Collections.Generic.IList EntityTypes { get { throw null; } } + public bool? IsDefault { get { throw null; } set { } } + public string PolicyName { get { throw null; } set { } } protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } Azure.AI.Language.Text.BaseRedactionPolicy System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } @@ -372,6 +391,8 @@ public partial class CharacterMaskPolicyType : Azure.AI.Language.Text.BaseRedact { public CharacterMaskPolicyType() { } public Azure.AI.Language.Text.RedactionCharacter? RedactionCharacter { get { throw null; } set { } } + public bool? UnmaskFromEnd { get { throw null; } set { } } + public int? UnmaskLength { get { throw null; } set { } } protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } Azure.AI.Language.Text.CharacterMaskPolicyType System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } @@ -406,6 +427,31 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } } + public partial class ConfidenceScoreThreshold : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + { + public ConfidenceScoreThreshold(float @default) { } + public float Default { get { throw null; } } + public System.Collections.Generic.IList Overrides { get { throw null; } } + protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.ConfidenceScoreThreshold System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.ConfidenceScoreThreshold System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + } + public partial class ConfidenceScoreThresholdOverride : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + { + public ConfidenceScoreThresholdOverride(Azure.AI.Language.Text.PiiCategoriesExclude entity, float value) { } + public Azure.AI.Language.Text.PiiCategoriesExclude Entity { get { throw null; } } + public string Language { get { throw null; } set { } } + public float Value { get { throw null; } } + protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.ConfidenceScoreThresholdOverride System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.ConfidenceScoreThresholdOverride System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + } public partial class CurrencyMetadata : Azure.AI.Language.Text.BaseMetadata, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { internal CurrencyMetadata() { } @@ -1757,13 +1803,15 @@ protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter write public partial class PiiActionContent : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { public PiiActionContent() { } + public Azure.AI.Language.Text.ConfidenceScoreThreshold ConfidenceScoreThreshold { get { throw null; } set { } } + public bool? DisableEntityValidation { get { throw null; } set { } } public Azure.AI.Language.Text.PiiDomain? Domain { get { throw null; } set { } } public System.Collections.Generic.IList EntitySynonyms { get { throw null; } } public System.Collections.Generic.IList ExcludePiiCategories { get { throw null; } } public bool? LoggingOptOut { get { throw null; } set { } } public string ModelVersion { get { throw null; } set { } } public System.Collections.Generic.IList PiiCategories { get { throw null; } } - public Azure.AI.Language.Text.BaseRedactionPolicy RedactionPolicy { get { throw null; } set { } } + public System.Collections.Generic.IList RedactionPolicies { get { throw null; } } public Azure.AI.Language.Text.StringIndexType? StringIndexType { get { throw null; } set { } } public Azure.AI.Language.Text.ValueExclusionPolicy ValueExclusionPolicy { get { throw null; } set { } } protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } @@ -1798,6 +1846,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude AbaRoutingNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Address { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Age { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude Airport { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ArNationalIdentityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude AtIdentityCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude AtTaxIdentificationNumber { get { throw null; } } @@ -1831,11 +1880,14 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude CaHealthServiceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CaPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CaPersonalHealthIdentification { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude CASocialIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CaSocialInsuranceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ChSocialSecurityNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude City { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ClIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CnResidentIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CreditCardNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude CVV { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CyIdentityCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CyTaxIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude CzPersonalIdentityNumber { get { throw null; } } @@ -1863,6 +1915,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude EuPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude EuSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude EuTaxIdentificationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude ExpirationDate { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FiEuropeanHealthNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FiNationalId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FiNationalIdV2 { get { throw null; } } @@ -1874,6 +1927,8 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude FrSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FrTaxIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude FrValueAddedTaxNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude GovernmentIssuedId { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude GPE { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude GrNationalIdCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude GrNationalIdV2 { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude GrTaxIdentificationNumber { get { throw null; } } @@ -1905,15 +1960,21 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude JpResidenceCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude JpResidentRegistrationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude JpSocialInsuranceNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude KRDriversLicenseNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude KRPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude KrResidentRegistrationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude KRSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LicensePlate { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude Location { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LtPersonalCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LuNationalIdentificationNumberNatural { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LuNationalIdentificationNumberNonNatural { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude LvPersonalCode { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude MedicareBeneficiaryId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude MtIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude MtTaxIdNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude MyIdentityCardNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude NationalId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Neighborhood { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude NlCitizensServiceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude NlCitizensServiceNumberV2 { get { throw null; } } @@ -1927,6 +1988,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude NzSocialWelfareNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Organization { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude PassportNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude Password { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude Person { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude PhoneNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude PhUnifiedMultiPurposeIdNumber { get { throw null; } } @@ -1954,6 +2016,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude SkPersonalNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude SortCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude SqlServerConnectionString { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude State { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude SwiftCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ThPopulationIdentificationCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude TrNationalIdentificationNumber { get { throw null; } } @@ -1973,8 +2036,10 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategoriesExclude UsIndividualTaxpayerIdentification { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude UsSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude UsUkPassportNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude VehicleIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude VIN { get { throw null; } } public static Azure.AI.Language.Text.PiiCategoriesExclude ZaIdentificationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategoriesExclude ZipCode { get { throw null; } } public bool Equals(Azure.AI.Language.Text.PiiCategoriesExclude other) { throw null; } [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] public override bool Equals(object obj) { throw null; } @@ -1994,6 +2059,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory AbaRoutingNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Address { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Age { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory Airport { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory All { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ArNationalIdentityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory AtIdentityCard { get { throw null; } } @@ -2028,11 +2094,14 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory CaHealthServiceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CaPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CaPersonalHealthIdentification { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory CASocialIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CaSocialInsuranceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ChSocialSecurityNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory City { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ClIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CnResidentIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CreditCardNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory CVV { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CyIdentityCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CyTaxIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory CzPersonalIdentityNumber { get { throw null; } } @@ -2061,6 +2130,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory EuPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory EuSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory EuTaxIdentificationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory ExpirationDate { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FiEuropeanHealthNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FiNationalId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FiNationalIdV2 { get { throw null; } } @@ -2072,6 +2142,8 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory FrSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FrTaxIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory FrValueAddedTaxNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory GovernmentIssuedId { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory GPE { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory GrNationalIdCard { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory GrNationalIdV2 { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory GrTaxIdentificationNumber { get { throw null; } } @@ -2103,15 +2175,21 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory JpResidenceCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory JpResidentRegistrationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory JpSocialInsuranceNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory KRDriversLicenseNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory KRPassportNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory KrResidentRegistrationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory KRSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LicensePlate { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory Location { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LtPersonalCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LuNationalIdentificationNumberNatural { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LuNationalIdentificationNumberNonNatural { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory LvPersonalCode { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory MedicareBeneficiaryId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory MtIdentityCardNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory MtTaxIdNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory MyIdentityCardNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory NationalId { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Neighborhood { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory NlCitizensServiceNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory NlCitizensServiceNumberV2 { get { throw null; } } @@ -2125,6 +2203,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory NzSocialWelfareNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Organization { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory PassportNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory Password { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory Person { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory PhoneNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory PhUnifiedMultiPurposeIdNumber { get { throw null; } } @@ -2152,6 +2231,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory SkPersonalNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory SortCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory SqlServerConnectionString { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory State { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory SwiftCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ThPopulationIdentificationCode { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory TrNationalIdentificationNumber { get { throw null; } } @@ -2171,8 +2251,10 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static Azure.AI.Language.Text.PiiCategory UsIndividualTaxpayerIdentification { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory UsSocialSecurityNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory UsUkPassportNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory VehicleIdentificationNumber { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory VIN { get { throw null; } } public static Azure.AI.Language.Text.PiiCategory ZaIdentificationNumber { get { throw null; } } + public static Azure.AI.Language.Text.PiiCategory ZipCode { get { throw null; } } public bool Equals(Azure.AI.Language.Text.PiiCategory other) { throw null; } [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] public override bool Equals(object obj) { throw null; } @@ -2607,7 +2689,7 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public partial class SentimentAnalysisOperationAction : Azure.AI.Language.Text.AnalyzeTextOperationAction, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { public SentimentAnalysisOperationAction() { } - public Azure.AI.Language.Text.SentimentAnalysisActionContent ActionContent { get { throw null; } set { } } + public Azure.AI.Language.Text.SentimentAnalysisActionContent Parameters { get { throw null; } set { } } protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } Azure.AI.Language.Text.SentimentAnalysisOperationAction System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } @@ -2628,16 +2710,16 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } } - public partial class SentimentOperationResult : Azure.AI.Language.Text.AnalyzeTextOperationResult, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + public partial class SentimentLROResult : Azure.AI.Language.Text.AnalyzeTextOperationResult, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { - internal SentimentOperationResult() : base (default(System.DateTimeOffset), default(Azure.AI.Language.Text.TextActionState)) { } + internal SentimentLROResult() : base (default(System.DateTimeOffset), default(Azure.AI.Language.Text.TextActionState)) { } public Azure.AI.Language.Text.SentimentResult Results { get { throw null; } } protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } - Azure.AI.Language.Text.SentimentOperationResult System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } - void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } - Azure.AI.Language.Text.SentimentOperationResult System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } - string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } - System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + Azure.AI.Language.Text.SentimentLROResult System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.SentimentLROResult System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } } public partial class SentimentResult : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { @@ -2745,6 +2827,17 @@ protected virtual void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer public static bool operator !=(Azure.AI.Language.Text.SummaryLengthBucket left, Azure.AI.Language.Text.SummaryLengthBucket right) { throw null; } public override string ToString() { throw null; } } + public partial class SyntheticReplacementPolicyType : Azure.AI.Language.Text.BaseRedactionPolicy, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel + { + public SyntheticReplacementPolicyType() { } + public bool? PreserveDataFormat { get { throw null; } set { } } + protected override void JsonModelWriteCore(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.SyntheticReplacementPolicyType System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { } + Azure.AI.Language.Text.SyntheticReplacementPolicyType System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; } + } public partial class TargetConfidenceScoreLabel : System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel { internal TargetConfidenceScoreLabel() { } @@ -2949,14 +3042,15 @@ public static partial class TextAnalysisClientBuilderExtensions } public partial class TextAnalysisClientOptions : Azure.Core.ClientOptions { - public TextAnalysisClientOptions(Azure.AI.Language.Text.TextAnalysisClientOptions.ServiceVersion version = Azure.AI.Language.Text.TextAnalysisClientOptions.ServiceVersion.V2025_05_15_Preview) { } + public TextAnalysisClientOptions(Azure.AI.Language.Text.TextAnalysisClientOptions.ServiceVersion version = Azure.AI.Language.Text.TextAnalysisClientOptions.ServiceVersion.V2025_11_15_Preview) { } public enum ServiceVersion { V2022_05_01 = 1, V2023_04_01 = 2, V2024_11_01 = 3, - V2024_11_15_Preview = 4, + V2025_11_01 = 4, V2025_05_15_Preview = 5, + V2025_11_15_Preview = 6, } } public static partial class TextAnalysisModelFactory @@ -2965,6 +3059,7 @@ public static partial class TextAnalysisModelFactory public static Azure.AI.Language.Text.AbstractiveSummarizationResult AbstractiveSummarizationResult(System.Collections.Generic.IEnumerable errors = null, Azure.AI.Language.Text.RequestStatistics statistics = null, string modelVersion = null, System.Collections.Generic.IEnumerable documents = null) { throw null; } public static Azure.AI.Language.Text.AbstractiveSummary AbstractiveSummary(string text = null, System.Collections.Generic.IEnumerable contexts = null) { throw null; } public static Azure.AI.Language.Text.AbstractiveSummaryActionResult AbstractiveSummaryActionResult(string id = null, System.Collections.Generic.IEnumerable warnings = null, Azure.AI.Language.Text.DocumentStatistics statistics = null, System.Collections.Generic.IEnumerable summaries = null, Azure.AI.Language.Text.DetectedLanguage detectedLanguage = null) { throw null; } + public static Azure.AI.Language.Text.AddressMetadata AddressMetadata(string formatedAddress = null, System.Collections.Generic.IEnumerable addressLines = null, string city = null, string state = null, string postalCode = null, string countryOrRegion = null) { throw null; } public static Azure.AI.Language.Text.AgeMetadata AgeMetadata(double value = 0, Azure.AI.Language.Text.AgeUnit unit = default(Azure.AI.Language.Text.AgeUnit)) { throw null; } public static Azure.AI.Language.Text.AnalyzeTextEntitiesResult AnalyzeTextEntitiesResult(Azure.AI.Language.Text.EntitiesWithMetadataAutoResult results = null) { throw null; } public static Azure.AI.Language.Text.AnalyzeTextEntityLinkingResult AnalyzeTextEntityLinkingResult(Azure.AI.Language.Text.EntityLinkingResult results = null) { throw null; } @@ -2978,6 +3073,8 @@ public static partial class TextAnalysisModelFactory public static Azure.AI.Language.Text.AreaMetadata AreaMetadata(double value = 0, Azure.AI.Language.Text.AreaUnit unit = default(Azure.AI.Language.Text.AreaUnit)) { throw null; } public static Azure.AI.Language.Text.ClassificationActionResult ClassificationActionResult(string id = null, System.Collections.Generic.IEnumerable warnings = null, Azure.AI.Language.Text.DocumentStatistics statistics = null, System.Collections.Generic.IEnumerable @class = null, Azure.AI.Language.Text.DetectedLanguage detectedLanguage = null) { throw null; } public static Azure.AI.Language.Text.ClassificationResult ClassificationResult(string category = null, double confidenceScore = 0) { throw null; } + public static Azure.AI.Language.Text.ConfidenceScoreThreshold ConfidenceScoreThreshold(float @default = 0f, System.Collections.Generic.IEnumerable overrides = null) { throw null; } + public static Azure.AI.Language.Text.ConfidenceScoreThresholdOverride ConfidenceScoreThresholdOverride(Azure.AI.Language.Text.PiiCategoriesExclude entity = default(Azure.AI.Language.Text.PiiCategoriesExclude), float value = 0f, string language = null) { throw null; } public static Azure.AI.Language.Text.CurrencyMetadata CurrencyMetadata(double value = 0, string unit = null, string iso4217 = null) { throw null; } public static Azure.AI.Language.Text.CustomEntitiesActionContent CustomEntitiesActionContent(bool? loggingOptOut = default(bool?), string projectName = null, string deploymentName = null, Azure.AI.Language.Text.StringIndexType? stringIndexType = default(Azure.AI.Language.Text.StringIndexType?)) { throw null; } public static Azure.AI.Language.Text.CustomEntitiesResult CustomEntitiesResult(System.Collections.Generic.IEnumerable errors = null, Azure.AI.Language.Text.RequestStatistics statistics = null, string projectName = null, string deploymentName = null, System.Collections.Generic.IEnumerable documents = null) { throw null; } @@ -3045,7 +3142,7 @@ public static partial class TextAnalysisModelFactory public static Azure.AI.Language.Text.SentenceTarget SentenceTarget(Azure.AI.Language.Text.TokenSentiment sentiment = Azure.AI.Language.Text.TokenSentiment.Positive, Azure.AI.Language.Text.TargetConfidenceScoreLabel confidenceScores = null, int offset = 0, int length = 0, string text = null, System.Collections.Generic.IEnumerable relations = null) { throw null; } public static Azure.AI.Language.Text.SentimentActionResult SentimentActionResult(string id = null, System.Collections.Generic.IEnumerable warnings = null, Azure.AI.Language.Text.DocumentStatistics statistics = null, Azure.AI.Language.Text.DocumentSentiment sentiment = Azure.AI.Language.Text.DocumentSentiment.Positive, Azure.AI.Language.Text.SentimentConfidenceScores confidenceScores = null, System.Collections.Generic.IEnumerable sentences = null, Azure.AI.Language.Text.DetectedLanguage detectedLanguage = null) { throw null; } public static Azure.AI.Language.Text.SentimentConfidenceScores SentimentConfidenceScores(double positive = 0, double neutral = 0, double negative = 0) { throw null; } - public static Azure.AI.Language.Text.SentimentOperationResult SentimentOperationResult(System.DateTimeOffset lastUpdateDateTime = default(System.DateTimeOffset), Azure.AI.Language.Text.TextActionState status = default(Azure.AI.Language.Text.TextActionState), string name = null, Azure.AI.Language.Text.SentimentResult results = null) { throw null; } + public static Azure.AI.Language.Text.SentimentLROResult SentimentLROResult(System.DateTimeOffset lastUpdateDateTime = default(System.DateTimeOffset), Azure.AI.Language.Text.TextActionState status = default(Azure.AI.Language.Text.TextActionState), string name = null, Azure.AI.Language.Text.SentimentResult results = null) { throw null; } public static Azure.AI.Language.Text.SentimentResult SentimentResult(System.Collections.Generic.IEnumerable errors = null, Azure.AI.Language.Text.RequestStatistics statistics = null, string modelVersion = null, System.Collections.Generic.IEnumerable documents = null) { throw null; } public static Azure.AI.Language.Text.SpeedMetadata SpeedMetadata(double value = 0, Azure.AI.Language.Text.SpeedUnit unit = default(Azure.AI.Language.Text.SpeedUnit)) { throw null; } public static Azure.AI.Language.Text.SummaryContext SummaryContext(int offset = 0, int length = 0) { throw null; } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/assets.json b/sdk/cognitivelanguage/Azure.AI.Language.Text/assets.json index cad5e3cbc4cb..dc8511dc97b8 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/assets.json +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "net", "TagPrefix": "net/cognitivelanguage/Azure.AI.Language.Text", - "Tag": "net/cognitivelanguage/Azure.AI.Language.Text_66a454ef6f" + "Tag": "net/cognitivelanguage/Azure.AI.Language.Text_48cbf61c49" } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample1_AnalyzeTextAsync_LanguageDetection.md b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample1_AnalyzeTextAsync_LanguageDetection.md index 9e453ae739f9..3a451c90657f 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample1_AnalyzeTextAsync_LanguageDetection.md +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample1_AnalyzeTextAsync_LanguageDetection.md @@ -17,7 +17,7 @@ The values of the `endpoint` and `apiKey` variables can be retrieved from enviro ## Detect the language of documents -To detect the language of a document, call `AnalyzeText` on the `TextAnalysisClient`, which returns a `AnalyzeTextLanguageDetectionResult` object with the name of the language, a confidence score, and more. +To detect the language of a document, call `AnalyzeTextAsync` on the `TextAnalysisClient`, which returns a `AnalyzeTextLanguageDetectionResult` object with the name of the language, a confidence score, and more. ```C# Snippet:Sample1_AnalyzeTextAsync_LanguageDetection string textA = @@ -81,11 +81,11 @@ catch (RequestFailedException exception) } ``` -To detect the language of a document, call `AnalyzeText` on the `TextAnalysisClient`, which returns a `AnalyzeTextLanguageDetectionResult` object with the name of the language, a confidence score, and more. +To detect the language of a document, call `AnalyzeTextAsync` on the `TextAnalysisClient`, which returns a `AnalyzeTextLanguageDetectionResult` object with the name of the language, a confidence score, and more. ## Detect the language of documents with country hints -If the country where a document originates from is known, you can aid the language detection model if you call `AnalyzeText` on the `TextAnalysisClient` while passing the documents as an `IEnumerable` parameter, having set the `CountryHint` property on each `LanguageInput` object accordingly. +If the country where a document originates from is known, you can aid the language detection model if you call `AnalyzeTextAsync` on the `TextAnalysisClient` while passing the documents as an `IEnumerable` parameter, having set the `CountryHint` property on each `LanguageInput` object accordingly. ```C# Snippet:Sample1_AnalyzeTextAsync_LanguageDetection_CountryHint string textA = diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample3_AnalyzeTextAsync_ExtractKeyPhrases.md b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample3_AnalyzeTextAsync_ExtractKeyPhrases.md index 351f043fbe88..05b40208d475 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample3_AnalyzeTextAsync_ExtractKeyPhrases.md +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample3_AnalyzeTextAsync_ExtractKeyPhrases.md @@ -17,7 +17,7 @@ The values of the `endpoint` and `apiKey` variables can be retrieved from enviro ## Extracting key phrases from multiple documents -To extract key phrases from multiple documents, call `AnalyzeText` on an `AnalyzeTextInput`. The results are returned as a `AnalyzeTextKeyPhraseResult`. +To extract key phrases from multiple documents, call `AnalyzeTextAsync` on an `AnalyzeTextInput`. The results are returned as a `AnalyzeTextKeyPhraseResult`. ```C# Snippet:Sample3_AnalyzeTextAsync_ExtractKeyPhrases string textA = diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample4_AnalyzeTextAsync_RecognizeEntities.md b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample4_AnalyzeTextAsync_RecognizeEntities.md index 0fbcf1f24e99..37fe1880bb47 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample4_AnalyzeTextAsync_RecognizeEntities.md +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample4_AnalyzeTextAsync_RecognizeEntities.md @@ -17,7 +17,7 @@ The values of the `endpoint` and `apiKey` variables can be retrieved from enviro ## Recognize entities in multiple documents -To recognize entities in multiple documents, call `AnalyzeText` on the `TextAnalysisClient` by passing the documents as an `AnalyzeTextInput` parameter. This returns a `AnalyzeTextEntitiesResult`. +To recognize entities in multiple documents, call `AnalyzeTextAsync` on the `TextAnalysisClient` by passing the documents as an `AnalyzeTextInput` parameter. This returns a `AnalyzeTextEntitiesResult`. ```C# Snippet:Sample4_AnalyzeTextAsync_RecognizeEntities string textA = @@ -102,12 +102,12 @@ For more information on the changes in the preview API version, see [Preview API To create a new `TextAnalysisClient` with the preview API version, you will need the service endpoint and credentials of your Language resource with the `TextAnalysisClientOptions` pointing to the preview API Version. -To recognize entities in multiple documents, call `AnalyzeText` on the `TextAnalysisClient` by passing the documents and actionContent as an `AnalyzeTextInput` parameter. This returns a `AnalyzeTextEntitiesResult`. +To recognize entities in multiple documents, call `AnalyzeTextAsync` on the `TextAnalysisClient` by passing the documents and actionContent as an `AnalyzeTextInput` parameter. This returns a `AnalyzeTextEntitiesResult`. ```C# Snippet:Sample4_AnalyzeTextAsync_RecognizeEntities_Preview Uri endpoint = TestEnvironment.Endpoint; AzureKeyCredential credential = new(TestEnvironment.ApiKey); -TextAnalysisClientOptions options = new TextAnalysisClientOptions(TextAnalysisClientOptions.ServiceVersion.V2024_11_15_Preview); +TextAnalysisClientOptions options = new TextAnalysisClientOptions(TextAnalysisClientOptions.ServiceVersion.V2025_11_15_Preview); var client = new TextAnalysisClient(endpoint, credential, options); string textA = diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample5_AnalyzeTextAsync_RecognizePiiEntities.md b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample5_AnalyzeTextAsync_RecognizePiiEntities.md index 7ff50341d4c9..b0ad8ea95b58 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample5_AnalyzeTextAsync_RecognizePiiEntities.md +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample5_AnalyzeTextAsync_RecognizePiiEntities.md @@ -17,7 +17,7 @@ The values of the `endpoint` and `apiKey` variables can be retrieved from enviro ## Recognizing Personally Identifiable Information in multiple documents -To recognize Personally Identifiable Information in multiple documents, call `AnalyzeText` on an `TextPiiEntitiesRecognitionInput`. The results are returned as a `AnalyzeTextPiiResult`. +To recognize Personally Identifiable Information in multiple documents, call `AnalyzeTextAsync` on an `TextPiiEntitiesRecognitionInput`. The results are returned as a `AnalyzeTextPiiResult`. ```C# Snippet:Sample5_AnalyzeTextAsync_RecognizePii string textA = @@ -84,7 +84,7 @@ foreach (DocumentError analyzeTextDocumentError in piiTaskResult.Results.Errors) ## Recognizing Personally Identifiable Information in multiple documents with a redaction policy -To recognize Personally Identifiable Information in multiple documents, call `AnalyzeText` on an `TextPiiEntitiesRecognitionInput`. The results are returned as a `AnalyzeTextPiiResult`. +To recognize Personally Identifiable Information in multiple documents, call `AnalyzeTextAsync` on an `TextPiiEntitiesRecognitionInput`. The results are returned as a `AnalyzeTextPiiResult`. ```C# Snippet:Sample5_AnalyzeTextAsync_RecognizePii_RedactionPolicy string textA = @@ -114,7 +114,15 @@ AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput() { ModelVersion = "latest", // Avaliable RedactionPolicies: EntityMaskPolicyType, CharacterMaskPolicyType, and NoMaskPolicyType - RedactionPolicy = new EntityMaskPolicyType() + RedactionPolicies = + { + new EntityMaskPolicyType + { + // defaultPolicy: use entity mask for everything unless overridden + PolicyName = "defaultPolicy", + IsDefault = true, + } + } } }; @@ -352,6 +360,157 @@ foreach (DocumentError error in result.Results.Errors) } ``` +## Recognizing Personally Identifiable Information with multiple redaction policies and with synthetic mask + +To recognize Personally Identifiable Information with multiple redaction policies, call `AnalyzeTextAsync` on an `TextPiiEntitiesRecognitionInput`. The results are returned as a `AnalyzeTextPiiResult`. + +```C# Snippet:Sample5_AnalyzeTextAsync_RecognizePii_RedactionPolicies +string documentText = "My name is John Doe. My ssn is 123-45-6789. My email is john@example.com.."; + +AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput +{ + TextInput = new MultiLanguageTextInput + { + MultiLanguageInputs = +{ + new MultiLanguageInput("A", documentText) { Language = "en" }, + new MultiLanguageInput("B", documentText) { Language = "en" }, +} + }, + ActionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + + RedactionPolicies = +{ + new EntityMaskPolicyType + { + // defaultPolicy: use entity mask for everything unless overridden + PolicyName = "defaultPolicy", + IsDefault = true, + }, + new CharacterMaskPolicyType + { + // customMaskForSSN: keep the last 4 digits of SSN, mask the rest + PolicyName = "customMaskForSSN", + UnmaskLength = 4, + UnmaskFromEnd = false, + EntityTypes = + { + PiiCategoriesExclude.UsSocialSecurityNumber + }, + }, + new SyntheticReplacementPolicyType + { + // syntheticMaskForPerson: generate synthetic values for Person and Email + PolicyName = "syntheticMaskForPerson", + EntityTypes = + { + PiiCategoriesExclude.Person, + PiiCategoriesExclude.Email + }, + } +} + } +}; + +Response response = await client.AnalyzeTextAsync(body); +AnalyzeTextPiiResult piiTaskResult = (AnalyzeTextPiiResult)response.Value; + +foreach (PiiActionResult piiResult in piiTaskResult.Results.Documents) +{ + Console.WriteLine($"Result for document with Id = \"{piiResult.Id}\":"); + Console.WriteLine($" Redacted Text: \"{piiResult.RedactedText}\""); + Console.WriteLine($" Recognized {piiResult.Entities.Count} entities:"); + + foreach (PiiEntity entity in piiResult.Entities) + { + Console.WriteLine($" Text: {entity.Text}"); + Console.WriteLine($" Offset: {entity.Offset}"); + Console.WriteLine($" Length: {entity.Length}"); + Console.WriteLine($" Category: {entity.Category}"); + if (!string.IsNullOrEmpty(entity.Subcategory)) + { + Console.WriteLine($" SubCategory: {entity.Subcategory}"); + } + Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); + Console.WriteLine(); + } + + Console.WriteLine(); +} + +foreach (DocumentError analyzeTextDocumentError in piiTaskResult.Results.Errors) +{ + Console.WriteLine($" Error on document {analyzeTextDocumentError.Id}!"); + Console.WriteLine($" Document error code: {analyzeTextDocumentError.Error.Code}"); + Console.WriteLine($" Message: {analyzeTextDocumentError.Error.Message}"); + Console.WriteLine(); +} +``` + +## Recognizing Personally Identifiable Information with confidence score threshold + +To recognize Personally Identifiable Information with confidence score threshold, call `AnalyzeTextAsync` on an `TextPiiEntitiesRecognitionInput`. The results are returned as a `AnalyzeTextPiiResult`. + +```C# Snippet:Sample5_AnalyzeTextAsync_RecognizePii_ConfidenceScoreThreshold + string text = + "My name is John Doe. My ssn is 222-45-6789. My email is john@example.com. John Doe is my name."; + + // Input documents + MultiLanguageTextInput textInput = new MultiLanguageTextInput + { + MultiLanguageInputs = +{ + new MultiLanguageInput("1", text) { Language = "en" } +} + }; + + // Confidence score overrides: + // default = 0.3 + // SSN & Email overridden to 0.9 (so they get filtered out as entities) + ConfidenceScoreThreshold confidenceThreshold = new ConfidenceScoreThreshold(0.3f); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.UsSocialSecurityNumber.ToString() + )); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.Email.ToString() + )); + + PiiActionContent actionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + DisableEntityValidation = true, + ConfidenceScoreThreshold = confidenceThreshold + }; + + AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput + { + TextInput = textInput, + ActionContent = actionContent + }; + + Response response = await client.AnalyzeTextAsync(body); + AnalyzeTextPiiResult piiResult = (AnalyzeTextPiiResult)response.Value; + + PiiActionResult doc = piiResult.Results.Documents[0]; + + Console.WriteLine($"Redacted text: \"{doc.RedactedText}\""); + Console.WriteLine("Recognized entities (after confidence score filtering):"); + + foreach (PiiEntity entity in doc.Entities) + { + Console.WriteLine($" Text: {entity.Text}"); + Console.WriteLine($" Category: {entity.Category}"); + Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); + Console.WriteLine(); + } +``` + See the [README] of the Text Analytics client library for more information, including useful links and instructions. [DefaultAzureCredential]: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/README.md diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample5_AnalyzeText_RecognizePiiEntities.md b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample5_AnalyzeText_RecognizePiiEntities.md index 74b09c449cc2..4d3972144aa1 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample5_AnalyzeText_RecognizePiiEntities.md +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample5_AnalyzeText_RecognizePiiEntities.md @@ -115,7 +115,7 @@ AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput() { ModelVersion = "latest", // Avaliable RedactionPolicies: EntityMaskPolicyType, CharacterMaskPolicyType, and NoMaskPolicyType - RedactionPolicy = new EntityMaskPolicyType() + RedactionPolicies = { new EntityMaskPolicyType { PolicyName = "defaultPolicy", IsDefault = true } } } }; @@ -312,7 +312,7 @@ AnalyzeTextInput input = new TextPiiEntitiesRecognitionInput() }, ActionContent = new PiiActionContent() { - ModelVersion = "2025-05-15-preview" + ModelVersion = "latest" } }; @@ -352,6 +352,157 @@ foreach (DocumentError error in result.Results.Errors) } ``` +## Recognizing Personally Identifiable Information with multiple redaction policies and with synthetic mask + +To recognize Personally Identifiable Information with multiple redaction policies and with synthetic mask, call `AnalyzeText` on an `TextPiiEntitiesRecognitionInput`. The results are returned as a `AnalyzeTextPiiResult`. + +```C# Snippet:Sample5_AnalyzeText_RecognizePii_RedactionPolicies +string documentText = "My name is John Doe. My ssn is 123-45-6789. My email is john@example.com.."; + +AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput +{ + TextInput = new MultiLanguageTextInput + { + MultiLanguageInputs = +{ + new MultiLanguageInput("A", documentText) { Language = "en" }, + new MultiLanguageInput("B", documentText) { Language = "en" }, +} + }, + ActionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + + RedactionPolicies = +{ + new EntityMaskPolicyType + { + // defaultPolicy: use entity mask for everything unless overridden + PolicyName = "defaultPolicy", + IsDefault = true, + }, + new CharacterMaskPolicyType + { + // customMaskForSSN: keep the last 4 digits of SSN, mask the rest + PolicyName = "customMaskForSSN", + UnmaskLength = 4, + UnmaskFromEnd = false, + EntityTypes = + { + PiiCategoriesExclude.UsSocialSecurityNumber + }, + }, + new SyntheticReplacementPolicyType + { + // syntheticMaskForPerson: generate synthetic values for Person and Email + PolicyName = "syntheticMaskForPerson", + EntityTypes = + { + PiiCategoriesExclude.Person, + PiiCategoriesExclude.Email + }, + } +} + } +}; + +Response response = client.AnalyzeText(body); +AnalyzeTextPiiResult piiTaskResult = (AnalyzeTextPiiResult)response.Value; + +foreach (PiiActionResult piiResult in piiTaskResult.Results.Documents) +{ + Console.WriteLine($"Result for document with Id = \"{piiResult.Id}\":"); + Console.WriteLine($" Redacted Text: \"{piiResult.RedactedText}\""); + Console.WriteLine($" Recognized {piiResult.Entities.Count} entities:"); + + foreach (PiiEntity entity in piiResult.Entities) + { + Console.WriteLine($" Text: {entity.Text}"); + Console.WriteLine($" Offset: {entity.Offset}"); + Console.WriteLine($" Length: {entity.Length}"); + Console.WriteLine($" Category: {entity.Category}"); + if (!string.IsNullOrEmpty(entity.Subcategory)) + { + Console.WriteLine($" SubCategory: {entity.Subcategory}"); + } + Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); + Console.WriteLine(); + } + + Console.WriteLine(); +} + +foreach (DocumentError analyzeTextDocumentError in piiTaskResult.Results.Errors) +{ + Console.WriteLine($" Error on document {analyzeTextDocumentError.Id}!"); + Console.WriteLine($" Document error code: {analyzeTextDocumentError.Error.Code}"); + Console.WriteLine($" Message: {analyzeTextDocumentError.Error.Message}"); + Console.WriteLine(); +} +``` + +## Recognizing Personally Identifiable Information with confidence score threshold + +To recognize Personally Identifiable Information with confidence score threshold, call `AnalyzeText` on an `TextPiiEntitiesRecognitionInput`. The results are returned as a `AnalyzeTextPiiResult`. + +```C# Snippet:Sample5_AnalyzeText_RecognizePii_ConfidenceScoreThreshold + string text = + "My name is John Doe. My ssn is 222-45-6789. My email is john@example.com. John Doe is my name."; + + // Input documents + MultiLanguageTextInput textInput = new MultiLanguageTextInput + { + MultiLanguageInputs = +{ + new MultiLanguageInput("1", text) { Language = "en" } +} + }; + + // Confidence score overrides: + // default = 0.3 + // SSN & Email overridden to 0.9 (so they get filtered out as entities) + ConfidenceScoreThreshold confidenceThreshold = new ConfidenceScoreThreshold(0.3f); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.UsSocialSecurityNumber.ToString() + )); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.Email.ToString() + )); + + PiiActionContent actionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + DisableEntityValidation = true, + ConfidenceScoreThreshold = confidenceThreshold + }; + + AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput + { + TextInput = textInput, + ActionContent = actionContent + }; + + Response response = client.AnalyzeText(body); + AnalyzeTextPiiResult piiResult = (AnalyzeTextPiiResult)response.Value; + + PiiActionResult doc = piiResult.Results.Documents[0]; + + Console.WriteLine($"Redacted text: \"{doc.RedactedText}\""); + Console.WriteLine("Recognized entities (after confidence score filtering):"); + + foreach (PiiEntity entity in doc.Entities) + { + Console.WriteLine($" Text: {entity.Text}"); + Console.WriteLine($" Category: {entity.Category}"); + Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); + Console.WriteLine(); + } +``` + See the [README] of the Text Analytics client library for more information, including useful links and instructions. [DefaultAzureCredential]: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/README.md diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample6_AnalyzeTextAsync_RecognizeLinkedEntities.md b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample6_AnalyzeTextAsync_RecognizeLinkedEntities.md index eb6a5688e19e..b626660b8c9e 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample6_AnalyzeTextAsync_RecognizeLinkedEntities.md +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/samples/Sample6_AnalyzeTextAsync_RecognizeLinkedEntities.md @@ -17,7 +17,7 @@ The values of the `endpoint` and `apiKey` variables can be retrieved from enviro ## Recognizing linked entities in multiple documents -To recognize linked entities in multiple documents, call `AnalyzeText` on an TextEntityLinkingInput. The results are returned as a `AnalyzeTextEntityLinkingResult`. +To recognize linked entities in multiple documents, call `AnalyzeTextAsync` on an TextEntityLinkingInput. The results are returned as a `AnalyzeTextEntityLinkingResult`. ```C# Snippet:Sample6_AnalyzeTextAsync_RecognizeLinkedEntities string textA = diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AddressMetadata.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AddressMetadata.Serialization.cs new file mode 100644 index 000000000000..48baae6b0b72 --- /dev/null +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AddressMetadata.Serialization.cs @@ -0,0 +1,204 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.AI.Language.Text +{ + public partial class AddressMetadata : IUtf8JsonSerializable, IJsonModel + { + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) => ((IJsonModel)this).Write(writer, ModelSerializationExtensions.WireOptions); + + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + JsonModelWriteCore(writer, options); + writer.WriteEndObject(); + } + + /// The JSON writer. + /// The client options for reading and writing models. + protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(AddressMetadata)} does not support writing '{format}' format."); + } + + base.JsonModelWriteCore(writer, options); + writer.WritePropertyName("formatedAddress"u8); + writer.WriteStringValue(FormatedAddress); + writer.WritePropertyName("addressLines"u8); + writer.WriteStartArray(); + foreach (var item in AddressLines) + { + writer.WriteStringValue(item); + } + writer.WriteEndArray(); + if (Optional.IsDefined(City)) + { + writer.WritePropertyName("city"u8); + writer.WriteStringValue(City); + } + if (Optional.IsDefined(State)) + { + writer.WritePropertyName("state"u8); + writer.WriteStringValue(State); + } + if (Optional.IsDefined(PostalCode)) + { + writer.WritePropertyName("postalCode"u8); + writer.WriteStringValue(PostalCode); + } + if (Optional.IsDefined(CountryOrRegion)) + { + writer.WritePropertyName("countryOrRegion"u8); + writer.WriteStringValue(CountryOrRegion); + } + } + + AddressMetadata IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(AddressMetadata)} does not support reading '{format}' format."); + } + + using JsonDocument document = JsonDocument.ParseValue(ref reader); + return DeserializeAddressMetadata(document.RootElement, options); + } + + internal static AddressMetadata DeserializeAddressMetadata(JsonElement element, ModelReaderWriterOptions options = null) + { + options ??= ModelSerializationExtensions.WireOptions; + + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + string formatedAddress = default; + IReadOnlyList addressLines = default; + string city = default; + string state = default; + string postalCode = default; + string countryOrRegion = default; + MetadataKind metadataKind = default; + IDictionary serializedAdditionalRawData = default; + Dictionary rawDataDictionary = new Dictionary(); + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("formatedAddress"u8)) + { + formatedAddress = property.Value.GetString(); + continue; + } + if (property.NameEquals("addressLines"u8)) + { + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(item.GetString()); + } + addressLines = array; + continue; + } + if (property.NameEquals("city"u8)) + { + city = property.Value.GetString(); + continue; + } + if (property.NameEquals("state"u8)) + { + state = property.Value.GetString(); + continue; + } + if (property.NameEquals("postalCode"u8)) + { + postalCode = property.Value.GetString(); + continue; + } + if (property.NameEquals("countryOrRegion"u8)) + { + countryOrRegion = property.Value.GetString(); + continue; + } + if (property.NameEquals("metadataKind"u8)) + { + metadataKind = new MetadataKind(property.Value.GetString()); + continue; + } + if (options.Format != "W") + { + rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); + } + } + serializedAdditionalRawData = rawDataDictionary; + return new AddressMetadata( + metadataKind, + serializedAdditionalRawData, + formatedAddress, + addressLines, + city, + state, + postalCode, + countryOrRegion); + } + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options, AzureAILanguageTextContext.Default); + default: + throw new FormatException($"The model {nameof(AddressMetadata)} does not support writing '{options.Format}' format."); + } + } + + AddressMetadata IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + + switch (format) + { + case "J": + { + using JsonDocument document = JsonDocument.Parse(data, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializeAddressMetadata(document.RootElement, options); + } + default: + throw new FormatException($"The model {nameof(AddressMetadata)} does not support reading '{options.Format}' format."); + } + } + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// Deserializes the model from a raw response. + /// The response to deserialize the model from. + internal static new AddressMetadata FromResponse(Response response) + { + using var document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializeAddressMetadata(document.RootElement); + } + + /// Convert into a . + internal override RequestContent ToRequestContent() + { + var content = new Utf8JsonRequestContent(); + content.JsonWriter.WriteObjectValue(this, ModelSerializationExtensions.WireOptions); + return content; + } + } +} diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AddressMetadata.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AddressMetadata.cs new file mode 100644 index 000000000000..f8d6fa705c20 --- /dev/null +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AddressMetadata.cs @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Azure.AI.Language.Text +{ + /// Represents the Address entity Metadata model. + public partial class AddressMetadata : BaseMetadata + { + /// Initializes a new instance of . + /// The fully formatted address string following postal conventions for the address's country/region. + /// The full address string as recognized from the input text. + /// or is null. + internal AddressMetadata(string formatedAddress, IEnumerable addressLines) + { + Argument.AssertNotNull(formatedAddress, nameof(formatedAddress)); + Argument.AssertNotNull(addressLines, nameof(addressLines)); + + MetadataKind = MetadataKind.AddressMetadata; + FormatedAddress = formatedAddress; + AddressLines = addressLines.ToList(); + } + + /// Initializes a new instance of . + /// The entity Metadata object kind. + /// Keeps track of any properties unknown to the library. + /// The fully formatted address string following postal conventions for the address's country/region. + /// The full address string as recognized from the input text. + /// The city name of the address. + /// The state or province name of the address. + /// The postal or ZIP code of the address. + /// The country or region name of the address. + internal AddressMetadata(MetadataKind metadataKind, IDictionary serializedAdditionalRawData, string formatedAddress, IReadOnlyList addressLines, string city, string state, string postalCode, string countryOrRegion) : base(metadataKind, serializedAdditionalRawData) + { + FormatedAddress = formatedAddress; + AddressLines = addressLines; + City = city; + State = state; + PostalCode = postalCode; + CountryOrRegion = countryOrRegion; + } + + /// Initializes a new instance of for deserialization. + internal AddressMetadata() + { + } + + /// The fully formatted address string following postal conventions for the address's country/region. + public string FormatedAddress { get; } + /// The full address string as recognized from the input text. + public IReadOnlyList AddressLines { get; } + /// The city name of the address. + public string City { get; } + /// The state or province name of the address. + public string State { get; } + /// The postal or ZIP code of the address. + public string PostalCode { get; } + /// The country or region name of the address. + public string CountryOrRegion { get; } + } +} diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AnalyzeTextOperationResult.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AnalyzeTextOperationResult.Serialization.cs index d970e70478fd..4b53e48c02b9 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AnalyzeTextOperationResult.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AnalyzeTextOperationResult.Serialization.cs @@ -96,7 +96,7 @@ internal static AnalyzeTextOperationResult DeserializeAnalyzeTextOperationResult case "HealthcareLROResults": return HealthcareOperationResult.DeserializeHealthcareOperationResult(element, options); case "KeyPhraseExtractionLROResults": return KeyPhraseExtractionOperationResult.DeserializeKeyPhraseExtractionOperationResult(element, options); case "PiiEntityRecognitionLROResults": return PiiEntityRecognitionOperationResult.DeserializePiiEntityRecognitionOperationResult(element, options); - case "SentimentAnalysisLROResults": return SentimentOperationResult.DeserializeSentimentOperationResult(element, options); + case "SentimentAnalysisLROResults": return SentimentLROResult.DeserializeSentimentLROResult(element, options); } } return UnknownAnalyzeTextOperationResult.DeserializeUnknownAnalyzeTextOperationResult(element, options); diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AnalyzeTextOperationResult.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AnalyzeTextOperationResult.cs index 223d4a4fcfb4..7e54cff68ded 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AnalyzeTextOperationResult.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/AnalyzeTextOperationResult.cs @@ -13,7 +13,7 @@ namespace Azure.AI.Language.Text /// /// Contains the AnalyzeText long running operation result object. /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , , , , , , , , , and . + /// The available derived classes include , , , , , , , , , and . /// public abstract partial class AnalyzeTextOperationResult { diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseMetadata.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseMetadata.Serialization.cs index 485ee26c2f60..f2cce9539084 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseMetadata.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseMetadata.Serialization.cs @@ -77,6 +77,7 @@ internal static BaseMetadata DeserializeBaseMetadata(JsonElement element, ModelR { switch (discriminator.GetString()) { + case "AddressMetadata": return AddressMetadata.DeserializeAddressMetadata(element, options); case "AgeMetadata": return AgeMetadata.DeserializeAgeMetadata(element, options); case "AreaMetadata": return AreaMetadata.DeserializeAreaMetadata(element, options); case "CurrencyMetadata": return CurrencyMetadata.DeserializeCurrencyMetadata(element, options); diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseMetadata.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseMetadata.cs index 096136e572f3..7030ff2a9f3f 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseMetadata.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseMetadata.cs @@ -13,7 +13,7 @@ namespace Azure.AI.Language.Text /// /// The abstract base class for entity Metadata. /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , , , , , , , , , , , , , , , and . + /// The available derived classes include , , , , , , , , , , , , , , , , and . /// public abstract partial class BaseMetadata { diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseRedactionPolicy.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseRedactionPolicy.Serialization.cs index 4b2aaefdc06a..ca702c63516d 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseRedactionPolicy.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseRedactionPolicy.Serialization.cs @@ -36,6 +36,26 @@ protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWrit writer.WritePropertyName("policyKind"u8); writer.WriteStringValue(PolicyKind.ToString()); + if (Optional.IsCollectionDefined(EntityTypes)) + { + writer.WritePropertyName("entityTypes"u8); + writer.WriteStartArray(); + foreach (var item in EntityTypes) + { + writer.WriteStringValue(item.ToString()); + } + writer.WriteEndArray(); + } + if (Optional.IsDefined(PolicyName)) + { + writer.WritePropertyName("policyName"u8); + writer.WriteStringValue(PolicyName); + } + if (Optional.IsDefined(IsDefault)) + { + writer.WritePropertyName("isDefault"u8); + writer.WriteBooleanValue(IsDefault.Value); + } if (options.Format != "W" && _serializedAdditionalRawData != null) { foreach (var item in _serializedAdditionalRawData) @@ -80,6 +100,7 @@ internal static BaseRedactionPolicy DeserializeBaseRedactionPolicy(JsonElement e case "characterMask": return CharacterMaskPolicyType.DeserializeCharacterMaskPolicyType(element, options); case "entityMask": return EntityMaskPolicyType.DeserializeEntityMaskPolicyType(element, options); case "noMask": return NoMaskPolicyType.DeserializeNoMaskPolicyType(element, options); + case "syntheticReplacement": return SyntheticReplacementPolicyType.DeserializeSyntheticReplacementPolicyType(element, options); } } return UnknownBaseRedactionPolicy.DeserializeUnknownBaseRedactionPolicy(element, options); diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseRedactionPolicy.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseRedactionPolicy.cs index 658e1f9e4705..65444eec264f 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseRedactionPolicy.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/BaseRedactionPolicy.cs @@ -13,7 +13,7 @@ namespace Azure.AI.Language.Text /// /// The abstract base class for RedactionPolicy. /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , and . + /// The available derived classes include , , and . /// public abstract partial class BaseRedactionPolicy { @@ -52,18 +52,31 @@ public abstract partial class BaseRedactionPolicy /// Initializes a new instance of . protected BaseRedactionPolicy() { + EntityTypes = new ChangeTrackingList(); } /// Initializes a new instance of . /// The entity RedactionPolicy object kind. + /// (Optional) describes the PII categories to which the redaction policy will be applied. If not specified, the redaction policy will be applied to all PII categories. + /// (Optional) name of the redaction policy for identification purposes. + /// (Optional) flag to indicate whether this redaction policy is the default policy to be applied when no specific policy is defined for a PII category. Only one policy can be marked as default. /// Keeps track of any properties unknown to the library. - internal BaseRedactionPolicy(RedactionPolicyKind policyKind, IDictionary serializedAdditionalRawData) + internal BaseRedactionPolicy(RedactionPolicyKind policyKind, IList entityTypes, string policyName, bool? isDefault, IDictionary serializedAdditionalRawData) { PolicyKind = policyKind; + EntityTypes = entityTypes; + PolicyName = policyName; + IsDefault = isDefault; _serializedAdditionalRawData = serializedAdditionalRawData; } /// The entity RedactionPolicy object kind. internal RedactionPolicyKind PolicyKind { get; set; } + /// (Optional) describes the PII categories to which the redaction policy will be applied. If not specified, the redaction policy will be applied to all PII categories. + public IList EntityTypes { get; } + /// (Optional) name of the redaction policy for identification purposes. + public string PolicyName { get; set; } + /// (Optional) flag to indicate whether this redaction policy is the default policy to be applied when no specific policy is defined for a PII category. Only one policy can be marked as default. + public bool? IsDefault { get; set; } } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/CharacterMaskPolicyType.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/CharacterMaskPolicyType.Serialization.cs index d92b1ee07864..9f14f180aff0 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/CharacterMaskPolicyType.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/CharacterMaskPolicyType.Serialization.cs @@ -40,6 +40,16 @@ protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWri writer.WritePropertyName("redactionCharacter"u8); writer.WriteStringValue(RedactionCharacter.Value.ToString()); } + if (Optional.IsDefined(UnmaskLength)) + { + writer.WritePropertyName("unmaskLength"u8); + writer.WriteNumberValue(UnmaskLength.Value); + } + if (Optional.IsDefined(UnmaskFromEnd)) + { + writer.WritePropertyName("unmaskFromEnd"u8); + writer.WriteBooleanValue(UnmaskFromEnd.Value); + } } CharacterMaskPolicyType IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) @@ -63,7 +73,12 @@ internal static CharacterMaskPolicyType DeserializeCharacterMaskPolicyType(JsonE return null; } RedactionCharacter? redactionCharacter = default; + int? unmaskLength = default; + bool? unmaskFromEnd = default; RedactionPolicyKind policyKind = default; + IList entityTypes = default; + string policyName = default; + bool? isDefault = default; IDictionary serializedAdditionalRawData = default; Dictionary rawDataDictionary = new Dictionary(); foreach (var property in element.EnumerateObject()) @@ -77,18 +92,72 @@ internal static CharacterMaskPolicyType DeserializeCharacterMaskPolicyType(JsonE redactionCharacter = new RedactionCharacter(property.Value.GetString()); continue; } + if (property.NameEquals("unmaskLength"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + unmaskLength = property.Value.GetInt32(); + continue; + } + if (property.NameEquals("unmaskFromEnd"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + unmaskFromEnd = property.Value.GetBoolean(); + continue; + } if (property.NameEquals("policyKind"u8)) { policyKind = new RedactionPolicyKind(property.Value.GetString()); continue; } + if (property.NameEquals("entityTypes"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(new PiiCategoriesExclude(item.GetString())); + } + entityTypes = array; + continue; + } + if (property.NameEquals("policyName"u8)) + { + policyName = property.Value.GetString(); + continue; + } + if (property.NameEquals("isDefault"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + isDefault = property.Value.GetBoolean(); + continue; + } if (options.Format != "W") { rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); } } serializedAdditionalRawData = rawDataDictionary; - return new CharacterMaskPolicyType(policyKind, serializedAdditionalRawData, redactionCharacter); + return new CharacterMaskPolicyType( + policyKind, + entityTypes ?? new ChangeTrackingList(), + policyName, + isDefault, + serializedAdditionalRawData, + redactionCharacter, + unmaskLength, + unmaskFromEnd); } BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/CharacterMaskPolicyType.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/CharacterMaskPolicyType.cs index 9bb4fe403a88..0e37c163f6b9 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/CharacterMaskPolicyType.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/CharacterMaskPolicyType.cs @@ -21,14 +21,25 @@ public CharacterMaskPolicyType() /// Initializes a new instance of . /// The entity RedactionPolicy object kind. + /// (Optional) describes the PII categories to which the redaction policy will be applied. If not specified, the redaction policy will be applied to all PII categories. + /// (Optional) name of the redaction policy for identification purposes. + /// (Optional) flag to indicate whether this redaction policy is the default policy to be applied when no specific policy is defined for a PII category. Only one policy can be marked as default. /// Keeps track of any properties unknown to the library. /// Optional parameter to use a Custom Character to be used for redaction in PII responses. Default character will bce * as before. We allow specific ascii characters for redaction. - internal CharacterMaskPolicyType(RedactionPolicyKind policyKind, IDictionary serializedAdditionalRawData, RedactionCharacter? redactionCharacter) : base(policyKind, serializedAdditionalRawData) + /// Optional parameter to indicate the length of unmasked characters at the end of the redacted PII entity. Default is 0. + /// Optional parameter to indicate whether to unmask characters from the end of the redacted PII entity. Default is true. + internal CharacterMaskPolicyType(RedactionPolicyKind policyKind, IList entityTypes, string policyName, bool? isDefault, IDictionary serializedAdditionalRawData, RedactionCharacter? redactionCharacter, int? unmaskLength, bool? unmaskFromEnd) : base(policyKind, entityTypes, policyName, isDefault, serializedAdditionalRawData) { RedactionCharacter = redactionCharacter; + UnmaskLength = unmaskLength; + UnmaskFromEnd = unmaskFromEnd; } /// Optional parameter to use a Custom Character to be used for redaction in PII responses. Default character will bce * as before. We allow specific ascii characters for redaction. public RedactionCharacter? RedactionCharacter { get; set; } + /// Optional parameter to indicate the length of unmasked characters at the end of the redacted PII entity. Default is 0. + public int? UnmaskLength { get; set; } + /// Optional parameter to indicate whether to unmask characters from the end of the redacted PII entity. Default is true. + public bool? UnmaskFromEnd { get; set; } } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThreshold.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThreshold.Serialization.cs new file mode 100644 index 000000000000..67d8d0339544 --- /dev/null +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThreshold.Serialization.cs @@ -0,0 +1,167 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.AI.Language.Text +{ + public partial class ConfidenceScoreThreshold : IUtf8JsonSerializable, IJsonModel + { + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) => ((IJsonModel)this).Write(writer, ModelSerializationExtensions.WireOptions); + + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + JsonModelWriteCore(writer, options); + writer.WriteEndObject(); + } + + /// The JSON writer. + /// The client options for reading and writing models. + protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(ConfidenceScoreThreshold)} does not support writing '{format}' format."); + } + + writer.WritePropertyName("default"u8); + writer.WriteNumberValue(Default); + if (Optional.IsCollectionDefined(Overrides)) + { + writer.WritePropertyName("overrides"u8); + writer.WriteStartArray(); + foreach (var item in Overrides) + { + writer.WriteObjectValue(item, options); + } + writer.WriteEndArray(); + } + if (options.Format != "W" && _serializedAdditionalRawData != null) + { + foreach (var item in _serializedAdditionalRawData) + { + writer.WritePropertyName(item.Key); +#if NET6_0_OR_GREATER + writer.WriteRawValue(item.Value); +#else + using (JsonDocument document = JsonDocument.Parse(item.Value, ModelSerializationExtensions.JsonDocumentOptions)) + { + JsonSerializer.Serialize(writer, document.RootElement); + } +#endif + } + } + } + + ConfidenceScoreThreshold IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(ConfidenceScoreThreshold)} does not support reading '{format}' format."); + } + + using JsonDocument document = JsonDocument.ParseValue(ref reader); + return DeserializeConfidenceScoreThreshold(document.RootElement, options); + } + + internal static ConfidenceScoreThreshold DeserializeConfidenceScoreThreshold(JsonElement element, ModelReaderWriterOptions options = null) + { + options ??= ModelSerializationExtensions.WireOptions; + + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + float @default = default; + IList overrides = default; + IDictionary serializedAdditionalRawData = default; + Dictionary rawDataDictionary = new Dictionary(); + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("default"u8)) + { + @default = property.Value.GetSingle(); + continue; + } + if (property.NameEquals("overrides"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(ConfidenceScoreThresholdOverride.DeserializeConfidenceScoreThresholdOverride(item, options)); + } + overrides = array; + continue; + } + if (options.Format != "W") + { + rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); + } + } + serializedAdditionalRawData = rawDataDictionary; + return new ConfidenceScoreThreshold(@default, overrides ?? new ChangeTrackingList(), serializedAdditionalRawData); + } + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options, AzureAILanguageTextContext.Default); + default: + throw new FormatException($"The model {nameof(ConfidenceScoreThreshold)} does not support writing '{options.Format}' format."); + } + } + + ConfidenceScoreThreshold IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + + switch (format) + { + case "J": + { + using JsonDocument document = JsonDocument.Parse(data, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializeConfidenceScoreThreshold(document.RootElement, options); + } + default: + throw new FormatException($"The model {nameof(ConfidenceScoreThreshold)} does not support reading '{options.Format}' format."); + } + } + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// Deserializes the model from a raw response. + /// The response to deserialize the model from. + internal static ConfidenceScoreThreshold FromResponse(Response response) + { + using var document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializeConfidenceScoreThreshold(document.RootElement); + } + + /// Convert into a . + internal virtual RequestContent ToRequestContent() + { + var content = new Utf8JsonRequestContent(); + content.JsonWriter.WriteObjectValue(this, ModelSerializationExtensions.WireOptions); + return content; + } + } +} diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThreshold.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThreshold.cs new file mode 100644 index 000000000000..5f3178b291c4 --- /dev/null +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThreshold.cs @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; + +namespace Azure.AI.Language.Text +{ + /// Configuration for confidence score threshold for PII entity recognition. + public partial class ConfidenceScoreThreshold + { + /// + /// Keeps track of any properties unknown to the library. + /// + /// To assign an object to the value of this property use . + /// + /// + /// To assign an already formatted json string to this property use . + /// + /// + /// Examples: + /// + /// + /// BinaryData.FromObjectAsJson("foo") + /// Creates a payload of "foo". + /// + /// + /// BinaryData.FromString("\"foo\"") + /// Creates a payload of "foo". + /// + /// + /// BinaryData.FromObjectAsJson(new { key = "value" }) + /// Creates a payload of { "key": "value" }. + /// + /// + /// BinaryData.FromString("{\"key\": \"value\"}") + /// Creates a payload of { "key": "value" }. + /// + /// + /// + /// + private IDictionary _serializedAdditionalRawData; + + /// Initializes a new instance of . + /// Minimum confidence score threshold for the PII entities to be returned in the response. Entities with a confidence score below this threshold will be filtered out. Value should be between 0.0 and 1.0. + public ConfidenceScoreThreshold(float @default) + { + Default = @default; + Overrides = new ChangeTrackingList(); + } + + /// Initializes a new instance of . + /// Minimum confidence score threshold for the PII entities to be returned in the response. Entities with a confidence score below this threshold will be filtered out. Value should be between 0.0 and 1.0. + /// List of confidence score threshold overrides for specific PII categories. + /// Keeps track of any properties unknown to the library. + internal ConfidenceScoreThreshold(float @default, IList overrides, IDictionary serializedAdditionalRawData) + { + Default = @default; + Overrides = overrides; + _serializedAdditionalRawData = serializedAdditionalRawData; + } + + /// Initializes a new instance of for deserialization. + internal ConfidenceScoreThreshold() + { + } + + /// Minimum confidence score threshold for the PII entities to be returned in the response. Entities with a confidence score below this threshold will be filtered out. Value should be between 0.0 and 1.0. + public float Default { get; } + /// List of confidence score threshold overrides for specific PII categories. + public IList Overrides { get; } + } +} diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThresholdOverride.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThresholdOverride.Serialization.cs new file mode 100644 index 000000000000..6da47224f38b --- /dev/null +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThresholdOverride.Serialization.cs @@ -0,0 +1,161 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.AI.Language.Text +{ + public partial class ConfidenceScoreThresholdOverride : IUtf8JsonSerializable, IJsonModel + { + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) => ((IJsonModel)this).Write(writer, ModelSerializationExtensions.WireOptions); + + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + JsonModelWriteCore(writer, options); + writer.WriteEndObject(); + } + + /// The JSON writer. + /// The client options for reading and writing models. + protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(ConfidenceScoreThresholdOverride)} does not support writing '{format}' format."); + } + + writer.WritePropertyName("entity"u8); + writer.WriteStringValue(Entity.ToString()); + writer.WritePropertyName("value"u8); + writer.WriteNumberValue(Value); + if (Optional.IsDefined(Language)) + { + writer.WritePropertyName("language"u8); + writer.WriteStringValue(Language); + } + if (options.Format != "W" && _serializedAdditionalRawData != null) + { + foreach (var item in _serializedAdditionalRawData) + { + writer.WritePropertyName(item.Key); +#if NET6_0_OR_GREATER + writer.WriteRawValue(item.Value); +#else + using (JsonDocument document = JsonDocument.Parse(item.Value, ModelSerializationExtensions.JsonDocumentOptions)) + { + JsonSerializer.Serialize(writer, document.RootElement); + } +#endif + } + } + } + + ConfidenceScoreThresholdOverride IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(ConfidenceScoreThresholdOverride)} does not support reading '{format}' format."); + } + + using JsonDocument document = JsonDocument.ParseValue(ref reader); + return DeserializeConfidenceScoreThresholdOverride(document.RootElement, options); + } + + internal static ConfidenceScoreThresholdOverride DeserializeConfidenceScoreThresholdOverride(JsonElement element, ModelReaderWriterOptions options = null) + { + options ??= ModelSerializationExtensions.WireOptions; + + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + PiiCategoriesExclude entity = default; + float value = default; + string language = default; + IDictionary serializedAdditionalRawData = default; + Dictionary rawDataDictionary = new Dictionary(); + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("entity"u8)) + { + entity = new PiiCategoriesExclude(property.Value.GetString()); + continue; + } + if (property.NameEquals("value"u8)) + { + value = property.Value.GetSingle(); + continue; + } + if (property.NameEquals("language"u8)) + { + language = property.Value.GetString(); + continue; + } + if (options.Format != "W") + { + rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); + } + } + serializedAdditionalRawData = rawDataDictionary; + return new ConfidenceScoreThresholdOverride(entity, value, language, serializedAdditionalRawData); + } + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options, AzureAILanguageTextContext.Default); + default: + throw new FormatException($"The model {nameof(ConfidenceScoreThresholdOverride)} does not support writing '{options.Format}' format."); + } + } + + ConfidenceScoreThresholdOverride IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + + switch (format) + { + case "J": + { + using JsonDocument document = JsonDocument.Parse(data, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializeConfidenceScoreThresholdOverride(document.RootElement, options); + } + default: + throw new FormatException($"The model {nameof(ConfidenceScoreThresholdOverride)} does not support reading '{options.Format}' format."); + } + } + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// Deserializes the model from a raw response. + /// The response to deserialize the model from. + internal static ConfidenceScoreThresholdOverride FromResponse(Response response) + { + using var document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializeConfidenceScoreThresholdOverride(document.RootElement); + } + + /// Convert into a . + internal virtual RequestContent ToRequestContent() + { + var content = new Utf8JsonRequestContent(); + content.JsonWriter.WriteObjectValue(this, ModelSerializationExtensions.WireOptions); + return content; + } + } +} diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThresholdOverride.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThresholdOverride.cs new file mode 100644 index 000000000000..d54a13414281 --- /dev/null +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/ConfidenceScoreThresholdOverride.cs @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; + +namespace Azure.AI.Language.Text +{ + /// Confidence score threshold override for a specific PII category. + public partial class ConfidenceScoreThresholdOverride + { + /// + /// Keeps track of any properties unknown to the library. + /// + /// To assign an object to the value of this property use . + /// + /// + /// To assign an already formatted json string to this property use . + /// + /// + /// Examples: + /// + /// + /// BinaryData.FromObjectAsJson("foo") + /// Creates a payload of "foo". + /// + /// + /// BinaryData.FromString("\"foo\"") + /// Creates a payload of "foo". + /// + /// + /// BinaryData.FromObjectAsJson(new { key = "value" }) + /// Creates a payload of { "key": "value" }. + /// + /// + /// BinaryData.FromString("{\"key\": \"value\"}") + /// Creates a payload of { "key": "value" }. + /// + /// + /// + /// + private IDictionary _serializedAdditionalRawData; + + /// Initializes a new instance of . + /// The PII category for which to override the confidence score threshold. + /// The confidence score threshold for the specified PII category. + public ConfidenceScoreThresholdOverride(PiiCategoriesExclude entity, float value) + { + Entity = entity; + Value = value; + } + + /// Initializes a new instance of . + /// The PII category for which to override the confidence score threshold. + /// The confidence score threshold for the specified PII category. + /// The 2 letter ISO 639-1 language for which the override applies. If not specified, the override applies to all languages. + /// Keeps track of any properties unknown to the library. + internal ConfidenceScoreThresholdOverride(PiiCategoriesExclude entity, float value, string language, IDictionary serializedAdditionalRawData) + { + Entity = entity; + Value = value; + Language = language; + _serializedAdditionalRawData = serializedAdditionalRawData; + } + + /// Initializes a new instance of for deserialization. + internal ConfidenceScoreThresholdOverride() + { + } + + /// The PII category for which to override the confidence score threshold. + public PiiCategoriesExclude Entity { get; } + /// The confidence score threshold for the specified PII category. + public float Value { get; } + /// The 2 letter ISO 639-1 language for which the override applies. If not specified, the override applies to all languages. + public string Language { get; set; } + } +} diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/Docs/TextAnalysisClient.xml b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/Docs/TextAnalysisClient.xml index d79c5c7cb4e4..7b55f829df57 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/Docs/TextAnalysisClient.xml +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/Docs/TextAnalysisClient.xml @@ -256,7 +256,7 @@ AnalyzeTextInput analyzeTextInput = new TextPiiEntitiesRecognitionInput ActionContent = new PiiActionContent { ModelVersion = "latest", - RedactionPolicy = new EntityMaskPolicyType(), + RedactionPolicies = { new EntityMaskPolicyType() }, }, }; Response response = await client.AnalyzeTextAsync(analyzeTextInput); @@ -285,10 +285,10 @@ AnalyzeTextInput analyzeTextInput = new TextPiiEntitiesRecognitionInput ActionContent = new PiiActionContent { ModelVersion = "latest", - RedactionPolicy = new CharacterMaskPolicyType + RedactionPolicies = {new CharacterMaskPolicyType { RedactionCharacter = RedactionCharacter.Minus, - }, + }}, }, }; Response response = await client.AnalyzeTextAsync(analyzeTextInput); @@ -599,7 +599,7 @@ AnalyzeTextInput analyzeTextInput = new TextPiiEntitiesRecognitionInput ActionContent = new PiiActionContent { ModelVersion = "latest", - RedactionPolicy = new EntityMaskPolicyType(), + RedactionPolicies = { new EntityMaskPolicyType() }, }, }; Response response = client.AnalyzeText(analyzeTextInput); @@ -628,10 +628,10 @@ AnalyzeTextInput analyzeTextInput = new TextPiiEntitiesRecognitionInput ActionContent = new PiiActionContent { ModelVersion = "latest", - RedactionPolicy = new CharacterMaskPolicyType + RedactionPolicies = {new CharacterMaskPolicyType { RedactionCharacter = RedactionCharacter.Minus, - }, + }}, }, }; Response response = client.AnalyzeText(analyzeTextInput); @@ -1082,9 +1082,12 @@ using RequestContent content = RequestContent.Create(new parameters = new { modelVersion = "latest", - redactionPolicy = new + redactionPolicies = new object[] { - policyKind = "entityMask", + new + { + policyKind = "entityMask", + } }, }, analysisInput = new @@ -1117,10 +1120,13 @@ using RequestContent content = RequestContent.Create(new parameters = new { modelVersion = "latest", - redactionPolicy = new + redactionPolicies = new object[] { - policyKind = "characterMask", - redactionCharacter = "-", + new + { + policyKind = "characterMask", + redactionCharacter = "-", + } }, }, analysisInput = new @@ -1623,9 +1629,12 @@ using RequestContent content = RequestContent.Create(new parameters = new { modelVersion = "latest", - redactionPolicy = new + redactionPolicies = new object[] { - policyKind = "entityMask", + new + { + policyKind = "entityMask", + } }, }, analysisInput = new @@ -1658,10 +1667,13 @@ using RequestContent content = RequestContent.Create(new parameters = new { modelVersion = "latest", - redactionPolicy = new + redactionPolicies = new object[] { - policyKind = "characterMask", - redactionCharacter = "-", + new + { + policyKind = "characterMask", + redactionCharacter = "-", + } }, }, analysisInput = new diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/EntityMaskPolicyType.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/EntityMaskPolicyType.Serialization.cs index 7d6dabc87862..304b110018cc 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/EntityMaskPolicyType.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/EntityMaskPolicyType.Serialization.cs @@ -58,6 +58,9 @@ internal static EntityMaskPolicyType DeserializeEntityMaskPolicyType(JsonElement return null; } RedactionPolicyKind policyKind = default; + IList entityTypes = default; + string policyName = default; + bool? isDefault = default; IDictionary serializedAdditionalRawData = default; Dictionary rawDataDictionary = new Dictionary(); foreach (var property in element.EnumerateObject()) @@ -67,13 +70,41 @@ internal static EntityMaskPolicyType DeserializeEntityMaskPolicyType(JsonElement policyKind = new RedactionPolicyKind(property.Value.GetString()); continue; } + if (property.NameEquals("entityTypes"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(new PiiCategoriesExclude(item.GetString())); + } + entityTypes = array; + continue; + } + if (property.NameEquals("policyName"u8)) + { + policyName = property.Value.GetString(); + continue; + } + if (property.NameEquals("isDefault"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + isDefault = property.Value.GetBoolean(); + continue; + } if (options.Format != "W") { rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); } } serializedAdditionalRawData = rawDataDictionary; - return new EntityMaskPolicyType(policyKind, serializedAdditionalRawData); + return new EntityMaskPolicyType(policyKind, entityTypes ?? new ChangeTrackingList(), policyName, isDefault, serializedAdditionalRawData); } BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/EntityMaskPolicyType.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/EntityMaskPolicyType.cs index 2f16c95093e8..768c34ff3db0 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/EntityMaskPolicyType.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/EntityMaskPolicyType.cs @@ -21,8 +21,11 @@ public EntityMaskPolicyType() /// Initializes a new instance of . /// The entity RedactionPolicy object kind. + /// (Optional) describes the PII categories to which the redaction policy will be applied. If not specified, the redaction policy will be applied to all PII categories. + /// (Optional) name of the redaction policy for identification purposes. + /// (Optional) flag to indicate whether this redaction policy is the default policy to be applied when no specific policy is defined for a PII category. Only one policy can be marked as default. /// Keeps track of any properties unknown to the library. - internal EntityMaskPolicyType(RedactionPolicyKind policyKind, IDictionary serializedAdditionalRawData) : base(policyKind, serializedAdditionalRawData) + internal EntityMaskPolicyType(RedactionPolicyKind policyKind, IList entityTypes, string policyName, bool? isDefault, IDictionary serializedAdditionalRawData) : base(policyKind, entityTypes, policyName, isDefault, serializedAdditionalRawData) { } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/MetadataKind.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/MetadataKind.cs index 184ee345ed77..b5928dfb21f5 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/MetadataKind.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/MetadataKind.cs @@ -39,6 +39,7 @@ public MetadataKind(string value) private const string CurrencyMetadataValue = "CurrencyMetadata"; private const string NumericRangeMetadataValue = "NumericRangeMetadata"; private const string TemporalSpanMetadataValue = "TemporalSpanMetadata"; + private const string AddressMetadataValue = "AddressMetadata"; /// Metadata for date-related values. public static MetadataKind DateMetadata { get; } = new MetadataKind(DateMetadataValue); @@ -74,6 +75,8 @@ public MetadataKind(string value) public static MetadataKind NumericRangeMetadata { get; } = new MetadataKind(NumericRangeMetadataValue); /// Metadata for temporal span values. public static MetadataKind TemporalSpanMetadata { get; } = new MetadataKind(TemporalSpanMetadataValue); + /// Metadata for address-related values. + public static MetadataKind AddressMetadata { get; } = new MetadataKind(AddressMetadataValue); /// Determines if two values are the same. public static bool operator ==(MetadataKind left, MetadataKind right) => left.Equals(right); /// Determines if two values are not the same. diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/Models/AzureAILanguageTextContext.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/Models/AzureAILanguageTextContext.cs index 8a1901297ef4..cb867fa5f3df 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/Models/AzureAILanguageTextContext.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/Models/AzureAILanguageTextContext.cs @@ -19,6 +19,7 @@ namespace Azure.AI.Language.Text [ModelReaderWriterBuildable(typeof(AbstractiveSummarizationResult))] [ModelReaderWriterBuildable(typeof(AbstractiveSummary))] [ModelReaderWriterBuildable(typeof(AbstractiveSummaryActionResult))] + [ModelReaderWriterBuildable(typeof(AddressMetadata))] [ModelReaderWriterBuildable(typeof(AgeMetadata))] [ModelReaderWriterBuildable(typeof(AllowOverlapEntityPolicyType))] [ModelReaderWriterBuildable(typeof(AnalyzeTextEntitiesResult))] @@ -40,6 +41,8 @@ namespace Azure.AI.Language.Text [ModelReaderWriterBuildable(typeof(CharacterMaskPolicyType))] [ModelReaderWriterBuildable(typeof(ClassificationActionResult))] [ModelReaderWriterBuildable(typeof(ClassificationResult))] + [ModelReaderWriterBuildable(typeof(ConfidenceScoreThreshold))] + [ModelReaderWriterBuildable(typeof(ConfidenceScoreThresholdOverride))] [ModelReaderWriterBuildable(typeof(CurrencyMetadata))] [ModelReaderWriterBuildable(typeof(CustomEntitiesActionContent))] [ModelReaderWriterBuildable(typeof(CustomEntitiesOperationAction))] @@ -133,10 +136,11 @@ namespace Azure.AI.Language.Text [ModelReaderWriterBuildable(typeof(SentimentAnalysisActionContent))] [ModelReaderWriterBuildable(typeof(SentimentAnalysisOperationAction))] [ModelReaderWriterBuildable(typeof(SentimentConfidenceScores))] - [ModelReaderWriterBuildable(typeof(SentimentOperationResult))] + [ModelReaderWriterBuildable(typeof(SentimentLROResult))] [ModelReaderWriterBuildable(typeof(SentimentResult))] [ModelReaderWriterBuildable(typeof(SpeedMetadata))] [ModelReaderWriterBuildable(typeof(SummaryContext))] + [ModelReaderWriterBuildable(typeof(SyntheticReplacementPolicyType))] [ModelReaderWriterBuildable(typeof(TargetConfidenceScoreLabel))] [ModelReaderWriterBuildable(typeof(TargetRelation))] [ModelReaderWriterBuildable(typeof(TemperatureMetadata))] diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NamedEntityWithMetadata.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NamedEntityWithMetadata.cs index 8b6a0b3cfec7..54195e1470dc 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NamedEntityWithMetadata.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NamedEntityWithMetadata.cs @@ -77,7 +77,7 @@ internal NamedEntityWithMetadata(string text, string category, int offset, int l /// /// The entity metadata object. /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , , , , , , , , , , , , , , , and . + /// The available derived classes include , , , , , , , , , , , , , , , , and . /// /// Keeps track of any properties unknown to the library. internal NamedEntityWithMetadata(string text, string category, string subcategory, int offset, int length, double confidenceScore, string type, IReadOnlyList tags, BaseMetadata metadata, IDictionary serializedAdditionalRawData) @@ -118,7 +118,7 @@ internal NamedEntityWithMetadata() /// /// The entity metadata object. /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , , , , , , , , , , , , , , , and . + /// The available derived classes include , , , , , , , , , , , , , , , , and . /// public BaseMetadata Metadata { get; } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NoMaskPolicyType.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NoMaskPolicyType.Serialization.cs index 2458965669d1..5241c6ce9856 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NoMaskPolicyType.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NoMaskPolicyType.Serialization.cs @@ -58,6 +58,9 @@ internal static NoMaskPolicyType DeserializeNoMaskPolicyType(JsonElement element return null; } RedactionPolicyKind policyKind = default; + IList entityTypes = default; + string policyName = default; + bool? isDefault = default; IDictionary serializedAdditionalRawData = default; Dictionary rawDataDictionary = new Dictionary(); foreach (var property in element.EnumerateObject()) @@ -67,13 +70,41 @@ internal static NoMaskPolicyType DeserializeNoMaskPolicyType(JsonElement element policyKind = new RedactionPolicyKind(property.Value.GetString()); continue; } + if (property.NameEquals("entityTypes"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(new PiiCategoriesExclude(item.GetString())); + } + entityTypes = array; + continue; + } + if (property.NameEquals("policyName"u8)) + { + policyName = property.Value.GetString(); + continue; + } + if (property.NameEquals("isDefault"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + isDefault = property.Value.GetBoolean(); + continue; + } if (options.Format != "W") { rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); } } serializedAdditionalRawData = rawDataDictionary; - return new NoMaskPolicyType(policyKind, serializedAdditionalRawData); + return new NoMaskPolicyType(policyKind, entityTypes ?? new ChangeTrackingList(), policyName, isDefault, serializedAdditionalRawData); } BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NoMaskPolicyType.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NoMaskPolicyType.cs index 41ac586ad1cb..a882a1399f6e 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NoMaskPolicyType.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/NoMaskPolicyType.cs @@ -21,8 +21,11 @@ public NoMaskPolicyType() /// Initializes a new instance of . /// The entity RedactionPolicy object kind. + /// (Optional) describes the PII categories to which the redaction policy will be applied. If not specified, the redaction policy will be applied to all PII categories. + /// (Optional) name of the redaction policy for identification purposes. + /// (Optional) flag to indicate whether this redaction policy is the default policy to be applied when no specific policy is defined for a PII category. Only one policy can be marked as default. /// Keeps track of any properties unknown to the library. - internal NoMaskPolicyType(RedactionPolicyKind policyKind, IDictionary serializedAdditionalRawData) : base(policyKind, serializedAdditionalRawData) + internal NoMaskPolicyType(RedactionPolicyKind policyKind, IList entityTypes, string policyName, bool? isDefault, IDictionary serializedAdditionalRawData) : base(policyKind, entityTypes, policyName, isDefault, serializedAdditionalRawData) { } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiActionContent.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiActionContent.Serialization.cs index e56e1b8d3a96..43c45ec814ee 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiActionContent.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiActionContent.Serialization.cs @@ -74,11 +74,6 @@ protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWrit } writer.WriteEndArray(); } - if (Optional.IsDefined(RedactionPolicy)) - { - writer.WritePropertyName("redactionPolicy"u8); - writer.WriteObjectValue(RedactionPolicy, options); - } if (Optional.IsDefined(ValueExclusionPolicy)) { writer.WritePropertyName("valueExclusionPolicy"u8); @@ -94,6 +89,26 @@ protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWrit } writer.WriteEndArray(); } + if (Optional.IsCollectionDefined(RedactionPolicies)) + { + writer.WritePropertyName("redactionPolicies"u8); + writer.WriteStartArray(); + foreach (var item in RedactionPolicies) + { + writer.WriteObjectValue(item, options); + } + writer.WriteEndArray(); + } + if (Optional.IsDefined(ConfidenceScoreThreshold)) + { + writer.WritePropertyName("confidenceScoreThreshold"u8); + writer.WriteObjectValue(ConfidenceScoreThreshold, options); + } + if (Optional.IsDefined(DisableEntityValidation)) + { + writer.WritePropertyName("disableEntityValidation"u8); + writer.WriteBooleanValue(DisableEntityValidation.Value); + } if (options.Format != "W" && _serializedAdditionalRawData != null) { foreach (var item in _serializedAdditionalRawData) @@ -137,9 +152,11 @@ internal static PiiActionContent DeserializePiiActionContent(JsonElement element IList piiCategories = default; StringIndexType? stringIndexType = default; IList excludePiiCategories = default; - BaseRedactionPolicy redactionPolicy = default; ValueExclusionPolicy valueExclusionPolicy = default; IList entitySynonyms = default; + IList redactionPolicies = default; + ConfidenceScoreThreshold confidenceScoreThreshold = default; + bool? disableEntityValidation = default; IDictionary serializedAdditionalRawData = default; Dictionary rawDataDictionary = new Dictionary(); foreach (var property in element.EnumerateObject()) @@ -204,36 +221,59 @@ internal static PiiActionContent DeserializePiiActionContent(JsonElement element excludePiiCategories = array; continue; } - if (property.NameEquals("redactionPolicy"u8)) + if (property.NameEquals("valueExclusionPolicy"u8)) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } - redactionPolicy = BaseRedactionPolicy.DeserializeBaseRedactionPolicy(property.Value, options); + valueExclusionPolicy = ValueExclusionPolicy.DeserializeValueExclusionPolicy(property.Value, options); continue; } - if (property.NameEquals("valueExclusionPolicy"u8)) + if (property.NameEquals("entitySynonyms"u8)) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } - valueExclusionPolicy = ValueExclusionPolicy.DeserializeValueExclusionPolicy(property.Value, options); + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(Text.EntitySynonyms.DeserializeEntitySynonyms(item, options)); + } + entitySynonyms = array; continue; } - if (property.NameEquals("entitySynonyms"u8)) + if (property.NameEquals("redactionPolicies"u8)) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } - List array = new List(); + List array = new List(); foreach (var item in property.Value.EnumerateArray()) { - array.Add(Text.EntitySynonyms.DeserializeEntitySynonyms(item, options)); + array.Add(BaseRedactionPolicy.DeserializeBaseRedactionPolicy(item, options)); } - entitySynonyms = array; + redactionPolicies = array; + continue; + } + if (property.NameEquals("confidenceScoreThreshold"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + confidenceScoreThreshold = ConfidenceScoreThreshold.DeserializeConfidenceScoreThreshold(property.Value, options); + continue; + } + if (property.NameEquals("disableEntityValidation"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + disableEntityValidation = property.Value.GetBoolean(); continue; } if (options.Format != "W") @@ -249,9 +289,11 @@ internal static PiiActionContent DeserializePiiActionContent(JsonElement element piiCategories ?? new ChangeTrackingList(), stringIndexType, excludePiiCategories ?? new ChangeTrackingList(), - redactionPolicy, valueExclusionPolicy, entitySynonyms ?? new ChangeTrackingList(), + redactionPolicies ?? new ChangeTrackingList(), + confidenceScoreThreshold, + disableEntityValidation, serializedAdditionalRawData); } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiActionContent.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiActionContent.cs index 35feeb8a765b..056428ea3c7d 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiActionContent.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiActionContent.cs @@ -51,6 +51,7 @@ public PiiActionContent() PiiCategories = new ChangeTrackingList(); ExcludePiiCategories = new ChangeTrackingList(); EntitySynonyms = new ChangeTrackingList(); + RedactionPolicies = new ChangeTrackingList(); } /// Initializes a new instance of . @@ -60,15 +61,17 @@ public PiiActionContent() /// Enumeration of PII categories to be returned in the response. /// StringIndexType to be used for analysis. /// Enumeration of PII categories to be excluded in the response. - /// - /// RedactionPolicy to be used on the input. - /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , and . - /// /// Policy for specific words and terms that should be excluded from detection by the PII detection service. /// (Optional) request parameter that allows the user to provide synonyms for context words that to enhance pii entity detection. + /// + /// List of RedactionPolicies to be used on the input. + /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. + /// The available derived classes include , , and . + /// + /// Confidence score threshold configuration for PII entity recognition. + /// Disable entity validation for PII entity recognition. /// Keeps track of any properties unknown to the library. - internal PiiActionContent(bool? loggingOptOut, string modelVersion, PiiDomain? domain, IList piiCategories, StringIndexType? stringIndexType, IList excludePiiCategories, BaseRedactionPolicy redactionPolicy, ValueExclusionPolicy valueExclusionPolicy, IList entitySynonyms, IDictionary serializedAdditionalRawData) + internal PiiActionContent(bool? loggingOptOut, string modelVersion, PiiDomain? domain, IList piiCategories, StringIndexType? stringIndexType, IList excludePiiCategories, ValueExclusionPolicy valueExclusionPolicy, IList entitySynonyms, IList redactionPolicies, ConfidenceScoreThreshold confidenceScoreThreshold, bool? disableEntityValidation, IDictionary serializedAdditionalRawData) { LoggingOptOut = loggingOptOut; ModelVersion = modelVersion; @@ -76,9 +79,11 @@ internal PiiActionContent(bool? loggingOptOut, string modelVersion, PiiDomain? d PiiCategories = piiCategories; StringIndexType = stringIndexType; ExcludePiiCategories = excludePiiCategories; - RedactionPolicy = redactionPolicy; ValueExclusionPolicy = valueExclusionPolicy; EntitySynonyms = entitySynonyms; + RedactionPolicies = redactionPolicies; + ConfidenceScoreThreshold = confidenceScoreThreshold; + DisableEntityValidation = disableEntityValidation; _serializedAdditionalRawData = serializedAdditionalRawData; } @@ -94,15 +99,19 @@ internal PiiActionContent(bool? loggingOptOut, string modelVersion, PiiDomain? d public StringIndexType? StringIndexType { get; set; } /// Enumeration of PII categories to be excluded in the response. public IList ExcludePiiCategories { get; } - /// - /// RedactionPolicy to be used on the input. - /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , and . - /// - public BaseRedactionPolicy RedactionPolicy { get; set; } /// Policy for specific words and terms that should be excluded from detection by the PII detection service. public ValueExclusionPolicy ValueExclusionPolicy { get; set; } /// (Optional) request parameter that allows the user to provide synonyms for context words that to enhance pii entity detection. public IList EntitySynonyms { get; } + /// + /// List of RedactionPolicies to be used on the input. + /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. + /// The available derived classes include , , and . + /// + public IList RedactionPolicies { get; } + /// Confidence score threshold configuration for PII entity recognition. + public ConfidenceScoreThreshold ConfidenceScoreThreshold { get; set; } + /// Disable entity validation for PII entity recognition. + public bool? DisableEntityValidation { get; set; } } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiCategoriesExclude.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiCategoriesExclude.cs index c05ec5f3bf4d..0fbb10b48db1 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiCategoriesExclude.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiCategoriesExclude.cs @@ -201,7 +201,24 @@ public PiiCategoriesExclude(string value) private const string SortCodeValue = "SortCode"; private const string PINValue = "PIN"; private const string VINValue = "VIN"; + private const string VehicleIdentificationNumberValue = "VehicleIdentificationNumber"; private const string LicensePlateValue = "LicensePlate"; + private const string KRPassportNumberValue = "KRPassportNumber"; + private const string KRDriversLicenseNumberValue = "KRDriversLicenseNumber"; + private const string KRSocialSecurityNumberValue = "KRSocialSecurityNumber"; + private const string GovernmentIssuedIdValue = "GovernmentIssuedId"; + private const string PasswordValue = "Password"; + private const string NationalIdValue = "NationalId"; + private const string ZipCodeValue = "ZipCode"; + private const string CVVValue = "CVV"; + private const string ExpirationDateValue = "ExpirationDate"; + private const string CASocialIdentificationNumberValue = "CASocialIdentificationNumber"; + private const string MedicareBeneficiaryIdValue = "USMedicareBeneficiaryId"; + private const string LocationValue = "Location"; + private const string CityValue = "City"; + private const string StateValue = "State"; + private const string AirportValue = "Airport"; + private const string GPEValue = "GPE"; /// ABA Routing number. public static PiiCategoriesExclude AbaRoutingNumber { get; } = new PiiCategoriesExclude(AbaRoutingNumberValue); @@ -561,8 +578,42 @@ public PiiCategoriesExclude(string value) public static PiiCategoriesExclude PIN { get; } = new PiiCategoriesExclude(PINValue); /// VIN. public static PiiCategoriesExclude VIN { get; } = new PiiCategoriesExclude(VINValue); + /// VIN. + public static PiiCategoriesExclude VehicleIdentificationNumber { get; } = new PiiCategoriesExclude(VehicleIdentificationNumberValue); /// License Plate. public static PiiCategoriesExclude LicensePlate { get; } = new PiiCategoriesExclude(LicensePlateValue); + /// KR Passport Number. + public static PiiCategoriesExclude KRPassportNumber { get; } = new PiiCategoriesExclude(KRPassportNumberValue); + /// KR Driver's License Number. + public static PiiCategoriesExclude KRDriversLicenseNumber { get; } = new PiiCategoriesExclude(KRDriversLicenseNumberValue); + /// KR Social Security Number. + public static PiiCategoriesExclude KRSocialSecurityNumber { get; } = new PiiCategoriesExclude(KRSocialSecurityNumberValue); + /// Government Issued ID. + public static PiiCategoriesExclude GovernmentIssuedId { get; } = new PiiCategoriesExclude(GovernmentIssuedIdValue); + /// Password. + public static PiiCategoriesExclude Password { get; } = new PiiCategoriesExclude(PasswordValue); + /// National Identification. + public static PiiCategoriesExclude NationalId { get; } = new PiiCategoriesExclude(NationalIdValue); + /// Zip Code. + public static PiiCategoriesExclude ZipCode { get; } = new PiiCategoriesExclude(ZipCodeValue); + /// Card Verification Value. + public static PiiCategoriesExclude CVV { get; } = new PiiCategoriesExclude(CVVValue); + /// Expiration Date. + public static PiiCategoriesExclude ExpirationDate { get; } = new PiiCategoriesExclude(ExpirationDateValue); + /// CA Social Identification Number. + public static PiiCategoriesExclude CASocialIdentificationNumber { get; } = new PiiCategoriesExclude(CASocialIdentificationNumberValue); + /// Medicare Beneficiary ID. + public static PiiCategoriesExclude MedicareBeneficiaryId { get; } = new PiiCategoriesExclude(MedicareBeneficiaryIdValue); + /// Location. + public static PiiCategoriesExclude Location { get; } = new PiiCategoriesExclude(LocationValue); + /// City. + public static PiiCategoriesExclude City { get; } = new PiiCategoriesExclude(CityValue); + /// State. + public static PiiCategoriesExclude State { get; } = new PiiCategoriesExclude(StateValue); + /// Airport. + public static PiiCategoriesExclude Airport { get; } = new PiiCategoriesExclude(AirportValue); + /// Geopolitical Entity. + public static PiiCategoriesExclude GPE { get; } = new PiiCategoriesExclude(GPEValue); /// Determines if two values are the same. public static bool operator ==(PiiCategoriesExclude left, PiiCategoriesExclude right) => left.Equals(right); /// Determines if two values are not the same. diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiCategory.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiCategory.cs index ee657d22ba22..3cdb0b8a2477 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiCategory.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/PiiCategory.cs @@ -201,7 +201,24 @@ public PiiCategory(string value) private const string SortCodeValue = "SortCode"; private const string PINValue = "PIN"; private const string VINValue = "VIN"; + private const string VehicleIdentificationNumberValue = "VehicleIdentificationNumber"; private const string LicensePlateValue = "LicensePlate"; + private const string KRPassportNumberValue = "KRPassportNumber"; + private const string KRDriversLicenseNumberValue = "KRDriversLicenseNumber"; + private const string KRSocialSecurityNumberValue = "KRSocialSecurityNumber"; + private const string GovernmentIssuedIdValue = "GovernmentIssuedId"; + private const string PasswordValue = "Password"; + private const string NationalIdValue = "NationalId"; + private const string ZipCodeValue = "ZipCode"; + private const string CVVValue = "CVV"; + private const string ExpirationDateValue = "ExpirationDate"; + private const string CASocialIdentificationNumberValue = "CASocialIdentificationNumber"; + private const string MedicareBeneficiaryIdValue = "USMedicareBeneficiaryId"; + private const string LocationValue = "Location"; + private const string CityValue = "City"; + private const string StateValue = "State"; + private const string AirportValue = "Airport"; + private const string GPEValue = "GPE"; private const string AllValue = "All"; private const string DefaultValue = "Default"; @@ -563,8 +580,42 @@ public PiiCategory(string value) public static PiiCategory PIN { get; } = new PiiCategory(PINValue); /// VIN. public static PiiCategory VIN { get; } = new PiiCategory(VINValue); + /// VIN. + public static PiiCategory VehicleIdentificationNumber { get; } = new PiiCategory(VehicleIdentificationNumberValue); /// License Plate. public static PiiCategory LicensePlate { get; } = new PiiCategory(LicensePlateValue); + /// KR Passport Number. + public static PiiCategory KRPassportNumber { get; } = new PiiCategory(KRPassportNumberValue); + /// KR Driver's License Number. + public static PiiCategory KRDriversLicenseNumber { get; } = new PiiCategory(KRDriversLicenseNumberValue); + /// KR Social Security Number. + public static PiiCategory KRSocialSecurityNumber { get; } = new PiiCategory(KRSocialSecurityNumberValue); + /// Government Issued ID. + public static PiiCategory GovernmentIssuedId { get; } = new PiiCategory(GovernmentIssuedIdValue); + /// Password. + public static PiiCategory Password { get; } = new PiiCategory(PasswordValue); + /// National Identification. + public static PiiCategory NationalId { get; } = new PiiCategory(NationalIdValue); + /// Zip Code. + public static PiiCategory ZipCode { get; } = new PiiCategory(ZipCodeValue); + /// Card Verification Value. + public static PiiCategory CVV { get; } = new PiiCategory(CVVValue); + /// Expiration Date. + public static PiiCategory ExpirationDate { get; } = new PiiCategory(ExpirationDateValue); + /// CA Social Identification Number. + public static PiiCategory CASocialIdentificationNumber { get; } = new PiiCategory(CASocialIdentificationNumberValue); + /// Medicare Beneficiary ID. + public static PiiCategory MedicareBeneficiaryId { get; } = new PiiCategory(MedicareBeneficiaryIdValue); + /// Location. + public static PiiCategory Location { get; } = new PiiCategory(LocationValue); + /// City. + public static PiiCategory City { get; } = new PiiCategory(CityValue); + /// State. + public static PiiCategory State { get; } = new PiiCategory(StateValue); + /// Airport. + public static PiiCategory Airport { get; } = new PiiCategory(AirportValue); + /// Geopolitical Entity. + public static PiiCategory GPE { get; } = new PiiCategory(GPEValue); /// All PII categories. public static PiiCategory All { get; } = new PiiCategory(AllValue); /// Default PII categories for the language. diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/RedactionPolicyKind.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/RedactionPolicyKind.cs index 6fc733cd2a20..18c40e3f42c2 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/RedactionPolicyKind.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/RedactionPolicyKind.cs @@ -25,6 +25,7 @@ public RedactionPolicyKind(string value) private const string NoMaskValue = "noMask"; private const string CharacterMaskValue = "characterMask"; private const string EntityMaskValue = "entityMask"; + private const string SyntheticReplacementValue = "syntheticReplacement"; /// Do not redact detected entities. public static RedactionPolicyKind NoMask { get; } = new RedactionPolicyKind(NoMaskValue); @@ -32,6 +33,8 @@ public RedactionPolicyKind(string value) public static RedactionPolicyKind CharacterMask { get; } = new RedactionPolicyKind(CharacterMaskValue); /// Redact detected entities with entity type. public static RedactionPolicyKind EntityMask { get; } = new RedactionPolicyKind(EntityMaskValue); + /// Replace detected entities with synthetic values. + public static RedactionPolicyKind SyntheticReplacement { get; } = new RedactionPolicyKind(SyntheticReplacementValue); /// Determines if two values are the same. public static bool operator ==(RedactionPolicyKind left, RedactionPolicyKind right) => left.Equals(right); /// Determines if two values are not the same. diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentAnalysisOperationAction.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentAnalysisOperationAction.Serialization.cs index 755912e9cc7a..30bd79d55516 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentAnalysisOperationAction.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentAnalysisOperationAction.Serialization.cs @@ -35,10 +35,10 @@ protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWri } base.JsonModelWriteCore(writer, options); - if (Optional.IsDefined(ActionContent)) + if (Optional.IsDefined(Parameters)) { writer.WritePropertyName("parameters"u8); - writer.WriteObjectValue(ActionContent, options); + writer.WriteObjectValue(Parameters, options); } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentAnalysisOperationAction.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentAnalysisOperationAction.cs index 0cb3c79e5015..11a51c02d7a2 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentAnalysisOperationAction.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentAnalysisOperationAction.cs @@ -23,13 +23,13 @@ public SentimentAnalysisOperationAction() /// task name. /// The kind of task to perform. /// Keeps track of any properties unknown to the library. - /// Parameters for the Sentiment Analysis task. - internal SentimentAnalysisOperationAction(string name, AnalyzeTextOperationActionKind kind, IDictionary serializedAdditionalRawData, SentimentAnalysisActionContent actionContent) : base(name, kind, serializedAdditionalRawData) + /// Parameters for the Sentiment Analysis task. + internal SentimentAnalysisOperationAction(string name, AnalyzeTextOperationActionKind kind, IDictionary serializedAdditionalRawData, SentimentAnalysisActionContent parameters) : base(name, kind, serializedAdditionalRawData) { - ActionContent = actionContent; + Parameters = parameters; } /// Parameters for the Sentiment Analysis task. - public SentimentAnalysisActionContent ActionContent { get; set; } + public SentimentAnalysisActionContent Parameters { get; set; } } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentOperationResult.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentLROResult.Serialization.cs similarity index 71% rename from sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentOperationResult.Serialization.cs rename to sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentLROResult.Serialization.cs index c15276c49f11..57c056418f54 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentOperationResult.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentLROResult.Serialization.cs @@ -13,11 +13,11 @@ namespace Azure.AI.Language.Text { - public partial class SentimentOperationResult : IUtf8JsonSerializable, IJsonModel + public partial class SentimentLROResult : IUtf8JsonSerializable, IJsonModel { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) => ((IJsonModel)this).Write(writer, ModelSerializationExtensions.WireOptions); + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) => ((IJsonModel)this).Write(writer, ModelSerializationExtensions.WireOptions); - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) { writer.WriteStartObject(); JsonModelWriteCore(writer, options); @@ -28,10 +28,10 @@ void IJsonModel.Write(Utf8JsonWriter writer, ModelRead /// The client options for reading and writing models. protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; if (format != "J") { - throw new FormatException($"The model {nameof(SentimentOperationResult)} does not support writing '{format}' format."); + throw new FormatException($"The model {nameof(SentimentLROResult)} does not support writing '{format}' format."); } base.JsonModelWriteCore(writer, options); @@ -39,19 +39,19 @@ protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWri writer.WriteObjectValue(Results, options); } - SentimentOperationResult IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) + SentimentLROResult IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; if (format != "J") { - throw new FormatException($"The model {nameof(SentimentOperationResult)} does not support reading '{format}' format."); + throw new FormatException($"The model {nameof(SentimentLROResult)} does not support reading '{format}' format."); } using JsonDocument document = JsonDocument.ParseValue(ref reader); - return DeserializeSentimentOperationResult(document.RootElement, options); + return DeserializeSentimentLROResult(document.RootElement, options); } - internal static SentimentOperationResult DeserializeSentimentOperationResult(JsonElement element, ModelReaderWriterOptions options = null) + internal static SentimentLROResult DeserializeSentimentLROResult(JsonElement element, ModelReaderWriterOptions options = null) { options ??= ModelSerializationExtensions.WireOptions; @@ -99,7 +99,7 @@ internal static SentimentOperationResult DeserializeSentimentOperationResult(Jso } } serializedAdditionalRawData = rawDataDictionary; - return new SentimentOperationResult( + return new SentimentLROResult( lastUpdateDateTime, status, taskName, @@ -108,43 +108,43 @@ internal static SentimentOperationResult DeserializeSentimentOperationResult(Jso results); } - BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; switch (format) { case "J": return ModelReaderWriter.Write(this, options, AzureAILanguageTextContext.Default); default: - throw new FormatException($"The model {nameof(SentimentOperationResult)} does not support writing '{options.Format}' format."); + throw new FormatException($"The model {nameof(SentimentLROResult)} does not support writing '{options.Format}' format."); } } - SentimentOperationResult IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) + SentimentLROResult IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; switch (format) { case "J": { using JsonDocument document = JsonDocument.Parse(data, ModelSerializationExtensions.JsonDocumentOptions); - return DeserializeSentimentOperationResult(document.RootElement, options); + return DeserializeSentimentLROResult(document.RootElement, options); } default: - throw new FormatException($"The model {nameof(SentimentOperationResult)} does not support reading '{options.Format}' format."); + throw new FormatException($"The model {nameof(SentimentLROResult)} does not support reading '{options.Format}' format."); } } - string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; /// Deserializes the model from a raw response. /// The response to deserialize the model from. - internal static new SentimentOperationResult FromResponse(Response response) + internal static new SentimentLROResult FromResponse(Response response) { using var document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions); - return DeserializeSentimentOperationResult(document.RootElement); + return DeserializeSentimentLROResult(document.RootElement); } /// Convert into a . diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentOperationResult.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentLROResult.cs similarity index 70% rename from sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentOperationResult.cs rename to sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentLROResult.cs index 89bbef769913..bab1074c129a 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentOperationResult.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SentimentLROResult.cs @@ -11,14 +11,14 @@ namespace Azure.AI.Language.Text { /// Contains the Sentiment Analysis LRO results. - public partial class SentimentOperationResult : AnalyzeTextOperationResult + public partial class SentimentLROResult : AnalyzeTextOperationResult { - /// Initializes a new instance of . + /// Initializes a new instance of . /// The last updated time in UTC for the task. /// The status of the task at the mentioned last update time. /// The sentiment analysis results. /// is null. - internal SentimentOperationResult(DateTimeOffset lastUpdateDateTime, TextActionState status, SentimentResult results) : base(lastUpdateDateTime, status) + internal SentimentLROResult(DateTimeOffset lastUpdateDateTime, TextActionState status, SentimentResult results) : base(lastUpdateDateTime, status) { Argument.AssertNotNull(results, nameof(results)); @@ -26,20 +26,20 @@ internal SentimentOperationResult(DateTimeOffset lastUpdateDateTime, TextActionS Results = results; } - /// Initializes a new instance of . + /// Initializes a new instance of . /// The last updated time in UTC for the task. /// The status of the task at the mentioned last update time. /// task name. /// Kind of the task. /// Keeps track of any properties unknown to the library. /// The sentiment analysis results. - internal SentimentOperationResult(DateTimeOffset lastUpdateDateTime, TextActionState status, string name, AnalyzeTextOperationResultsKind kind, IDictionary serializedAdditionalRawData, SentimentResult results) : base(lastUpdateDateTime, status, name, kind, serializedAdditionalRawData) + internal SentimentLROResult(DateTimeOffset lastUpdateDateTime, TextActionState status, string name, AnalyzeTextOperationResultsKind kind, IDictionary serializedAdditionalRawData, SentimentResult results) : base(lastUpdateDateTime, status, name, kind, serializedAdditionalRawData) { Results = results; } - /// Initializes a new instance of for deserialization. - internal SentimentOperationResult() + /// Initializes a new instance of for deserialization. + internal SentimentLROResult() { } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SyntheticReplacementPolicyType.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SyntheticReplacementPolicyType.Serialization.cs new file mode 100644 index 000000000000..f6d5576ee70a --- /dev/null +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SyntheticReplacementPolicyType.Serialization.cs @@ -0,0 +1,178 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.AI.Language.Text +{ + public partial class SyntheticReplacementPolicyType : IUtf8JsonSerializable, IJsonModel + { + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) => ((IJsonModel)this).Write(writer, ModelSerializationExtensions.WireOptions); + + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + JsonModelWriteCore(writer, options); + writer.WriteEndObject(); + } + + /// The JSON writer. + /// The client options for reading and writing models. + protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(SyntheticReplacementPolicyType)} does not support writing '{format}' format."); + } + + base.JsonModelWriteCore(writer, options); + if (Optional.IsDefined(PreserveDataFormat)) + { + writer.WritePropertyName("preserveDataFormat"u8); + writer.WriteBooleanValue(PreserveDataFormat.Value); + } + } + + SyntheticReplacementPolicyType IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(SyntheticReplacementPolicyType)} does not support reading '{format}' format."); + } + + using JsonDocument document = JsonDocument.ParseValue(ref reader); + return DeserializeSyntheticReplacementPolicyType(document.RootElement, options); + } + + internal static SyntheticReplacementPolicyType DeserializeSyntheticReplacementPolicyType(JsonElement element, ModelReaderWriterOptions options = null) + { + options ??= ModelSerializationExtensions.WireOptions; + + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + bool? preserveDataFormat = default; + RedactionPolicyKind policyKind = default; + IList entityTypes = default; + string policyName = default; + bool? isDefault = default; + IDictionary serializedAdditionalRawData = default; + Dictionary rawDataDictionary = new Dictionary(); + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("preserveDataFormat"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + preserveDataFormat = property.Value.GetBoolean(); + continue; + } + if (property.NameEquals("policyKind"u8)) + { + policyKind = new RedactionPolicyKind(property.Value.GetString()); + continue; + } + if (property.NameEquals("entityTypes"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(new PiiCategoriesExclude(item.GetString())); + } + entityTypes = array; + continue; + } + if (property.NameEquals("policyName"u8)) + { + policyName = property.Value.GetString(); + continue; + } + if (property.NameEquals("isDefault"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + isDefault = property.Value.GetBoolean(); + continue; + } + if (options.Format != "W") + { + rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); + } + } + serializedAdditionalRawData = rawDataDictionary; + return new SyntheticReplacementPolicyType( + policyKind, + entityTypes ?? new ChangeTrackingList(), + policyName, + isDefault, + serializedAdditionalRawData, + preserveDataFormat); + } + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options, AzureAILanguageTextContext.Default); + default: + throw new FormatException($"The model {nameof(SyntheticReplacementPolicyType)} does not support writing '{options.Format}' format."); + } + } + + SyntheticReplacementPolicyType IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) + { + var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + + switch (format) + { + case "J": + { + using JsonDocument document = JsonDocument.Parse(data, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializeSyntheticReplacementPolicyType(document.RootElement, options); + } + default: + throw new FormatException($"The model {nameof(SyntheticReplacementPolicyType)} does not support reading '{options.Format}' format."); + } + } + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// Deserializes the model from a raw response. + /// The response to deserialize the model from. + internal static new SyntheticReplacementPolicyType FromResponse(Response response) + { + using var document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializeSyntheticReplacementPolicyType(document.RootElement); + } + + /// Convert into a . + internal override RequestContent ToRequestContent() + { + var content = new Utf8JsonRequestContent(); + content.JsonWriter.WriteObjectValue(this, ModelSerializationExtensions.WireOptions); + return content; + } + } +} diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SyntheticReplacementPolicyType.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SyntheticReplacementPolicyType.cs new file mode 100644 index 000000000000..c39591ed7f20 --- /dev/null +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/SyntheticReplacementPolicyType.cs @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; + +namespace Azure.AI.Language.Text +{ + /// Represents the policy of replacing detected PII with synthetic values. + public partial class SyntheticReplacementPolicyType : BaseRedactionPolicy + { + /// Initializes a new instance of . + public SyntheticReplacementPolicyType() + { + PolicyKind = RedactionPolicyKind.SyntheticReplacement; + } + + /// Initializes a new instance of . + /// The entity RedactionPolicy object kind. + /// (Optional) describes the PII categories to which the redaction policy will be applied. If not specified, the redaction policy will be applied to all PII categories. + /// (Optional) name of the redaction policy for identification purposes. + /// (Optional) flag to indicate whether this redaction policy is the default policy to be applied when no specific policy is defined for a PII category. Only one policy can be marked as default. + /// Keeps track of any properties unknown to the library. + /// Optional flag to indicate whether to preserve the original data format in the synthetic replacement. Default is false. + internal SyntheticReplacementPolicyType(RedactionPolicyKind policyKind, IList entityTypes, string policyName, bool? isDefault, IDictionary serializedAdditionalRawData, bool? preserveDataFormat) : base(policyKind, entityTypes, policyName, isDefault, serializedAdditionalRawData) + { + PreserveDataFormat = preserveDataFormat; + } + + /// Optional flag to indicate whether to preserve the original data format in the synthetic replacement. Default is false. + public bool? PreserveDataFormat { get; set; } + } +} diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextActions.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextActions.cs index 54e44707209c..7f1783ab0df2 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextActions.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextActions.cs @@ -67,7 +67,7 @@ internal TextActions(int completed, int failed, int inProgress, int total) /// /// Enumerable of Analyze text job results. /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , , , , , , , , , and . + /// The available derived classes include , , , , , , , , , and . /// /// Keeps track of any properties unknown to the library. internal TextActions(int completed, int failed, int inProgress, int total, IReadOnlyList items, IDictionary serializedAdditionalRawData) @@ -96,7 +96,7 @@ internal TextActions() /// /// Enumerable of Analyze text job results. /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , , , , , , , , , and . + /// The available derived classes include , , , , , , , , , and . /// public IReadOnlyList Items { get; } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextAnalysisClientOptions.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextAnalysisClientOptions.cs index 15df13be2b42..07c3cea52a16 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextAnalysisClientOptions.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextAnalysisClientOptions.cs @@ -13,7 +13,7 @@ namespace Azure.AI.Language.Text /// Client options for TextAnalysisClient. public partial class TextAnalysisClientOptions : ClientOptions { - private const ServiceVersion LatestVersion = ServiceVersion.V2025_05_15_Preview; + private const ServiceVersion LatestVersion = ServiceVersion.V2025_11_15_Preview; /// The version of the service to use. public enum ServiceVersion @@ -24,10 +24,12 @@ public enum ServiceVersion V2023_04_01 = 2, /// Service version "2024-11-01". V2024_11_01 = 3, - /// Service version "2024-11-15-preview". - V2024_11_15_Preview = 4, + /// Service version "2025-11-01". + V2025_11_01 = 4, /// Service version "2025-05-15-preview". V2025_05_15_Preview = 5, + /// Service version "2025-11-15-preview". + V2025_11_15_Preview = 6, } internal string Version { get; } @@ -40,8 +42,9 @@ public TextAnalysisClientOptions(ServiceVersion version = LatestVersion) ServiceVersion.V2022_05_01 => "2022-05-01", ServiceVersion.V2023_04_01 => "2023-04-01", ServiceVersion.V2024_11_01 => "2024-11-01", - ServiceVersion.V2024_11_15_Preview => "2024-11-15-preview", + ServiceVersion.V2025_11_01 => "2025-11-01", ServiceVersion.V2025_05_15_Preview => "2025-05-15-preview", + ServiceVersion.V2025_11_15_Preview => "2025-11-15-preview", _ => throw new NotSupportedException() }; } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextAnalysisModelFactory.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextAnalysisModelFactory.cs index 138fc4f17c5b..5ba852b95f31 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextAnalysisModelFactory.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/TextAnalysisModelFactory.cs @@ -43,6 +43,27 @@ public static EntitySynonym EntitySynonym(string synonym = null, string language return new EntitySynonym(synonym, language, serializedAdditionalRawData: null); } + /// Initializes a new instance of . + /// Minimum confidence score threshold for the PII entities to be returned in the response. Entities with a confidence score below this threshold will be filtered out. Value should be between 0.0 and 1.0. + /// List of confidence score threshold overrides for specific PII categories. + /// A new instance for mocking. + public static ConfidenceScoreThreshold ConfidenceScoreThreshold(float @default = default, IEnumerable overrides = null) + { + overrides ??= new List(); + + return new ConfidenceScoreThreshold(@default, overrides?.ToList(), serializedAdditionalRawData: null); + } + + /// Initializes a new instance of . + /// The PII category for which to override the confidence score threshold. + /// The confidence score threshold for the specified PII category. + /// The 2 letter ISO 639-1 language for which the override applies. If not specified, the override applies to all languages. + /// A new instance for mocking. + public static ConfidenceScoreThresholdOverride ConfidenceScoreThresholdOverride(PiiCategoriesExclude entity = default, float value = default, string language = null) + { + return new ConfidenceScoreThresholdOverride(entity, value, language, serializedAdditionalRawData: null); + } + /// Initializes a new instance of . /// Entity linking result. /// A new instance for mocking. @@ -273,7 +294,7 @@ public static EntityActionResult EntityActionResult(string id = null, IEnumerabl /// /// The entity metadata object. /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , , , , , , , , , , , , , , , and . + /// The available derived classes include , , , , , , , , , , , , , , , , and . /// /// A new instance for mocking. public static NamedEntityWithMetadata NamedEntityWithMetadata(string text = null, string category = null, string subcategory = null, int offset = default, int length = default, double confidenceScore = default, string type = null, IEnumerable tags = null, BaseMetadata metadata = null) @@ -384,6 +405,29 @@ public static CurrencyMetadata CurrencyMetadata(double value = default, string u return new CurrencyMetadata(MetadataKind.CurrencyMetadata, serializedAdditionalRawData: null, value, unit, iso4217); } + /// Initializes a new instance of . + /// The fully formatted address string following postal conventions for the address's country/region. + /// The full address string as recognized from the input text. + /// The city name of the address. + /// The state or province name of the address. + /// The postal or ZIP code of the address. + /// The country or region name of the address. + /// A new instance for mocking. + public static AddressMetadata AddressMetadata(string formatedAddress = null, IEnumerable addressLines = null, string city = null, string state = null, string postalCode = null, string countryOrRegion = null) + { + addressLines ??= new List(); + + return new AddressMetadata( + MetadataKind.AddressMetadata, + serializedAdditionalRawData: null, + formatedAddress, + addressLines?.ToList(), + city, + state, + postalCode, + countryOrRegion); + } + /// Initializes a new instance of . /// List of date values. /// A new instance for mocking. @@ -833,7 +877,7 @@ public static AnalyzeTextOperationState AnalyzeTextOperationState(string display /// /// Enumerable of Analyze text job results. /// Please note is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes. - /// The available derived classes include , , , , , , , , , and . + /// The available derived classes include , , , , , , , , , and . /// /// A new instance for mocking. public static TextActions TextActions(int completed = default, int failed = default, int inProgress = default, int total = default, IEnumerable items = null) @@ -1256,15 +1300,15 @@ public static PiiEntityRecognitionOperationResult PiiEntityRecognitionOperationR results); } - /// Initializes a new instance of . + /// Initializes a new instance of . /// The last updated time in UTC for the task. /// The status of the task at the mentioned last update time. /// task name. /// The sentiment analysis results. - /// A new instance for mocking. - public static SentimentOperationResult SentimentOperationResult(DateTimeOffset lastUpdateDateTime = default, TextActionState status = default, string name = null, SentimentResult results = null) + /// A new instance for mocking. + public static SentimentLROResult SentimentLROResult(DateTimeOffset lastUpdateDateTime = default, TextActionState status = default, string name = null, SentimentResult results = null) { - return new SentimentOperationResult( + return new SentimentLROResult( lastUpdateDateTime, status, name, diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/UnknownBaseRedactionPolicy.Serialization.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/UnknownBaseRedactionPolicy.Serialization.cs index 8d5413ee81ae..49a501a4c7c4 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/UnknownBaseRedactionPolicy.Serialization.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/UnknownBaseRedactionPolicy.Serialization.cs @@ -58,6 +58,9 @@ internal static UnknownBaseRedactionPolicy DeserializeUnknownBaseRedactionPolicy return null; } RedactionPolicyKind policyKind = "Unknown"; + IList entityTypes = default; + string policyName = default; + bool? isDefault = default; IDictionary serializedAdditionalRawData = default; Dictionary rawDataDictionary = new Dictionary(); foreach (var property in element.EnumerateObject()) @@ -67,13 +70,41 @@ internal static UnknownBaseRedactionPolicy DeserializeUnknownBaseRedactionPolicy policyKind = new RedactionPolicyKind(property.Value.GetString()); continue; } + if (property.NameEquals("entityTypes"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(new PiiCategoriesExclude(item.GetString())); + } + entityTypes = array; + continue; + } + if (property.NameEquals("policyName"u8)) + { + policyName = property.Value.GetString(); + continue; + } + if (property.NameEquals("isDefault"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + isDefault = property.Value.GetBoolean(); + continue; + } if (options.Format != "W") { rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); } } serializedAdditionalRawData = rawDataDictionary; - return new UnknownBaseRedactionPolicy(policyKind, serializedAdditionalRawData); + return new UnknownBaseRedactionPolicy(policyKind, entityTypes ?? new ChangeTrackingList(), policyName, isDefault, serializedAdditionalRawData); } BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/UnknownBaseRedactionPolicy.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/UnknownBaseRedactionPolicy.cs index 4abd33011f14..e0a8dd2aa4de 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/UnknownBaseRedactionPolicy.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/src/Generated/UnknownBaseRedactionPolicy.cs @@ -15,8 +15,11 @@ internal partial class UnknownBaseRedactionPolicy : BaseRedactionPolicy { /// Initializes a new instance of . /// The entity RedactionPolicy object kind. + /// (Optional) describes the PII categories to which the redaction policy will be applied. If not specified, the redaction policy will be applied to all PII categories. + /// (Optional) name of the redaction policy for identification purposes. + /// (Optional) flag to indicate whether this redaction policy is the default policy to be applied when no specific policy is defined for a PII category. Only one policy can be marked as default. /// Keeps track of any properties unknown to the library. - internal UnknownBaseRedactionPolicy(RedactionPolicyKind policyKind, IDictionary serializedAdditionalRawData) : base(policyKind, serializedAdditionalRawData) + internal UnknownBaseRedactionPolicy(RedactionPolicyKind policyKind, IList entityTypes, string policyName, bool? isDefault, IDictionary serializedAdditionalRawData) : base(policyKind, entityTypes, policyName, isDefault, serializedAdditionalRawData) { } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Generated/Samples/Samples_TextAnalysisClient.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Generated/Samples/Samples_TextAnalysisClient.cs index a4e549e2c636..46d922df575f 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Generated/Samples/Samples_TextAnalysisClient.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Generated/Samples/Samples_TextAnalysisClient.cs @@ -1370,10 +1370,13 @@ public void Example_Text_AnalyzeText_SuccessfulPiiEntityRecognitionMaskedEntitie parameters = new { modelVersion = "latest", - redactionPolicy = new - { - policyKind = "entityMask", - }, + redactionPolicies = new object[] + { +new +{ +policyKind = "entityMask", +} + }, }, analysisInput = new { @@ -1408,10 +1411,13 @@ public async Task Example_Text_AnalyzeText_SuccessfulPiiEntityRecognitionMaskedE parameters = new { modelVersion = "latest", - redactionPolicy = new - { - policyKind = "entityMask", - }, + redactionPolicies = new object[] + { +new +{ +policyKind = "entityMask", +} + }, }, analysisInput = new { @@ -1452,7 +1458,7 @@ public void Example_Text_AnalyzeText_SuccessfulPiiEntityRecognitionMaskedEntitie ActionContent = new PiiActionContent { ModelVersion = "latest", - RedactionPolicy = new EntityMaskPolicyType(), + RedactionPolicies = { new EntityMaskPolicyType() }, }, }; Response response = client.AnalyzeText(analyzeTextInput); @@ -1478,7 +1484,7 @@ public async Task Example_Text_AnalyzeText_SuccessfulPiiEntityRecognitionMaskedE ActionContent = new PiiActionContent { ModelVersion = "latest", - RedactionPolicy = new EntityMaskPolicyType(), + RedactionPolicies = { new EntityMaskPolicyType() }, }, }; Response response = await client.AnalyzeTextAsync(analyzeTextInput); @@ -1498,11 +1504,14 @@ public void Example_Text_AnalyzeText_SuccessfulPiiEntityRecognitionRedactionPoli parameters = new { modelVersion = "latest", - redactionPolicy = new - { - policyKind = "characterMask", - redactionCharacter = "-", - }, + redactionPolicies = new object[] + { +new +{ +policyKind = "characterMask", +redactionCharacter = "-", +} + }, }, analysisInput = new { @@ -1549,11 +1558,14 @@ public async Task Example_Text_AnalyzeText_SuccessfulPiiEntityRecognitionRedacti parameters = new { modelVersion = "latest", - redactionPolicy = new - { - policyKind = "characterMask", - redactionCharacter = "-", - }, + redactionPolicies = new object[] + { +new +{ +policyKind = "characterMask", +redactionCharacter = "-", +} + }, }, analysisInput = new { @@ -1612,10 +1624,10 @@ public void Example_Text_AnalyzeText_SuccessfulPiiEntityRecognitionRedactionPoli ActionContent = new PiiActionContent { ModelVersion = "latest", - RedactionPolicy = new CharacterMaskPolicyType - { - RedactionCharacter = RedactionCharacter.Minus, - }, + RedactionPolicies = {new CharacterMaskPolicyType +{ +RedactionCharacter = RedactionCharacter.Minus, +}}, }, }; Response response = client.AnalyzeText(analyzeTextInput); @@ -1647,10 +1659,10 @@ public async Task Example_Text_AnalyzeText_SuccessfulPiiEntityRecognitionRedacti ActionContent = new PiiActionContent { ModelVersion = "latest", - RedactionPolicy = new CharacterMaskPolicyType - { - RedactionCharacter = RedactionCharacter.Minus, - }, + RedactionPolicies = {new CharacterMaskPolicyType +{ +RedactionCharacter = RedactionCharacter.Minus, +}}, }, }; Response response = await client.AnalyzeTextAsync(analyzeTextInput); diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Infrastructure/TextAnalysisTestBase.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Infrastructure/TextAnalysisTestBase.cs index 2c5f7aea9869..8991c53eedd5 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Infrastructure/TextAnalysisTestBase.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Infrastructure/TextAnalysisTestBase.cs @@ -14,8 +14,8 @@ namespace Azure.AI.Language.Text.Tests TextAnalysisClientOptions.ServiceVersion.V2022_05_01, TextAnalysisClientOptions.ServiceVersion.V2023_04_01, TextAnalysisClientOptions.ServiceVersion.V2024_11_01, - TextAnalysisClientOptions.ServiceVersion.V2024_11_15_Preview, - TextAnalysisClientOptions.ServiceVersion.V2025_05_15_Preview + TextAnalysisClientOptions.ServiceVersion.V2025_05_15_Preview, + TextAnalysisClientOptions.ServiceVersion.V2025_11_15_Preview )] [IgnoreServiceError(429, "429")] public abstract class TextAnalysisTestBase : RecordedTestBase diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample4_AnalyzeTextAsync_RecognizeEntities.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample4_AnalyzeTextAsync_RecognizeEntities.cs index ce0e2771cf07..d66ef14c07db 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample4_AnalyzeTextAsync_RecognizeEntities.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample4_AnalyzeTextAsync_RecognizeEntities.cs @@ -107,7 +107,7 @@ public async Task RecognizeEntitiesPreview() #region Snippet:Sample4_AnalyzeTextAsync_RecognizeEntities_Preview Uri endpoint = TestEnvironment.Endpoint; AzureKeyCredential credential = new(TestEnvironment.ApiKey); - TextAnalysisClientOptions options = new TextAnalysisClientOptions(TextAnalysisClientOptions.ServiceVersion.V2024_11_15_Preview); + TextAnalysisClientOptions options = new TextAnalysisClientOptions(TextAnalysisClientOptions.ServiceVersion.V2025_11_15_Preview); var client = new TextAnalysisClient(endpoint, credential, options); string textA = diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample5_AnalyzeTextAsync_RecognizePii.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample5_AnalyzeTextAsync_RecognizePii.cs index e8e0395dff3f..2c4f2e5dd618 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample5_AnalyzeTextAsync_RecognizePii.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample5_AnalyzeTextAsync_RecognizePii.cs @@ -122,7 +122,15 @@ public async Task RecognizePii_RedactionPolicy() { ModelVersion = "latest", // Avaliable RedactionPolicies: EntityMaskPolicyType, CharacterMaskPolicyType, and NoMaskPolicyType - RedactionPolicy = new EntityMaskPolicyType() + RedactionPolicies = + { + new EntityMaskPolicyType + { + // defaultPolicy: use entity mask for everything unless overridden + PolicyName = "defaultPolicy", + IsDefault = true, + } + } } }; @@ -160,6 +168,100 @@ public async Task RecognizePii_RedactionPolicy() #endregion } + [Test] + [AsyncOnly] + public async Task RecognizePii_RedactionPolicies_SyntheticMask() + { + Uri endpoint = TestEnvironment.Endpoint; + AzureKeyCredential credential = new(TestEnvironment.ApiKey); + TextAnalysisClient client = new(endpoint, credential); + + #region Snippet:Sample5_AnalyzeTextAsync_RecognizePii_RedactionPolicies + string documentText = "My name is John Doe. My ssn is 123-45-6789. My email is john@example.com.."; + + AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput + { + TextInput = new MultiLanguageTextInput + { + MultiLanguageInputs = + { + new MultiLanguageInput("A", documentText) { Language = "en" }, + new MultiLanguageInput("B", documentText) { Language = "en" }, + } + }, + ActionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + + RedactionPolicies = + { + new EntityMaskPolicyType + { + // defaultPolicy: use entity mask for everything unless overridden + PolicyName = "defaultPolicy", + IsDefault = true, + }, + new CharacterMaskPolicyType + { + // customMaskForSSN: keep the last 4 digits of SSN, mask the rest + PolicyName = "customMaskForSSN", + UnmaskLength = 4, + UnmaskFromEnd = false, + EntityTypes = + { + PiiCategoriesExclude.UsSocialSecurityNumber + }, + }, + new SyntheticReplacementPolicyType + { + // syntheticMaskForPerson: generate synthetic values for Person and Email + PolicyName = "syntheticMaskForPerson", + EntityTypes = + { + PiiCategoriesExclude.Person, + PiiCategoriesExclude.Email + }, + } + } + } + }; + + Response response = await client.AnalyzeTextAsync(body); + AnalyzeTextPiiResult piiTaskResult = (AnalyzeTextPiiResult)response.Value; + + foreach (PiiActionResult piiResult in piiTaskResult.Results.Documents) + { + Console.WriteLine($"Result for document with Id = \"{piiResult.Id}\":"); + Console.WriteLine($" Redacted Text: \"{piiResult.RedactedText}\""); + Console.WriteLine($" Recognized {piiResult.Entities.Count} entities:"); + + foreach (PiiEntity entity in piiResult.Entities) + { + Console.WriteLine($" Text: {entity.Text}"); + Console.WriteLine($" Offset: {entity.Offset}"); + Console.WriteLine($" Length: {entity.Length}"); + Console.WriteLine($" Category: {entity.Category}"); + if (!string.IsNullOrEmpty(entity.Subcategory)) + { + Console.WriteLine($" SubCategory: {entity.Subcategory}"); + } + Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); + Console.WriteLine(); + } + + Console.WriteLine(); + } + + foreach (DocumentError analyzeTextDocumentError in piiTaskResult.Results.Errors) + { + Console.WriteLine($" Error on document {analyzeTextDocumentError.Id}!"); + Console.WriteLine($" Document error code: {analyzeTextDocumentError.Error.Code}"); + Console.WriteLine($" Message: {analyzeTextDocumentError.Error.Message}"); + Console.WriteLine(); + } + #endregion + } + [Test] [AsyncOnly] public async Task RecognizePii_WithValueExclusion() @@ -366,5 +468,72 @@ public async Task RecognizePii_WithNewEntityTypes() } #endregion } + + [Test] + [AsyncOnly] + public async Task RecognizePii_ConfidenceScoreThreshold() + { + Uri endpoint = TestEnvironment.Endpoint; + AzureKeyCredential credential = new(TestEnvironment.ApiKey); + TextAnalysisClient client = new(endpoint, credential); + + #region Snippet:Sample5_AnalyzeTextAsync_RecognizePii_ConfidenceScoreThreshold + string text = + "My name is John Doe. My ssn is 222-45-6789. My email is john@example.com. John Doe is my name."; + + // Input documents + MultiLanguageTextInput textInput = new MultiLanguageTextInput + { + MultiLanguageInputs = + { + new MultiLanguageInput("1", text) { Language = "en" } + } + }; + + // Confidence score overrides: + // default = 0.3 + // SSN & Email overridden to 0.9 (so they get filtered out as entities) + ConfidenceScoreThreshold confidenceThreshold = new ConfidenceScoreThreshold(0.3f); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.UsSocialSecurityNumber.ToString() + )); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.Email.ToString() + )); + + PiiActionContent actionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + DisableEntityValidation = true, + ConfidenceScoreThreshold = confidenceThreshold + }; + + AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput + { + TextInput = textInput, + ActionContent = actionContent + }; + + Response response = await client.AnalyzeTextAsync(body); + AnalyzeTextPiiResult piiResult = (AnalyzeTextPiiResult)response.Value; + + PiiActionResult doc = piiResult.Results.Documents[0]; + + Console.WriteLine($"Redacted text: \"{doc.RedactedText}\""); + Console.WriteLine("Recognized entities (after confidence score filtering):"); + + foreach (PiiEntity entity in doc.Entities) + { + Console.WriteLine($" Text: {entity.Text}"); + Console.WriteLine($" Category: {entity.Category}"); + Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); + Console.WriteLine(); + } + #endregion + } } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample5_AnalyzeText_RecognizePii.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample5_AnalyzeText_RecognizePii.cs index 9f31eec10646..69a79d6da928 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample5_AnalyzeText_RecognizePii.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/Samples/Sample5_AnalyzeText_RecognizePii.cs @@ -122,7 +122,7 @@ public void RecognizePii_RedactionPolicy() { ModelVersion = "latest", // Avaliable RedactionPolicies: EntityMaskPolicyType, CharacterMaskPolicyType, and NoMaskPolicyType - RedactionPolicy = new EntityMaskPolicyType() + RedactionPolicies = { new EntityMaskPolicyType { PolicyName = "defaultPolicy", IsDefault = true } } } }; @@ -160,6 +160,100 @@ public void RecognizePii_RedactionPolicy() #endregion } + [Test] + [SyncOnly] + public void RecognizePii_RedactionPolicies_SyntheticMask() + { + Uri endpoint = TestEnvironment.Endpoint; + AzureKeyCredential credential = new(TestEnvironment.ApiKey); + TextAnalysisClient client = new(endpoint, credential); + + #region Snippet:Sample5_AnalyzeText_RecognizePii_RedactionPolicies + string documentText = "My name is John Doe. My ssn is 123-45-6789. My email is john@example.com.."; + + AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput + { + TextInput = new MultiLanguageTextInput + { + MultiLanguageInputs = + { + new MultiLanguageInput("A", documentText) { Language = "en" }, + new MultiLanguageInput("B", documentText) { Language = "en" }, + } + }, + ActionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + + RedactionPolicies = + { + new EntityMaskPolicyType + { + // defaultPolicy: use entity mask for everything unless overridden + PolicyName = "defaultPolicy", + IsDefault = true, + }, + new CharacterMaskPolicyType + { + // customMaskForSSN: keep the last 4 digits of SSN, mask the rest + PolicyName = "customMaskForSSN", + UnmaskLength = 4, + UnmaskFromEnd = false, + EntityTypes = + { + PiiCategoriesExclude.UsSocialSecurityNumber + }, + }, + new SyntheticReplacementPolicyType + { + // syntheticMaskForPerson: generate synthetic values for Person and Email + PolicyName = "syntheticMaskForPerson", + EntityTypes = + { + PiiCategoriesExclude.Person, + PiiCategoriesExclude.Email + }, + } + } + } + }; + + Response response = client.AnalyzeText(body); + AnalyzeTextPiiResult piiTaskResult = (AnalyzeTextPiiResult)response.Value; + + foreach (PiiActionResult piiResult in piiTaskResult.Results.Documents) + { + Console.WriteLine($"Result for document with Id = \"{piiResult.Id}\":"); + Console.WriteLine($" Redacted Text: \"{piiResult.RedactedText}\""); + Console.WriteLine($" Recognized {piiResult.Entities.Count} entities:"); + + foreach (PiiEntity entity in piiResult.Entities) + { + Console.WriteLine($" Text: {entity.Text}"); + Console.WriteLine($" Offset: {entity.Offset}"); + Console.WriteLine($" Length: {entity.Length}"); + Console.WriteLine($" Category: {entity.Category}"); + if (!string.IsNullOrEmpty(entity.Subcategory)) + { + Console.WriteLine($" SubCategory: {entity.Subcategory}"); + } + Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); + Console.WriteLine(); + } + + Console.WriteLine(); + } + + foreach (DocumentError analyzeTextDocumentError in piiTaskResult.Results.Errors) + { + Console.WriteLine($" Error on document {analyzeTextDocumentError.Id}!"); + Console.WriteLine($" Document error code: {analyzeTextDocumentError.Error.Code}"); + Console.WriteLine($" Message: {analyzeTextDocumentError.Error.Message}"); + Console.WriteLine(); + } + #endregion + } + [Test] [SyncOnly] public void RecognizePii_WithValueExclusion() @@ -326,7 +420,7 @@ public void RecognizePii_WithNewEntityTypes() }, ActionContent = new PiiActionContent() { - ModelVersion = "2025-05-15-preview" + ModelVersion = "latest" } }; @@ -366,5 +460,72 @@ public void RecognizePii_WithNewEntityTypes() } #endregion } + + [Test] + [SyncOnly] + public void RecognizePii_ConfidenceScoreThreshold() + { + Uri endpoint = TestEnvironment.Endpoint; + AzureKeyCredential credential = new(TestEnvironment.ApiKey); + TextAnalysisClient client = new(endpoint, credential); + + #region Snippet:Sample5_AnalyzeText_RecognizePii_ConfidenceScoreThreshold + string text = + "My name is John Doe. My ssn is 222-45-6789. My email is john@example.com. John Doe is my name."; + + // Input documents + MultiLanguageTextInput textInput = new MultiLanguageTextInput + { + MultiLanguageInputs = + { + new MultiLanguageInput("1", text) { Language = "en" } + } + }; + + // Confidence score overrides: + // default = 0.3 + // SSN & Email overridden to 0.9 (so they get filtered out as entities) + ConfidenceScoreThreshold confidenceThreshold = new ConfidenceScoreThreshold(0.3f); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.UsSocialSecurityNumber.ToString() + )); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.Email.ToString() + )); + + PiiActionContent actionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + DisableEntityValidation = true, + ConfidenceScoreThreshold = confidenceThreshold + }; + + AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput + { + TextInput = textInput, + ActionContent = actionContent + }; + + Response response = client.AnalyzeText(body); + AnalyzeTextPiiResult piiResult = (AnalyzeTextPiiResult)response.Value; + + PiiActionResult doc = piiResult.Results.Documents[0]; + + Console.WriteLine($"Redacted text: \"{doc.RedactedText}\""); + Console.WriteLine("Recognized entities (after confidence score filtering):"); + + foreach (PiiEntity entity in doc.Entities) + { + Console.WriteLine($" Text: {entity.Text}"); + Console.WriteLine($" Category: {entity.Category}"); + Console.WriteLine($" Confidence score: {entity.ConfidenceScore}"); + Console.WriteLine(); + } + #endregion + } } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/TextAnalysisClientLiveTest.cs b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/TextAnalysisClientLiveTest.cs index 988d94bb6150..1d59759287f8 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/TextAnalysisClientLiveTest.cs +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/tests/TextAnalysisClientLiveTest.cs @@ -841,43 +841,32 @@ public async Task AnalyzeText_RecognizePii_WithSynonyms() Assert.IsNotNull(response.Value); AnalyzeTextPiiResult piiResult = (AnalyzeTextPiiResult)response.Value; - Assert.AreEqual(3, piiResult.Results.Documents.Count); - - PiiActionResult doc1 = piiResult.Results.Documents.First(d => d.Id == "1"); - Assert.AreEqual("My FAN is ************", doc1.RedactedText); - // Print all entity details - Console.WriteLine("Entities for document 1:"); - foreach (PiiEntity entity in doc1.Entities) - { - Console.WriteLine($"Text: {entity.Text}"); - Console.WriteLine($"Category: {entity.Category}"); - Console.WriteLine($"Type: {entity.Type}"); - Console.WriteLine($"Offset: {entity.Offset}"); - Console.WriteLine($"Length: {entity.Length}"); - Console.WriteLine($"ConfidenceScore: {entity.ConfidenceScore}"); - - if (entity.Tags != null) - { - Console.WriteLine("Tags:"); - foreach (EntityTag tag in entity.Tags) - { - Console.WriteLine($" - Name: {tag.Name}, ConfidenceScore: {tag.ConfidenceScore}"); - } - } - - Console.WriteLine(); - } - Assert.IsTrue(doc1.Entities.Any(e => e.Text == "281314478878" && e.Category == "USBankAccountNumber")); - - PiiActionResult doc2 = piiResult.Results.Documents.First(d => d.Id == "2"); - Assert.AreEqual("My bank account number is ************.", doc2.RedactedText); - Assert.IsTrue(doc2.Entities.Any(e => e.Text == "281314478873" && e.Category == "USBankAccountNumber")); + // Assert — Document 1 + var doc1 = piiResult.Results.Documents.Single(d => d.Id == "1"); + Assert.IsTrue(doc1.Entities.Any(e => + e.Text == "281314478878" && + e.Category == "USBankAccountNumber"), + "Doc 1 should contain USBankAccountNumber entity for FAN."); - PiiActionResult doc3 = piiResult.Results.Documents.First(d => d.Id == "3"); - Assert.AreEqual("My FAN is ************ and ***'s RAN is ************.", doc3.RedactedText); - Assert.IsTrue(doc3.Entities.Any(e => e.Text == "281314478878" && e.Category == "USBankAccountNumber")); - Assert.IsTrue(doc3.Entities.Any(e => e.Text == "281314478879" && e.Category == "USBankAccountNumber")); - Assert.IsTrue(doc3.Entities.Any(e => e.Text == "Tom" && e.Category == "Person")); + // Assert — Document 2 + var doc2 = piiResult.Results.Documents.Single(d => d.Id == "2"); + Assert.IsTrue(doc2.Entities.Any(e => + e.Text == "281314478873" && + e.Category == "USBankAccountNumber"), + "Doc 2 should contain USBankAccountNumber entity for a normal bank acct number."); + + // Assert — Document 3 + var doc3 = piiResult.Results.Documents.Single(d => d.Id == "3"); + + Assert.IsTrue(doc3.Entities.Any(e => + e.Text == "281314478878" && + e.Category == "USBankAccountNumber"), + "Doc 3 should contain USBankAccountNumber entity for FAN."); + + Assert.IsTrue(doc3.Entities.Any(e => + e.Text == "281314478879" && + e.Category == "USBankAccountNumber"), + "Doc 3 should contain USBankAccountNumber entity for RAN."); } [RecordedTest] @@ -891,35 +880,230 @@ public async Task AnalyzeText_RecognizePii_WithNewEntityTypes() MultiLanguageInputs = { new MultiLanguageInput("1", "The date of birth is May 15th, 2015") { Language = "en" }, - new MultiLanguageInput("2", "The phone number is (555) 123-4567") { Language = "en" } + new MultiLanguageInput("2", "The phone number is 5551234567") { Language = "en" } } }, ActionContent = new PiiActionContent() { - ModelVersion = "2025-05-15-preview" + ModelVersion = "latest" } }; Response response = await client.AnalyzeTextAsync(input); Assert.IsNotNull(response?.Value); - AnalyzeTextPiiResult result = (AnalyzeTextPiiResult)response.Value; - Assert.AreEqual("2025-05-15-preview", result.Results.ModelVersion); - Assert.AreEqual(2, result.Results.Documents.Count); + AnalyzeTextPiiResult piiResult = (AnalyzeTextPiiResult)response.Value; + // Assert: document 1 (Date of birth) + PiiActionResult doc1 = piiResult.Results.Documents.Single(d => d.Id == "1"); + + // The raw date string should not appear in redacted text. + const string dobText = "May 15th, 2015"; + Assert.IsTrue( + doc1.RedactedText != null && !doc1.RedactedText.Contains(dobText), + "Document 1 redacted text should not contain the raw date of birth." + ); - PiiActionResult doc1 = result.Results.Documents.First(d => d.Id == "1"); - Assert.AreEqual("The date of birth is **************", doc1.RedactedText); - Assert.IsTrue(doc1.Entities.Any(e => - e.Text == "May 15th, 2015" && - e.Category == "DateTime" && - e.Type == "DateOfBirth")); + // Assert: document 2 (Phone number) + PiiActionResult doc2 = piiResult.Results.Documents.Single(d => d.Id == "2"); - PiiActionResult doc2 = result.Results.Documents.First(d => d.Id == "2"); - Assert.AreEqual("The phone number is **************", doc2.RedactedText); - Assert.IsTrue(doc2.Entities.Any(e => - e.Text == "(555) 123-4567" && - e.Category == "PhoneNumber" && - e.Type == "PhoneNumber")); + // There should be at least one PhoneNumber entity. + Assert.IsTrue( + doc2.Entities.Any(e => e.Category == PiiCategory.PhoneNumber), + "Document 2 should contain a PhoneNumber entity." + ); + + // The raw phone number should not appear in redacted text. + const string phoneText = "(555) 123-4567"; + Assert.IsTrue( + doc2.RedactedText != null && !doc2.RedactedText.Contains(phoneText), + "Document 2 redacted text should not contain the raw phone number." + ); + } + + [RecordedTest] + [ServiceVersion(Min = TextAnalysisClientOptions.ServiceVersion.V2025_11_15_Preview)] + public async Task AnalyzeText_RecognizePii_RedactionPolicies() + { + string documentText = "My name is John Doe. My ssn is 123-45-6789. My email is john@example.com.."; + + AnalyzeTextInput body = new TextPiiEntitiesRecognitionInput + { + TextInput = new MultiLanguageTextInput + { + MultiLanguageInputs = + { + new MultiLanguageInput("A", documentText) { Language = "en" }, + new MultiLanguageInput("B", documentText) { Language = "en" }, + } + }, + ActionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + + RedactionPolicies = + { + new EntityMaskPolicyType + { + // defaultPolicy: use entity mask for everything unless overridden + PolicyName = "defaultPolicy", + IsDefault = true, + }, + new CharacterMaskPolicyType + { + // customMaskForSSN: keep part of SSN visible while masking the rest + PolicyName = "customMaskForSSN", + UnmaskLength = 4, + UnmaskFromEnd = true, // if you really want "****-***-6789"-style behavior + EntityTypes = + { + PiiCategoriesExclude.UsSocialSecurityNumber + }, + }, + new SyntheticReplacementPolicyType + { + // syntheticMaskForPerson: generate synthetic values for Person and Email + PolicyName = "syntheticMaskForPerson", + EntityTypes = + { + PiiCategoriesExclude.Person, + PiiCategoriesExclude.Email + }, + } + } + } + }; + + // Act + Response response = await client.AnalyzeTextAsync(body); + AnalyzeTextPiiResult piiResult = (AnalyzeTextPiiResult)response.Value; + + // Basic sanity checks + Assert.AreEqual(2, piiResult.Results.Documents.Count, "Expected 2 document results."); + Assert.IsEmpty(piiResult.Results.Errors, "Did not expect any document errors."); + + foreach (PiiActionResult doc in piiResult.Results.Documents) + { + // 1. We should have at least these three PII categories recognized: + Assert.IsTrue( + doc.Entities.Any(e => e.Category == PiiCategory.UsSocialSecurityNumber), + $"Document {doc.Id} should contain a US SSN entity."); + + Assert.IsTrue( + doc.Entities.Any(e => e.Category == PiiCategory.Person), + $"Document {doc.Id} should contain a Person entity."); + + Assert.IsTrue( + doc.Entities.Any(e => e.Category == PiiCategory.Email), + $"Document {doc.Id} should contain an Email entity."); + + // 2. Check redaction behavior for Person and Email: + // "John Doe" and "john@example.com" should not appear in the redacted text + Assert.IsNotNull(doc.RedactedText, "RedactedText should not be null."); + StringAssert.DoesNotContain("John Doe", doc.RedactedText, $"Document {doc.Id} redacted text should not contain the original person name."); + StringAssert.DoesNotContain("john@example.com", doc.RedactedText, $"Document {doc.Id} redacted text should not contain the original email."); + + // 3. Check SSN redaction behavior: + // Full SSN should be masked, but the last 4 digits may remain visible due to CharacterMask policy. + const string fullSsn = "123-45-6789"; + const string last4 = "6789"; + + StringAssert.DoesNotContain(fullSsn, doc.RedactedText, $"Document {doc.Id} redacted text should not contain the full SSN."); + StringAssert.Contains(last4, doc.RedactedText, $"Document {doc.Id} redacted text should still contain the last 4 digits of the SSN due to the custom mask policy."); + } + } + + [RecordedTest] + [ServiceVersion(Min = TextAnalysisClientOptions.ServiceVersion.V2025_11_15_Preview)] + public async Task AnalyzeText_RecognizePii_ConfidenceScoreThreshold() + { + string text = + "My name is John Doe. My ssn is 222-45-6789. My email is john@example.com. John Doe is my name."; + + // Input documents + var textInput = new MultiLanguageTextInput + { + MultiLanguageInputs = + { + new MultiLanguageInput("1", text) { Language = "en" } + } + }; + + // Confidence score overrides: + // default = 0.3 + // SSN & Email overridden to 0.9 (so they get filtered out as entities) + var confidenceThreshold = new ConfidenceScoreThreshold(0.3f); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.UsSocialSecurityNumber.ToString() + )); + confidenceThreshold.Overrides.Add( + new ConfidenceScoreThresholdOverride( + value: 0.9f, + entity: PiiCategory.Email.ToString() + )); + + var actionContent = new PiiActionContent + { + PiiCategories = { PiiCategory.All }, + DisableEntityValidation = true, + ConfidenceScoreThreshold = confidenceThreshold + }; + + var body = new TextPiiEntitiesRecognitionInput + { + TextInput = textInput, + ActionContent = actionContent + }; + + // Act (non-LRO) + Response response = await client.AnalyzeTextAsync(body); + var piiResult = (AnalyzeTextPiiResult)response.Value; + + // Basic shape checks + Assert.IsNotNull(piiResult); + Assert.IsNotNull(piiResult.Results); + Assert.IsNotNull(piiResult.Results.Documents); + Assert.AreEqual(1, piiResult.Results.Documents.Count); + + PiiActionResult doc = piiResult.Results.Documents[0]; + string redacted = doc.RedactedText; + + // Person should be masked out in text; SSN & Email should remain in the text + // (but be filtered out as entities due to the 0.9 threshold overrides) + StringAssert.DoesNotContain("John Doe", redacted, "Person name should be masked in redacted text."); + StringAssert.Contains("222-45-6789", redacted, "SSN should remain visible in redacted text."); + StringAssert.Contains("john@example.com", redacted, "Email should remain visible in redacted text."); + + // Only Person entities should be returned (SSN & Email filtered by high thresholds) + Assert.AreEqual(2, doc.Entities.Count, "Expected exactly 2 entities to be returned."); + + var categories = new HashSet( + doc.Entities.Select(e => e.Category.ToString()) +); + + CollectionAssert.AreEquivalent( + new[] { PiiCategory.Person.ToString() }, + categories, + "Only Person entities should be returned." + ); + + // Ensure no SSN or Email entities are present + Assert.IsFalse( + doc.Entities.Any(e => e.Category == PiiCategory.UsSocialSecurityNumber), + "USSocialSecurityNumber entities should be filtered out by the confidence threshold override." + ); + Assert.IsFalse( + doc.Entities.Any(e => e.Category == PiiCategory.Email), + "Email entities should be filtered out by the confidence threshold override." + ); + + // Quick sanity on confidence + foreach (PiiEntity e in doc.Entities) + { + Assert.AreEqual(PiiCategory.Person.ToString(), e.Category, "All returned entities should be Person."); + Assert.GreaterOrEqual(e.ConfidenceScore, 0.3, "Entities should respect the default confidence floor."); + } } } } diff --git a/sdk/cognitivelanguage/Azure.AI.Language.Text/tsp-location.yaml b/sdk/cognitivelanguage/Azure.AI.Language.Text/tsp-location.yaml index 45d7fba490f8..a386206fc2b2 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.Text/tsp-location.yaml +++ b/sdk/cognitivelanguage/Azure.AI.Language.Text/tsp-location.yaml @@ -1,4 +1,4 @@ repo: azure/azure-rest-api-specs -commit: 51222a6a7977e9753a709144cb554d40144c81de -directory: specification/cognitiveservices/Language.AnalyzeText +commit: 11a22589537a23c3086f0e9e5a01697da788f3d8 +directory: specification/cognitiveservices/data-plane/LanguageAnalyzeText/ diff --git a/sdk/cognitivelanguage/Azure.AI.Language.sln b/sdk/cognitivelanguage/Azure.AI.Language.sln index bd5498586241..0527e25c345b 100644 --- a/sdk/cognitivelanguage/Azure.AI.Language.sln +++ b/sdk/cognitivelanguage/Azure.AI.Language.sln @@ -19,6 +19,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Azure.AI.Language.Conversat EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Azure.AI.Language.Conversations.Tests", "Azure.AI.Language.Conversations\tests\Azure.AI.Language.Conversations.Tests.csproj", "{E30B7233-76F8-4966-9CDC-86D9C5B37462}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.AI.Language.Text", "Azure.AI.Language.Text\src\Azure.AI.Language.Text.csproj", "{6102405B-905F-74E8-4496-9FAFD7DA570E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.AI.Language.Text.Tests", "Azure.AI.Language.Text\tests\Azure.AI.Language.Text.Tests.csproj", "{641E1182-16E3-A50B-FAFA-936763946788}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -125,6 +129,30 @@ Global {E30B7233-76F8-4966-9CDC-86D9C5B37462}.Release|x64.Build.0 = Release|Any CPU {E30B7233-76F8-4966-9CDC-86D9C5B37462}.Release|x86.ActiveCfg = Release|Any CPU {E30B7233-76F8-4966-9CDC-86D9C5B37462}.Release|x86.Build.0 = Release|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Debug|x64.ActiveCfg = Debug|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Debug|x64.Build.0 = Debug|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Debug|x86.ActiveCfg = Debug|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Debug|x86.Build.0 = Debug|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Release|Any CPU.Build.0 = Release|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Release|x64.ActiveCfg = Release|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Release|x64.Build.0 = Release|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Release|x86.ActiveCfg = Release|Any CPU + {6102405B-905F-74E8-4496-9FAFD7DA570E}.Release|x86.Build.0 = Release|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Debug|Any CPU.Build.0 = Debug|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Debug|x64.ActiveCfg = Debug|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Debug|x64.Build.0 = Debug|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Debug|x86.ActiveCfg = Debug|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Debug|x86.Build.0 = Debug|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Release|Any CPU.ActiveCfg = Release|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Release|Any CPU.Build.0 = Release|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Release|x64.ActiveCfg = Release|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Release|x64.Build.0 = Release|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Release|x86.ActiveCfg = Release|Any CPU + {641E1182-16E3-A50B-FAFA-936763946788}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE