diff --git a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml index b39b25ffc59c..9f2ab7237ea1 100755 --- a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml +++ b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml @@ -473,6 +473,7 @@ + + + + + + + @@ -603,11 +610,11 @@ - + - + diff --git a/eng/code-quality-reports/src/main/resources/revapi/revapi.json b/eng/code-quality-reports/src/main/resources/revapi/revapi.json index bc69bcd19c16..c5ead03aa977 100644 --- a/eng/code-quality-reports/src/main/resources/revapi/revapi.json +++ b/eng/code-quality-reports/src/main/resources/revapi/revapi.json @@ -235,6 +235,17 @@ "code": "java\\.class\\.externalClassExposedInAPI", "new": "(interface|class|enum) io\\.opentelemetry.*", "justification": "Azure Monitor Exporter is allowed to use OpenTelemetry types in public APIs as it implements interfaces defined by OpenTelemetry" + }, + { + "code": "java.annotation.attributeAdded", + "old": "class com.azure.messaging.eventhubs.EventHubClientBuilder", + "new": "class com.azure.messaging.eventhubs.EventHubClientBuilder", + "justification": "Setting protocol to AMQP in @ServiceClientBuilder annotation is not a breaking change" + }, + { + "code": "java.annotation.added", + "new": "class com.azure.storage.blob.models.PageList", + "justification": "Annotation required to resolve deserialization bug." } ] } diff --git a/eng/code-quality-reports/src/main/resources/spotbugs/spotbugs-exclude.xml b/eng/code-quality-reports/src/main/resources/spotbugs/spotbugs-exclude.xml index 9c83c11e658b..05a4da3620ee 100755 --- a/eng/code-quality-reports/src/main/resources/spotbugs/spotbugs-exclude.xml +++ b/eng/code-quality-reports/src/main/resources/spotbugs/spotbugs-exclude.xml @@ -1333,6 +1333,23 @@ + + + + + + + + + + + + + + + + + @@ -2441,4 +2458,23 @@ + + + + + + + + + + + + + + + + + + + diff --git a/eng/common/README.md b/eng/common/README.md index e63b74367b74..7bda6ec94208 100644 --- a/eng/common/README.md +++ b/eng/common/README.md @@ -20,7 +20,6 @@ The 'Sync eng/common directory' PRs will be created in the language repositories 3. The `azure-sdk-tools - sync - eng-common` pipeline queues test runs for template pipelines in various languages. These help you test your changes in the **Tools PR**. 4. If there are changes in the **Tools PR** that will affect the release stage you should approve the release test pipelines by clicking the approval gate. The test (template) pipeline will automatically release the next eligible version without needing manual intervention for the versioning. Please approve your test releases as quickly as possible. A race condition may occur due to someone else queueing the pipeline and going all the way to release using your version while yours is still waiting. If this occurs manually rerun the pipeline that failed. 5. If you make additional changes to your **Tools PR** repeat steps 1 - 4 until you have completed the necessary testing of your changes. This includes full releases of the template package, if necessary. -6. Sign off on CreateSyncPRs stage of the sync pipeline using the approval gate. This stage will create the **Sync PRs** in the various language repos with the `auto-merge` label applied. A link to each of the **Sync PRs** will show up in the **Tools PR** for you to click and review. -7. Go review and approve each of your **Sync PRs**. The merging will happen automatically. -8. Sign off on VerifyAndMerge stage of the sync pipeline using the approval gate. This stage will merge any remaining open **Sync PRs** and also append `auto-merge` to the **Tools PR** so it will automatically merge once the pipeline finishes. -7. Sign Off on the VerifyAndMerge stage. This will merge any remaining open **Sync PR** and also append `auto-merge` to the **Tools PR**. +6. Sign off on CreateSyncPRs stage of the sync pipeline using the approval gate. This stage will create the **Sync PRs** in the various language repos. A link to each of the **Sync PRs** will show up in the **Tools PR** for you to click and review. +7. Go review and approve each of your **Sync PRs**. +8. Sign Off on the VerifyAndMerge stage. This will merge any remaining open **Sync PR** and also append `auto-merge` to the **Tools PR**. diff --git a/eng/common/TestResources/New-TestResources.ps1.md b/eng/common/TestResources/New-TestResources.ps1.md index 6fc15eefdb49..c41693c87666 100644 --- a/eng/common/TestResources/New-TestResources.ps1.md +++ b/eng/common/TestResources/New-TestResources.ps1.md @@ -449,7 +449,7 @@ Accept wildcard characters: False ``` ### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216). ## INPUTS diff --git a/eng/common/TestResources/Remove-TestResources.ps1.md b/eng/common/TestResources/Remove-TestResources.ps1.md index 18317cec07cc..8c99997e0731 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1.md +++ b/eng/common/TestResources/Remove-TestResources.ps1.md @@ -263,7 +263,7 @@ Accept wildcard characters: False ``` ### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216). ## INPUTS diff --git a/eng/common/pipelines/templates/steps/docs-metadata-release.yml b/eng/common/pipelines/templates/steps/docs-metadata-release.yml index 2b57bcf7f413..45f12580f10e 100644 --- a/eng/common/pipelines/templates/steps/docs-metadata-release.yml +++ b/eng/common/pipelines/templates/steps/docs-metadata-release.yml @@ -8,8 +8,8 @@ parameters: ScriptDirectory: eng/common/scripts TargetDocRepoName: '' TargetDocRepoOwner: '' - PRBranchName: 'smoke-test-rdme' - SourceBranchName: 'smoke-test' + PRBranchName: 'master-rdme' + SourceBranchName: 'master' PRLabels: 'auto-merge' ArtifactName: '' Language: '' diff --git a/eng/common/scripts/Delete-RemoteBranches.ps1 b/eng/common/scripts/Delete-RemoteBranches.ps1 index 0ca7c55be932..77cf7e506461 100644 --- a/eng/common/scripts/Delete-RemoteBranches.ps1 +++ b/eng/common/scripts/Delete-RemoteBranches.ps1 @@ -9,7 +9,7 @@ param( LogDebug "Operating on Repo [ $RepoName ]" try{ - $branches = (Get-GitHubSourceReferences -RepoOwner $RepoOwner -RepoName $RepoName -Ref "heads/$BranchPrefix").ref + $branches = (Get-GitHubSourceReferences -RepoOwner $RepoOwner -RepoName $RepoName -Ref "heads/$BranchPrefix" -AuthToken $AuthToken).ref } catch { LogError "Get-GitHubSourceReferences failed with exception:`n$_" @@ -22,7 +22,7 @@ foreach ($branch in $branches) $branchName = $branch.Replace("refs/heads/","") $head = "${RepoOwner}/${RepoName}:${branchName}" LogDebug "Operating on branch [ $branchName ]" - $pullRequests = Get-GitHubPullRequests -RepoOwner $RepoOwner -RepoName $RepoName -head $head + $pullRequests = Get-GitHubPullRequests -RepoOwner $RepoOwner -RepoName $RepoName -State "all" -Head $head -AuthToken $AuthToken } catch { @@ -30,9 +30,9 @@ foreach ($branch in $branches) exit 1 } - if ($pullRequests.Count -eq 0) + if ($pullRequests -and (($pullRequests | ? { $_.State -eq "open" }).Count -eq 0)) { - LogDebug "Branch [ $branchName ] in repo [ $RepoName ] has no associated Pull Request. Deleting Branch" + LogDebug "Branch [ $branchName ] in repo [ $RepoName ] has no associated open Pull Request. Deleting Branch" try{ Remove-GitHubSourceReferences -RepoOwner $RepoOwner -RepoName $RepoName -Ref ($branch.Remove(0,5)) -AuthToken $AuthToken } diff --git a/eng/common/scripts/Verify-Links.ps1 b/eng/common/scripts/Verify-Links.ps1 index 9376564e3472..c9991a058894 100644 --- a/eng/common/scripts/Verify-Links.ps1 +++ b/eng/common/scripts/Verify-Links.ps1 @@ -200,6 +200,10 @@ function CheckLink ([System.Uri]$linkUri) } if ($checkLinkGuidance) { + if ($linkUri.Scheme -eq 'http') { + LogWarning "DO NOT use 'http' in $linkUri. Please use secure link with https instead. Check here for more information: https://aka.ms/azsdk/guideline/links" + $linkValid = $false + } $link = $linkUri.ToString() # Check if the url is relative links, suppress the archor link validation. if (!$linkUri.IsAbsoluteUri -and !$link.StartsWith("#")) { diff --git a/sdk/communication/azure-communication-administration/pom.xml b/sdk/communication/azure-communication-administration/pom.xml index 5bda961599a0..951bea5a2777 100644 --- a/sdk/communication/azure-communication-administration/pom.xml +++ b/sdk/communication/azure-communication-administration/pom.xml @@ -57,12 +57,6 @@ azure-core 1.9.0 - - com.azure - azure-core-http-netty - 1.6.2 - test - com.azure azure-communication-common diff --git a/sdk/communication/azure-communication-chat/pom.xml b/sdk/communication/azure-communication-chat/pom.xml index 2c44b8fc24f5..666eee2cab2d 100644 --- a/sdk/communication/azure-communication-chat/pom.xml +++ b/sdk/communication/azure-communication-chat/pom.xml @@ -51,12 +51,6 @@ azure-communication-administration 1.0.0-beta.3 - - com.azure - azure-core-http-netty - 1.6.2 - test - com.azure azure-core-test diff --git a/sdk/communication/azure-communication-chat/src/test/java/com/azure/communication/chat/ChatClientTestBase.java b/sdk/communication/azure-communication-chat/src/test/java/com/azure/communication/chat/ChatClientTestBase.java index 8f5b5eb87c58..5e158ff24597 100644 --- a/sdk/communication/azure-communication-chat/src/test/java/com/azure/communication/chat/ChatClientTestBase.java +++ b/sdk/communication/azure-communication-chat/src/test/java/com/azure/communication/chat/ChatClientTestBase.java @@ -11,16 +11,12 @@ import com.azure.communication.chat.models.*; import com.azure.communication.common.CommunicationUserCredential; import com.azure.core.exception.HttpResponseException; -import com.azure.core.http.policy.FixedDelay; -import com.azure.core.http.policy.RetryPolicy; import com.azure.core.http.HttpClient; import com.azure.core.test.TestBase; import com.azure.core.test.TestMode; import com.azure.core.util.Configuration; import com.azure.core.util.logging.ClientLogger; - -import java.time.Duration; import java.time.ZonedDateTime; import java.time.LocalDateTime; import java.time.ZoneId; @@ -44,8 +40,6 @@ public class ChatClientTestBase extends TestBase { protected static final String CONNSTRING = Configuration.getGlobalConfiguration() .get("COMMUNICATION_SERVICES_CONNECTION_STRING", "pw=="); - protected static final FixedDelay RETRY_STRATEGY = new FixedDelay(3, Duration.ofMillis(1000)); - protected ChatClientBuilder getChatClientBuilder(String token, HttpClient httpClient) { ChatClientBuilder builder = new ChatClientBuilder(); @@ -60,10 +54,7 @@ protected ChatClientBuilder getChatClientBuilder(String token, HttpClient httpCl builder.credential(new CommunicationUserCredential(token)); } - if (interceptorManager.isLiveMode()) { - builder.addPolicy(new RetryPolicy(RETRY_STRATEGY)); - } - else { + if (getTestMode() == TestMode.RECORD) { builder.addPolicy(interceptorManager.getRecordPolicy()); } diff --git a/sdk/communication/azure-communication-chat/src/test/java/com/azure/communication/chat/ChatThreadAsyncClientTest.java b/sdk/communication/azure-communication-chat/src/test/java/com/azure/communication/chat/ChatThreadAsyncClientTest.java index 4de7058cccc6..ecbf507a668b 100644 --- a/sdk/communication/azure-communication-chat/src/test/java/com/azure/communication/chat/ChatThreadAsyncClientTest.java +++ b/sdk/communication/azure-communication-chat/src/test/java/com/azure/communication/chat/ChatThreadAsyncClientTest.java @@ -5,6 +5,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -176,8 +178,7 @@ public void canAddListAndRemoveMembersWithResponseAsync(HttpClient httpClient) t } assertTrue(returnedMembers.size() == 4); - }) - .verifyComplete(); + }); for (ChatThreadMember member: options.getMembers()) { StepVerifier.create(chatThreadClient.removeMemberWithResponse(member.getUser())) @@ -408,6 +409,9 @@ public void canSendTypingNotificationWithResponse(HttpClient httpClient) { @ParameterizedTest @MethodSource("com.azure.core.test.TestBase#getHttpClients") + @DisabledIfEnvironmentVariable( + named = "SKIP_LIVE_TEST", + matches = "(?i)(true)") public void canSendThenListReadReceipts(HttpClient httpClient) throws InterruptedException { // Arrange setupTest(httpClient); @@ -431,16 +435,16 @@ public void canSendThenListReadReceipts(HttpClient httpClient) throws Interrupte assertEquals(resp.getStatusCode(), 200); resp.getItems().forEach(item -> returnedReadReceipts.add(item)); }); - - if (interceptorManager.isPlaybackMode()) { - assertTrue(returnedReadReceipts.size() > 0); - checkReadReceiptListContainsMessageId(returnedReadReceipts, messageResponseRef.get().getId()); - } + assertTrue(returnedReadReceipts.size() > 0); + checkReadReceiptListContainsMessageId(returnedReadReceipts, messageResponseRef.get().getId()); }); } @ParameterizedTest @MethodSource("com.azure.core.test.TestBase#getHttpClients") + @DisabledIfEnvironmentVariable( + named = "SKIP_LIVE_TEST", + matches = "(?i)(true)") public void canSendThenListReadReceiptsWithResponse(HttpClient httpClient) throws InterruptedException { // Arrange setupTest(httpClient); @@ -466,12 +470,9 @@ public void canSendThenListReadReceiptsWithResponse(HttpClient httpClient) throw resp.getItems().forEach(item -> returnedReadReceipts.add(item)); }); - if (interceptorManager.isPlaybackMode()) { - assertTrue(returnedReadReceipts.size() > 0); - checkReadReceiptListContainsMessageId(returnedReadReceipts, messageResponseRef.get().getId()); - } - }) - .verifyComplete(); + assertTrue(returnedReadReceipts.size() > 0); + checkReadReceiptListContainsMessageId(returnedReadReceipts, messageResponseRef.get().getId()); + }); } } diff --git a/sdk/communication/tests.yml b/sdk/communication/tests.yml index a35bb4f6fb49..a435579fb140 100644 --- a/sdk/communication/tests.yml +++ b/sdk/communication/tests.yml @@ -9,8 +9,10 @@ jobs: safeName: azurecommunicationadministration - name: azure-communication-chat groupId: com.azure - safeName: azurecommunicationchatclient + safeName: azurecommunicationchat ServiceDirectory: communication EnvVars: AZURE_TEST_MODE: LIVE SKIP_PHONENUMBER_INTEGRATION_TESTS: TRUE + SKIP_LIVE_TEST: TRUE + diff --git a/sdk/compute/mgmt-v2017_12_01/pom.xml b/sdk/compute/mgmt-v2017_12_01/pom.xml index baae466750ce..ee58e3ec1f8b 100644 --- a/sdk/compute/mgmt-v2017_12_01/pom.xml +++ b/sdk/compute/mgmt-v2017_12_01/pom.xml @@ -11,15 +11,15 @@ com.microsoft.azure azure-arm-parent - 1.3.0 - ../../parents/azure-arm-parent + 1.1.0 + ../../../pom.management.xml azure-mgmt-compute - 1.0.0-beta-1 + 1.0.0-beta jar Microsoft Azure SDK for Compute Management This package contains Microsoft Compute Management SDK. - https://github.com/Azure/azure-libraries-for-java + https://github.com/Azure/azure-sdk-for-java The MIT License (MIT) @@ -28,8 +28,8 @@ - scm:git:https://github.com/Azure/azure-libraries-for-java - scm:git:git@github.com:Azure/azure-libraries-for-java.git + scm:git:https://github.com/Azure/azure-sdk-for-java + scm:git:git@github.com:Azure/azure-sdk-for-java.git HEAD @@ -71,6 +71,8 @@ azure-arm-client-runtime test-jar test + + 1.6.5 diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AdditionalUnattendContent.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AdditionalUnattendContent.java index 749f7491712c..bdd5f10b3a40 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AdditionalUnattendContent.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AdditionalUnattendContent.java @@ -49,7 +49,7 @@ public class AdditionalUnattendContent { private String content; /** - * Get the passName value. + * Get the pass name. Currently, the only allowable value is OobeSystem. Possible values include: 'OobeSystem'. * * @return the passName value */ @@ -58,7 +58,7 @@ public PassNames passName() { } /** - * Set the passName value. + * Set the pass name. Currently, the only allowable value is OobeSystem. Possible values include: 'OobeSystem'. * * @param passName the passName value to set * @return the AdditionalUnattendContent object itself. @@ -69,7 +69,7 @@ public AdditionalUnattendContent withPassName(PassNames passName) { } /** - * Get the componentName value. + * Get the component name. Currently, the only allowable value is Microsoft-Windows-Shell-Setup. Possible values include: 'Microsoft-Windows-Shell-Setup'. * * @return the componentName value */ @@ -78,7 +78,7 @@ public ComponentNames componentName() { } /** - * Set the componentName value. + * Set the component name. Currently, the only allowable value is Microsoft-Windows-Shell-Setup. Possible values include: 'Microsoft-Windows-Shell-Setup'. * * @param componentName the componentName value to set * @return the AdditionalUnattendContent object itself. @@ -89,7 +89,7 @@ public AdditionalUnattendContent withComponentName(ComponentNames componentName) } /** - * Get the settingName value. + * Get specifies the name of the setting to which the content applies. Possible values are: FirstLogonCommands and AutoLogon. Possible values include: 'AutoLogon', 'FirstLogonCommands'. * * @return the settingName value */ @@ -98,7 +98,7 @@ public SettingNames settingName() { } /** - * Set the settingName value. + * Set specifies the name of the setting to which the content applies. Possible values are: FirstLogonCommands and AutoLogon. Possible values include: 'AutoLogon', 'FirstLogonCommands'. * * @param settingName the settingName value to set * @return the AdditionalUnattendContent object itself. @@ -109,7 +109,7 @@ public AdditionalUnattendContent withSettingName(SettingNames settingName) { } /** - * Get the content value. + * Get specifies the XML formatted content that is added to the unattend.xml file for the specified path and component. The XML must be less than 4KB and must include the root element for the setting or feature that is being inserted. * * @return the content value */ @@ -118,7 +118,7 @@ public String content() { } /** - * Set the content value. + * Set specifies the XML formatted content that is added to the unattend.xml file for the specified path and component. The XML must be less than 4KB and must include the root element for the setting or feature that is being inserted. * * @param content the content value to set * @return the AdditionalUnattendContent object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiEntityReference.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiEntityReference.java index 19bc4c49cf91..7dae304fada6 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiEntityReference.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiEntityReference.java @@ -16,13 +16,13 @@ public class ApiEntityReference { /** * The ARM resource id in the form of - * /subscriptions/{SubcriptionId}/resourceGroups/{ResourceGroupName}/... + * /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/... */ @JsonProperty(value = "id") private String id; /** - * Get the id value. + * Get the ARM resource id in the form of /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/... * * @return the id value */ @@ -31,7 +31,7 @@ public String id() { } /** - * Set the id value. + * Set the ARM resource id in the form of /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/... * * @param id the id value to set * @return the ApiEntityReference object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiError.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiError.java index e904db231ec6..44d455c8b007 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiError.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiError.java @@ -46,7 +46,7 @@ public class ApiError { private String message; /** - * Get the details value. + * Get the Api error details. * * @return the details value */ @@ -55,7 +55,7 @@ public List details() { } /** - * Set the details value. + * Set the Api error details. * * @param details the details value to set * @return the ApiError object itself. @@ -66,7 +66,7 @@ public ApiError withDetails(List details) { } /** - * Get the innererror value. + * Get the Api inner error. * * @return the innererror value */ @@ -75,7 +75,7 @@ public InnerError innererror() { } /** - * Set the innererror value. + * Set the Api inner error. * * @param innererror the innererror value to set * @return the ApiError object itself. @@ -86,7 +86,7 @@ public ApiError withInnererror(InnerError innererror) { } /** - * Get the code value. + * Get the error code. * * @return the code value */ @@ -95,7 +95,7 @@ public String code() { } /** - * Set the code value. + * Set the error code. * * @param code the code value to set * @return the ApiError object itself. @@ -106,7 +106,7 @@ public ApiError withCode(String code) { } /** - * Get the target value. + * Get the target of the particular error. * * @return the target value */ @@ -115,7 +115,7 @@ public String target() { } /** - * Set the target value. + * Set the target of the particular error. * * @param target the target value to set * @return the ApiError object itself. @@ -126,7 +126,7 @@ public ApiError withTarget(String target) { } /** - * Get the message value. + * Get the error message. * * @return the message value */ @@ -135,7 +135,7 @@ public String message() { } /** - * Set the message value. + * Set the error message. * * @param message the message value to set * @return the ApiError object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiErrorBase.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiErrorBase.java index 006a9da8cd1b..dc54be551336 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiErrorBase.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ApiErrorBase.java @@ -33,7 +33,7 @@ public class ApiErrorBase { private String message; /** - * Get the code value. + * Get the error code. * * @return the code value */ @@ -42,7 +42,7 @@ public String code() { } /** - * Set the code value. + * Set the error code. * * @param code the code value to set * @return the ApiErrorBase object itself. @@ -53,7 +53,7 @@ public ApiErrorBase withCode(String code) { } /** - * Get the target value. + * Get the target of the particular error. * * @return the target value */ @@ -62,7 +62,7 @@ public String target() { } /** - * Set the target value. + * Set the target of the particular error. * * @param target the target value to set * @return the ApiErrorBase object itself. @@ -73,7 +73,7 @@ public ApiErrorBase withTarget(String target) { } /** - * Get the message value. + * Get the error message. * * @return the message value */ @@ -82,7 +82,7 @@ public String message() { } /** - * Set the message value. + * Set the error message. * * @param message the message value to set * @return the ApiErrorBase object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AutoOSUpgradePolicy.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AutoOSUpgradePolicy.java index 43aebfafe79c..548ce0d970d4 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AutoOSUpgradePolicy.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AutoOSUpgradePolicy.java @@ -22,7 +22,7 @@ public class AutoOSUpgradePolicy { private Boolean disableAutoRollback; /** - * Get the disableAutoRollback value. + * Get whether OS image rollback feature should be disabled. Default value is false. * * @return the disableAutoRollback value */ @@ -31,7 +31,7 @@ public Boolean disableAutoRollback() { } /** - * Set the disableAutoRollback value. + * Set whether OS image rollback feature should be disabled. Default value is false. * * @param disableAutoRollback the disableAutoRollback value to set * @return the AutoOSUpgradePolicy object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySet.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySet.java index a00ca6b22d26..6b00b05b4db1 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySet.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySet.java @@ -10,12 +10,12 @@ import com.microsoft.azure.arm.model.HasInner; import com.microsoft.azure.arm.resources.models.Resource; +import com.microsoft.azure.arm.resources.models.GroupableResourceCore; import com.microsoft.azure.arm.resources.models.HasResourceGroup; import com.microsoft.azure.arm.model.Refreshable; import com.microsoft.azure.arm.model.Updatable; import com.microsoft.azure.arm.model.Appliable; import com.microsoft.azure.arm.model.Creatable; -import com.microsoft.azure.arm.resources.models.GroupableResourceCore; import com.microsoft.azure.arm.resources.models.HasManager; import com.microsoft.azure.management.compute.v2017_12_01.implementation.ComputeManager; import java.util.List; @@ -74,41 +74,49 @@ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup virtualMachines); } @@ -132,41 +140,49 @@ interface Update extends Appliable, Resource.UpdateWithTags virtualMachines); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySetUpdate.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySetUpdate.java index 0628498364ef..246ef30bf0b5 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySetUpdate.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySetUpdate.java @@ -50,7 +50,7 @@ public class AvailabilitySetUpdate extends UpdateResource { private Sku sku; /** - * Get the platformUpdateDomainCount value. + * Get update Domain count. * * @return the platformUpdateDomainCount value */ @@ -59,7 +59,7 @@ public Integer platformUpdateDomainCount() { } /** - * Set the platformUpdateDomainCount value. + * Set update Domain count. * * @param platformUpdateDomainCount the platformUpdateDomainCount value to set * @return the AvailabilitySetUpdate object itself. @@ -70,7 +70,7 @@ public AvailabilitySetUpdate withPlatformUpdateDomainCount(Integer platformUpdat } /** - * Get the platformFaultDomainCount value. + * Get fault Domain count. * * @return the platformFaultDomainCount value */ @@ -79,7 +79,7 @@ public Integer platformFaultDomainCount() { } /** - * Set the platformFaultDomainCount value. + * Set fault Domain count. * * @param platformFaultDomainCount the platformFaultDomainCount value to set * @return the AvailabilitySetUpdate object itself. @@ -90,7 +90,7 @@ public AvailabilitySetUpdate withPlatformFaultDomainCount(Integer platformFaultD } /** - * Get the virtualMachines value. + * Get a list of references to all virtual machines in the availability set. * * @return the virtualMachines value */ @@ -99,7 +99,7 @@ public List virtualMachines() { } /** - * Set the virtualMachines value. + * Set a list of references to all virtual machines in the availability set. * * @param virtualMachines the virtualMachines value to set * @return the AvailabilitySetUpdate object itself. @@ -110,7 +110,7 @@ public AvailabilitySetUpdate withVirtualMachines(List virtualMachin } /** - * Get the statuses value. + * Get the resource status information. * * @return the statuses value */ @@ -119,7 +119,7 @@ public List statuses() { } /** - * Get the sku value. + * Get sku of the availability set. * * @return the sku value */ @@ -128,7 +128,7 @@ public Sku sku() { } /** - * Set the sku value. + * Set sku of the availability set. * * @param sku the sku value to set * @return the AvailabilitySetUpdate object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySets.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySets.java index fc354bbb5fb5..3b77fc24a909 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySets.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/AvailabilitySets.java @@ -14,6 +14,7 @@ import com.microsoft.azure.arm.resources.collection.SupportsGettingByResourceGroup; import rx.Observable; import com.microsoft.azure.arm.resources.collection.SupportsListingByResourceGroup; +import com.microsoft.azure.arm.collection.SupportsListing; import com.microsoft.azure.management.compute.v2017_12_01.implementation.AvailabilitySetsInner; import com.microsoft.azure.arm.model.HasInner; import com.microsoft.azure.management.compute.v2017_12_01.AvailabilitySetVirtualMachineSize; @@ -21,7 +22,7 @@ /** * Type representing AvailabilitySets. */ -public interface AvailabilitySets extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, HasInner { +public interface AvailabilitySets extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner { /** * Lists all available virtual machine sizes that can be used to create a new virtual machine in an existing availability set. * diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/BootDiagnostics.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/BootDiagnostics.java index d59fd7c2fa03..5c512f30c003 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/BootDiagnostics.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/BootDiagnostics.java @@ -12,9 +12,8 @@ /** * Boot Diagnostics is a debugging feature which allows you to view Console - * Output and Screenshot to diagnose VM status. <br><br> For Linux - * Virtual Machines, you can easily view the output of your console log. - * <br><br> For both Windows and Linux virtual machines, Azure also + * Output and Screenshot to diagnose VM status. <br><br> You can + * easily view the output of your console log. <br><br> Azure also * enables you to see a screenshot of the VM from the hypervisor. */ public class BootDiagnostics { @@ -32,7 +31,7 @@ public class BootDiagnostics { private String storageUri; /** - * Get the enabled value. + * Get whether boot diagnostics should be enabled on the Virtual Machine. * * @return the enabled value */ @@ -41,7 +40,7 @@ public Boolean enabled() { } /** - * Set the enabled value. + * Set whether boot diagnostics should be enabled on the Virtual Machine. * * @param enabled the enabled value to set * @return the BootDiagnostics object itself. @@ -52,7 +51,7 @@ public BootDiagnostics withEnabled(Boolean enabled) { } /** - * Get the storageUri value. + * Get uri of the storage account to use for placing the console output and screenshot. * * @return the storageUri value */ @@ -61,7 +60,7 @@ public String storageUri() { } /** - * Set the storageUri value. + * Set uri of the storage account to use for placing the console output and screenshot. * * @param storageUri the storageUri value to set * @return the BootDiagnostics object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/BootDiagnosticsInstanceView.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/BootDiagnosticsInstanceView.java index f374f8673820..c3c1c511e5e5 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/BootDiagnosticsInstanceView.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/BootDiagnosticsInstanceView.java @@ -17,17 +17,17 @@ public class BootDiagnosticsInstanceView { /** * The console screenshot blob URI. */ - @JsonProperty(value = "consoleScreenshotBlobUri") + @JsonProperty(value = "consoleScreenshotBlobUri", access = JsonProperty.Access.WRITE_ONLY) private String consoleScreenshotBlobUri; /** * The Linux serial console log blob Uri. */ - @JsonProperty(value = "serialConsoleLogBlobUri") + @JsonProperty(value = "serialConsoleLogBlobUri", access = JsonProperty.Access.WRITE_ONLY) private String serialConsoleLogBlobUri; /** - * Get the consoleScreenshotBlobUri value. + * Get the console screenshot blob URI. * * @return the consoleScreenshotBlobUri value */ @@ -36,18 +36,7 @@ public String consoleScreenshotBlobUri() { } /** - * Set the consoleScreenshotBlobUri value. - * - * @param consoleScreenshotBlobUri the consoleScreenshotBlobUri value to set - * @return the BootDiagnosticsInstanceView object itself. - */ - public BootDiagnosticsInstanceView withConsoleScreenshotBlobUri(String consoleScreenshotBlobUri) { - this.consoleScreenshotBlobUri = consoleScreenshotBlobUri; - return this; - } - - /** - * Get the serialConsoleLogBlobUri value. + * Get the Linux serial console log blob Uri. * * @return the serialConsoleLogBlobUri value */ @@ -55,15 +44,4 @@ public String serialConsoleLogBlobUri() { return this.serialConsoleLogBlobUri; } - /** - * Set the serialConsoleLogBlobUri value. - * - * @param serialConsoleLogBlobUri the serialConsoleLogBlobUri value to set - * @return the BootDiagnosticsInstanceView object itself. - */ - public BootDiagnosticsInstanceView withSerialConsoleLogBlobUri(String serialConsoleLogBlobUri) { - this.serialConsoleLogBlobUri = serialConsoleLogBlobUri; - return this; - } - } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ComputeLongRunningOperationProperties.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ComputeLongRunningOperationProperties.java index b3871c2f9069..d14498f6bc55 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ComputeLongRunningOperationProperties.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ComputeLongRunningOperationProperties.java @@ -21,7 +21,7 @@ public class ComputeLongRunningOperationProperties { private Object output; /** - * Get the output value. + * Get operation output data (raw JSON). * * @return the output value */ @@ -30,7 +30,7 @@ public Object output() { } /** - * Set the output value. + * Set operation output data (raw JSON). * * @param output the output value to set * @return the ComputeLongRunningOperationProperties object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DataDisk.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DataDisk.java index 3e61f8aa104a..c77a7d280bb1 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DataDisk.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DataDisk.java @@ -75,7 +75,7 @@ public class DataDisk { /** * Specifies the size of an empty data disk in gigabytes. This element can - * be used to overwrite the name of the disk in a virtual machine image. + * be used to overwrite the size of the disk in a virtual machine image. * <br><br> This value cannot be larger than 1023 GB. */ @JsonProperty(value = "diskSizeGB") @@ -88,7 +88,7 @@ public class DataDisk { private ManagedDiskParameters managedDisk; /** - * Get the lun value. + * Get specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. * * @return the lun value */ @@ -97,7 +97,7 @@ public int lun() { } /** - * Set the lun value. + * Set specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. * * @param lun the lun value to set * @return the DataDisk object itself. @@ -108,7 +108,7 @@ public DataDisk withLun(int lun) { } /** - * Get the name value. + * Get the disk name. * * @return the name value */ @@ -117,7 +117,7 @@ public String name() { } /** - * Set the name value. + * Set the disk name. * * @param name the name value to set * @return the DataDisk object itself. @@ -128,7 +128,7 @@ public DataDisk withName(String name) { } /** - * Get the vhd value. + * Get the virtual hard disk. * * @return the vhd value */ @@ -137,7 +137,7 @@ public VirtualHardDisk vhd() { } /** - * Set the vhd value. + * Set the virtual hard disk. * * @param vhd the vhd value to set * @return the DataDisk object itself. @@ -148,7 +148,7 @@ public DataDisk withVhd(VirtualHardDisk vhd) { } /** - * Get the image value. + * Get the source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided, the destination virtual hard drive must not exist. * * @return the image value */ @@ -157,7 +157,7 @@ public VirtualHardDisk image() { } /** - * Set the image value. + * Set the source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided, the destination virtual hard drive must not exist. * * @param image the image value to set * @return the DataDisk object itself. @@ -168,7 +168,7 @@ public DataDisk withImage(VirtualHardDisk image) { } /** - * Get the caching value. + * Get specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @return the caching value */ @@ -177,7 +177,7 @@ public CachingTypes caching() { } /** - * Set the caching value. + * Set specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @param caching the caching value to set * @return the DataDisk object itself. @@ -188,7 +188,7 @@ public DataDisk withCaching(CachingTypes caching) { } /** - * Get the writeAcceleratorEnabled value. + * Get specifies whether writeAccelerator should be enabled or disabled on the disk. * * @return the writeAcceleratorEnabled value */ @@ -197,7 +197,7 @@ public Boolean writeAcceleratorEnabled() { } /** - * Set the writeAcceleratorEnabled value. + * Set specifies whether writeAccelerator should be enabled or disabled on the disk. * * @param writeAcceleratorEnabled the writeAcceleratorEnabled value to set * @return the DataDisk object itself. @@ -208,7 +208,7 @@ public DataDisk withWriteAcceleratorEnabled(Boolean writeAcceleratorEnabled) { } /** - * Get the createOption value. + * Get specifies how the virtual machine should be created.<br><br> Possible values are:<br><br> **Attach** \u2013 This value is used when you are using a specialized disk to create the virtual machine.<br><br> **FromImage** \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you also use the plan element previously described. Possible values include: 'FromImage', 'Empty', 'Attach'. * * @return the createOption value */ @@ -217,7 +217,7 @@ public DiskCreateOptionTypes createOption() { } /** - * Set the createOption value. + * Set specifies how the virtual machine should be created.<br><br> Possible values are:<br><br> **Attach** \u2013 This value is used when you are using a specialized disk to create the virtual machine.<br><br> **FromImage** \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you also use the plan element previously described. Possible values include: 'FromImage', 'Empty', 'Attach'. * * @param createOption the createOption value to set * @return the DataDisk object itself. @@ -228,7 +228,7 @@ public DataDisk withCreateOption(DiskCreateOptionTypes createOption) { } /** - * Get the diskSizeGB value. + * Get specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @return the diskSizeGB value */ @@ -237,7 +237,7 @@ public Integer diskSizeGB() { } /** - * Set the diskSizeGB value. + * Set specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @param diskSizeGB the diskSizeGB value to set * @return the DataDisk object itself. @@ -248,7 +248,7 @@ public DataDisk withDiskSizeGB(Integer diskSizeGB) { } /** - * Get the managedDisk value. + * Get the managed disk parameters. * * @return the managedDisk value */ @@ -257,7 +257,7 @@ public ManagedDiskParameters managedDisk() { } /** - * Set the managedDisk value. + * Set the managed disk parameters. * * @param managedDisk the managedDisk value to set * @return the DataDisk object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DataDiskImage.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DataDiskImage.java index a4641b82cb16..9bc924c3cd7a 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DataDiskImage.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DataDiskImage.java @@ -23,7 +23,7 @@ public class DataDiskImage { private Integer lun; /** - * Get the lun value. + * Get specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. * * @return the lun value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiagnosticsProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiagnosticsProfile.java index 485d4e5892b6..f306a7c86ba8 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiagnosticsProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiagnosticsProfile.java @@ -17,9 +17,8 @@ public class DiagnosticsProfile { /** * Boot Diagnostics is a debugging feature which allows you to view Console - * Output and Screenshot to diagnose VM status. <br><br> For - * Linux Virtual Machines, you can easily view the output of your console - * log. <br><br> For both Windows and Linux virtual machines, + * Output and Screenshot to diagnose VM status. <br><br> You + * can easily view the output of your console log. <br><br> * Azure also enables you to see a screenshot of the VM from the * hypervisor. */ @@ -27,7 +26,7 @@ public class DiagnosticsProfile { private BootDiagnostics bootDiagnostics; /** - * Get the bootDiagnostics value. + * Get boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. <br><br> You can easily view the output of your console log. <br><br> Azure also enables you to see a screenshot of the VM from the hypervisor. * * @return the bootDiagnostics value */ @@ -36,7 +35,7 @@ public BootDiagnostics bootDiagnostics() { } /** - * Set the bootDiagnostics value. + * Set boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. <br><br> You can easily view the output of your console log. <br><br> Azure also enables you to see a screenshot of the VM from the hypervisor. * * @param bootDiagnostics the bootDiagnostics value to set * @return the DiagnosticsProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiskEncryptionSettings.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiskEncryptionSettings.java index 6d8f1da0a575..9112faee31c9 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiskEncryptionSettings.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiskEncryptionSettings.java @@ -35,7 +35,7 @@ public class DiskEncryptionSettings { private Boolean enabled; /** - * Get the diskEncryptionKey value. + * Get specifies the location of the disk encryption key, which is a Key Vault Secret. * * @return the diskEncryptionKey value */ @@ -44,7 +44,7 @@ public KeyVaultSecretReference diskEncryptionKey() { } /** - * Set the diskEncryptionKey value. + * Set specifies the location of the disk encryption key, which is a Key Vault Secret. * * @param diskEncryptionKey the diskEncryptionKey value to set * @return the DiskEncryptionSettings object itself. @@ -55,7 +55,7 @@ public DiskEncryptionSettings withDiskEncryptionKey(KeyVaultSecretReference disk } /** - * Get the keyEncryptionKey value. + * Get specifies the location of the key encryption key in Key Vault. * * @return the keyEncryptionKey value */ @@ -64,7 +64,7 @@ public KeyVaultKeyReference keyEncryptionKey() { } /** - * Set the keyEncryptionKey value. + * Set specifies the location of the key encryption key in Key Vault. * * @param keyEncryptionKey the keyEncryptionKey value to set * @return the DiskEncryptionSettings object itself. @@ -75,7 +75,7 @@ public DiskEncryptionSettings withKeyEncryptionKey(KeyVaultKeyReference keyEncry } /** - * Get the enabled value. + * Get specifies whether disk encryption should be enabled on the virtual machine. * * @return the enabled value */ @@ -84,7 +84,7 @@ public Boolean enabled() { } /** - * Set the enabled value. + * Set specifies whether disk encryption should be enabled on the virtual machine. * * @param enabled the enabled value to set * @return the DiskEncryptionSettings object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiskInstanceView.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiskInstanceView.java index edcd01330973..3f91db1d3b71 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiskInstanceView.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/DiskInstanceView.java @@ -35,7 +35,7 @@ public class DiskInstanceView { private List statuses; /** - * Get the name value. + * Get the disk name. * * @return the name value */ @@ -44,7 +44,7 @@ public String name() { } /** - * Set the name value. + * Set the disk name. * * @param name the name value to set * @return the DiskInstanceView object itself. @@ -55,7 +55,7 @@ public DiskInstanceView withName(String name) { } /** - * Get the encryptionSettings value. + * Get specifies the encryption settings for the OS Disk. <br><br> Minimum api-version: 2015-06-15. * * @return the encryptionSettings value */ @@ -64,7 +64,7 @@ public List encryptionSettings() { } /** - * Set the encryptionSettings value. + * Set specifies the encryption settings for the OS Disk. <br><br> Minimum api-version: 2015-06-15. * * @param encryptionSettings the encryptionSettings value to set * @return the DiskInstanceView object itself. @@ -75,7 +75,7 @@ public DiskInstanceView withEncryptionSettings(List encr } /** - * Get the statuses value. + * Get the resource status information. * * @return the statuses value */ @@ -84,7 +84,7 @@ public List statuses() { } /** - * Set the statuses value. + * Set the resource status information. * * @param statuses the statuses value to set * @return the DiskInstanceView object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/HardwareProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/HardwareProfile.java index 0de0d9e4a29b..13dd315fb367 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/HardwareProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/HardwareProfile.java @@ -79,7 +79,7 @@ public class HardwareProfile { private VirtualMachineSizeTypes vmSize; /** - * Get the vmSize value. + * Get specifies the size of the virtual machine. For more information about virtual machine sizes, see [Sizes for virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-sizes?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> The available VM sizes depend on region and availability set. For a list of available sizes use these APIs: <br><br> [List all available virtual machine sizes in an availability set](https://docs.microsoft.com/rest/api/compute/availabilitysets/listavailablesizes) <br><br> [List all available virtual machine sizes in a region](https://docs.microsoft.com/rest/api/compute/virtualmachinesizes/list) <br><br> [List all available virtual machine sizes for resizing](https://docs.microsoft.com/rest/api/compute/virtualmachines/listavailablesizes). Possible values include: 'Basic_A0', 'Basic_A1', 'Basic_A2', 'Basic_A3', 'Basic_A4', 'Standard_A0', 'Standard_A1', 'Standard_A2', 'Standard_A3', 'Standard_A4', 'Standard_A5', 'Standard_A6', 'Standard_A7', 'Standard_A8', 'Standard_A9', 'Standard_A10', 'Standard_A11', 'Standard_A1_v2', 'Standard_A2_v2', 'Standard_A4_v2', 'Standard_A8_v2', 'Standard_A2m_v2', 'Standard_A4m_v2', 'Standard_A8m_v2', 'Standard_B1s', 'Standard_B1ms', 'Standard_B2s', 'Standard_B2ms', 'Standard_B4ms', 'Standard_B8ms', 'Standard_D1', 'Standard_D2', 'Standard_D3', 'Standard_D4', 'Standard_D11', 'Standard_D12', 'Standard_D13', 'Standard_D14', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D2_v3', 'Standard_D4_v3', 'Standard_D8_v3', 'Standard_D16_v3', 'Standard_D32_v3', 'Standard_D64_v3', 'Standard_D2s_v3', 'Standard_D4s_v3', 'Standard_D8s_v3', 'Standard_D16s_v3', 'Standard_D32s_v3', 'Standard_D64s_v3', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_D14_v2', 'Standard_D15_v2', 'Standard_DS1', 'Standard_DS2', 'Standard_DS3', 'Standard_DS4', 'Standard_DS11', 'Standard_DS12', 'Standard_DS13', 'Standard_DS14', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_DS14_v2', 'Standard_DS15_v2', 'Standard_DS13-4_v2', 'Standard_DS13-2_v2', 'Standard_DS14-8_v2', 'Standard_DS14-4_v2', 'Standard_E2_v3', 'Standard_E4_v3', 'Standard_E8_v3', 'Standard_E16_v3', 'Standard_E32_v3', 'Standard_E64_v3', 'Standard_E2s_v3', 'Standard_E4s_v3', 'Standard_E8s_v3', 'Standard_E16s_v3', 'Standard_E32s_v3', 'Standard_E64s_v3', 'Standard_E32-16_v3', 'Standard_E32-8s_v3', 'Standard_E64-32s_v3', 'Standard_E64-16s_v3', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s', 'Standard_F2s_v2', 'Standard_F4s_v2', 'Standard_F8s_v2', 'Standard_F16s_v2', 'Standard_F32s_v2', 'Standard_F64s_v2', 'Standard_F72s_v2', 'Standard_G1', 'Standard_G2', 'Standard_G3', 'Standard_G4', 'Standard_G5', 'Standard_GS1', 'Standard_GS2', 'Standard_GS3', 'Standard_GS4', 'Standard_GS5', 'Standard_GS4-8', 'Standard_GS4-4', 'Standard_GS5-16', 'Standard_GS5-8', 'Standard_H8', 'Standard_H16', 'Standard_H8m', 'Standard_H16m', 'Standard_H16r', 'Standard_H16mr', 'Standard_L4s', 'Standard_L8s', 'Standard_L16s', 'Standard_L32s', 'Standard_M64s', 'Standard_M64ms', 'Standard_M128s', 'Standard_M128ms', 'Standard_M64-32ms', 'Standard_M64-16ms', 'Standard_M128-64ms', 'Standard_M128-32ms', 'Standard_NC6', 'Standard_NC12', 'Standard_NC24', 'Standard_NC24r', 'Standard_NC6s_v2', 'Standard_NC12s_v2', 'Standard_NC24s_v2', 'Standard_NC24rs_v2', 'Standard_NC6s_v3', 'Standard_NC12s_v3', 'Standard_NC24s_v3', 'Standard_NC24rs_v3', 'Standard_ND6s', 'Standard_ND12s', 'Standard_ND24s', 'Standard_ND24rs', 'Standard_NV6', 'Standard_NV12', 'Standard_NV24'. * * @return the vmSize value */ @@ -88,7 +88,7 @@ public VirtualMachineSizeTypes vmSize() { } /** - * Set the vmSize value. + * Set specifies the size of the virtual machine. For more information about virtual machine sizes, see [Sizes for virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-sizes?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> The available VM sizes depend on region and availability set. For a list of available sizes use these APIs: <br><br> [List all available virtual machine sizes in an availability set](https://docs.microsoft.com/rest/api/compute/availabilitysets/listavailablesizes) <br><br> [List all available virtual machine sizes in a region](https://docs.microsoft.com/rest/api/compute/virtualmachinesizes/list) <br><br> [List all available virtual machine sizes for resizing](https://docs.microsoft.com/rest/api/compute/virtualmachines/listavailablesizes). Possible values include: 'Basic_A0', 'Basic_A1', 'Basic_A2', 'Basic_A3', 'Basic_A4', 'Standard_A0', 'Standard_A1', 'Standard_A2', 'Standard_A3', 'Standard_A4', 'Standard_A5', 'Standard_A6', 'Standard_A7', 'Standard_A8', 'Standard_A9', 'Standard_A10', 'Standard_A11', 'Standard_A1_v2', 'Standard_A2_v2', 'Standard_A4_v2', 'Standard_A8_v2', 'Standard_A2m_v2', 'Standard_A4m_v2', 'Standard_A8m_v2', 'Standard_B1s', 'Standard_B1ms', 'Standard_B2s', 'Standard_B2ms', 'Standard_B4ms', 'Standard_B8ms', 'Standard_D1', 'Standard_D2', 'Standard_D3', 'Standard_D4', 'Standard_D11', 'Standard_D12', 'Standard_D13', 'Standard_D14', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D2_v3', 'Standard_D4_v3', 'Standard_D8_v3', 'Standard_D16_v3', 'Standard_D32_v3', 'Standard_D64_v3', 'Standard_D2s_v3', 'Standard_D4s_v3', 'Standard_D8s_v3', 'Standard_D16s_v3', 'Standard_D32s_v3', 'Standard_D64s_v3', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2', 'Standard_D14_v2', 'Standard_D15_v2', 'Standard_DS1', 'Standard_DS2', 'Standard_DS3', 'Standard_DS4', 'Standard_DS11', 'Standard_DS12', 'Standard_DS13', 'Standard_DS14', 'Standard_DS1_v2', 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', 'Standard_DS14_v2', 'Standard_DS15_v2', 'Standard_DS13-4_v2', 'Standard_DS13-2_v2', 'Standard_DS14-8_v2', 'Standard_DS14-4_v2', 'Standard_E2_v3', 'Standard_E4_v3', 'Standard_E8_v3', 'Standard_E16_v3', 'Standard_E32_v3', 'Standard_E64_v3', 'Standard_E2s_v3', 'Standard_E4s_v3', 'Standard_E8s_v3', 'Standard_E16s_v3', 'Standard_E32s_v3', 'Standard_E64s_v3', 'Standard_E32-16_v3', 'Standard_E32-8s_v3', 'Standard_E64-32s_v3', 'Standard_E64-16s_v3', 'Standard_F1', 'Standard_F2', 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s', 'Standard_F2s_v2', 'Standard_F4s_v2', 'Standard_F8s_v2', 'Standard_F16s_v2', 'Standard_F32s_v2', 'Standard_F64s_v2', 'Standard_F72s_v2', 'Standard_G1', 'Standard_G2', 'Standard_G3', 'Standard_G4', 'Standard_G5', 'Standard_GS1', 'Standard_GS2', 'Standard_GS3', 'Standard_GS4', 'Standard_GS5', 'Standard_GS4-8', 'Standard_GS4-4', 'Standard_GS5-16', 'Standard_GS5-8', 'Standard_H8', 'Standard_H16', 'Standard_H8m', 'Standard_H16m', 'Standard_H16r', 'Standard_H16mr', 'Standard_L4s', 'Standard_L8s', 'Standard_L16s', 'Standard_L32s', 'Standard_M64s', 'Standard_M64ms', 'Standard_M128s', 'Standard_M128ms', 'Standard_M64-32ms', 'Standard_M64-16ms', 'Standard_M128-64ms', 'Standard_M128-32ms', 'Standard_NC6', 'Standard_NC12', 'Standard_NC24', 'Standard_NC24r', 'Standard_NC6s_v2', 'Standard_NC12s_v2', 'Standard_NC24s_v2', 'Standard_NC24rs_v2', 'Standard_NC6s_v3', 'Standard_NC12s_v3', 'Standard_NC24s_v3', 'Standard_NC24rs_v3', 'Standard_ND6s', 'Standard_ND12s', 'Standard_ND24s', 'Standard_ND24rs', 'Standard_NV6', 'Standard_NV12', 'Standard_NV24'. * * @param vmSize the vmSize value to set * @return the HardwareProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Image.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Image.java index ebfaa9082c5f..be7e09cabe34 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Image.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Image.java @@ -10,12 +10,12 @@ import com.microsoft.azure.arm.model.HasInner; import com.microsoft.azure.arm.resources.models.Resource; +import com.microsoft.azure.arm.resources.models.GroupableResourceCore; import com.microsoft.azure.arm.resources.models.HasResourceGroup; import com.microsoft.azure.arm.model.Refreshable; import com.microsoft.azure.arm.model.Updatable; import com.microsoft.azure.arm.model.Appliable; import com.microsoft.azure.arm.model.Creatable; -import com.microsoft.azure.arm.resources.models.GroupableResourceCore; import com.microsoft.azure.arm.resources.models.HasManager; import com.microsoft.azure.management.compute.v2017_12_01.implementation.ComputeManager; import com.microsoft.azure.SubResource; @@ -63,21 +63,25 @@ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup, Resource.UpdateWithTags, Upda */ interface UpdateStages { /** - * The stage of the image {0} allowing to specify SourceVirtualMachine. + * The stage of the image update allowing to specify SourceVirtualMachine. */ interface WithSourceVirtualMachine { /** * Specifies sourceVirtualMachine. + * @param sourceVirtualMachine The source virtual machine from which Image is created + * @return the next update stage */ Update withSourceVirtualMachine(SubResource sourceVirtualMachine); } /** - * The stage of the image {0} allowing to specify StorageProfile. + * The stage of the image update allowing to specify StorageProfile. */ interface WithStorageProfile { /** * Specifies storageProfile. + * @param storageProfile Specifies the storage settings for the virtual machine disks + * @return the next update stage */ Update withStorageProfile(ImageStorageProfile storageProfile); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageDataDisk.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageDataDisk.java index 2c479d174eeb..b8b8fff74e98 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageDataDisk.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageDataDisk.java @@ -68,7 +68,7 @@ public class ImageDataDisk { private StorageAccountTypes storageAccountType; /** - * Get the lun value. + * Get specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. * * @return the lun value */ @@ -77,7 +77,7 @@ public int lun() { } /** - * Set the lun value. + * Set specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. * * @param lun the lun value to set * @return the ImageDataDisk object itself. @@ -88,7 +88,7 @@ public ImageDataDisk withLun(int lun) { } /** - * Get the snapshot value. + * Get the snapshot. * * @return the snapshot value */ @@ -97,7 +97,7 @@ public SubResource snapshot() { } /** - * Set the snapshot value. + * Set the snapshot. * * @param snapshot the snapshot value to set * @return the ImageDataDisk object itself. @@ -108,7 +108,7 @@ public ImageDataDisk withSnapshot(SubResource snapshot) { } /** - * Get the managedDisk value. + * Get the managedDisk. * * @return the managedDisk value */ @@ -117,7 +117,7 @@ public SubResource managedDisk() { } /** - * Set the managedDisk value. + * Set the managedDisk. * * @param managedDisk the managedDisk value to set * @return the ImageDataDisk object itself. @@ -128,7 +128,7 @@ public ImageDataDisk withManagedDisk(SubResource managedDisk) { } /** - * Get the blobUri value. + * Get the Virtual Hard Disk. * * @return the blobUri value */ @@ -137,7 +137,7 @@ public String blobUri() { } /** - * Set the blobUri value. + * Set the Virtual Hard Disk. * * @param blobUri the blobUri value to set * @return the ImageDataDisk object itself. @@ -148,7 +148,7 @@ public ImageDataDisk withBlobUri(String blobUri) { } /** - * Get the caching value. + * Get specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @return the caching value */ @@ -157,7 +157,7 @@ public CachingTypes caching() { } /** - * Set the caching value. + * Set specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @param caching the caching value to set * @return the ImageDataDisk object itself. @@ -168,7 +168,7 @@ public ImageDataDisk withCaching(CachingTypes caching) { } /** - * Get the diskSizeGB value. + * Get specifies the size of empty data disks in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @return the diskSizeGB value */ @@ -177,7 +177,7 @@ public Integer diskSizeGB() { } /** - * Set the diskSizeGB value. + * Set specifies the size of empty data disks in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @param diskSizeGB the diskSizeGB value to set * @return the ImageDataDisk object itself. @@ -188,7 +188,7 @@ public ImageDataDisk withDiskSizeGB(Integer diskSizeGB) { } /** - * Get the storageAccountType value. + * Get specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS'. * * @return the storageAccountType value */ @@ -197,7 +197,7 @@ public StorageAccountTypes storageAccountType() { } /** - * Set the storageAccountType value. + * Set specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS'. * * @param storageAccountType the storageAccountType value to set * @return the ImageDataDisk object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageOSDisk.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageOSDisk.java index 4403e1300004..f56294fef177 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageOSDisk.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageOSDisk.java @@ -76,7 +76,7 @@ public class ImageOSDisk { private StorageAccountTypes storageAccountType; /** - * Get the osType value. + * Get this property allows you to specify the type of the OS that is included in the disk if creating a VM from a custom image. <br><br> Possible values are: <br><br> **Windows** <br><br> **Linux**. Possible values include: 'Windows', 'Linux'. * * @return the osType value */ @@ -85,7 +85,7 @@ public OperatingSystemTypes osType() { } /** - * Set the osType value. + * Set this property allows you to specify the type of the OS that is included in the disk if creating a VM from a custom image. <br><br> Possible values are: <br><br> **Windows** <br><br> **Linux**. Possible values include: 'Windows', 'Linux'. * * @param osType the osType value to set * @return the ImageOSDisk object itself. @@ -96,7 +96,7 @@ public ImageOSDisk withOsType(OperatingSystemTypes osType) { } /** - * Get the osState value. + * Get the OS State. Possible values include: 'Generalized', 'Specialized'. * * @return the osState value */ @@ -105,7 +105,7 @@ public OperatingSystemStateTypes osState() { } /** - * Set the osState value. + * Set the OS State. Possible values include: 'Generalized', 'Specialized'. * * @param osState the osState value to set * @return the ImageOSDisk object itself. @@ -116,7 +116,7 @@ public ImageOSDisk withOsState(OperatingSystemStateTypes osState) { } /** - * Get the snapshot value. + * Get the snapshot. * * @return the snapshot value */ @@ -125,7 +125,7 @@ public SubResource snapshot() { } /** - * Set the snapshot value. + * Set the snapshot. * * @param snapshot the snapshot value to set * @return the ImageOSDisk object itself. @@ -136,7 +136,7 @@ public ImageOSDisk withSnapshot(SubResource snapshot) { } /** - * Get the managedDisk value. + * Get the managedDisk. * * @return the managedDisk value */ @@ -145,7 +145,7 @@ public SubResource managedDisk() { } /** - * Set the managedDisk value. + * Set the managedDisk. * * @param managedDisk the managedDisk value to set * @return the ImageOSDisk object itself. @@ -156,7 +156,7 @@ public ImageOSDisk withManagedDisk(SubResource managedDisk) { } /** - * Get the blobUri value. + * Get the Virtual Hard Disk. * * @return the blobUri value */ @@ -165,7 +165,7 @@ public String blobUri() { } /** - * Set the blobUri value. + * Set the Virtual Hard Disk. * * @param blobUri the blobUri value to set * @return the ImageOSDisk object itself. @@ -176,7 +176,7 @@ public ImageOSDisk withBlobUri(String blobUri) { } /** - * Get the caching value. + * Get specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @return the caching value */ @@ -185,7 +185,7 @@ public CachingTypes caching() { } /** - * Set the caching value. + * Set specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @param caching the caching value to set * @return the ImageOSDisk object itself. @@ -196,7 +196,7 @@ public ImageOSDisk withCaching(CachingTypes caching) { } /** - * Get the diskSizeGB value. + * Get specifies the size of empty data disks in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @return the diskSizeGB value */ @@ -205,7 +205,7 @@ public Integer diskSizeGB() { } /** - * Set the diskSizeGB value. + * Set specifies the size of empty data disks in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @param diskSizeGB the diskSizeGB value to set * @return the ImageOSDisk object itself. @@ -216,7 +216,7 @@ public ImageOSDisk withDiskSizeGB(Integer diskSizeGB) { } /** - * Get the storageAccountType value. + * Get specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS'. * * @return the storageAccountType value */ @@ -225,7 +225,7 @@ public StorageAccountTypes storageAccountType() { } /** - * Set the storageAccountType value. + * Set specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS'. * * @param storageAccountType the storageAccountType value to set * @return the ImageOSDisk object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageReference.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageReference.java index 2dc2dcc9cc55..1bd007b4ee73 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageReference.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageReference.java @@ -16,7 +16,8 @@ * about platform images, marketplace images, or virtual machine images. This * element is required when you want to use a platform image, marketplace * image, or virtual machine image, but is not used in other creation - * operations. + * operations. NOTE: Image reference publisher and offer can only be set when + * you create the scale set. */ public class ImageReference extends SubResource { /** @@ -50,7 +51,7 @@ public class ImageReference extends SubResource { private String version; /** - * Get the publisher value. + * Get the image publisher. * * @return the publisher value */ @@ -59,7 +60,7 @@ public String publisher() { } /** - * Set the publisher value. + * Set the image publisher. * * @param publisher the publisher value to set * @return the ImageReference object itself. @@ -70,7 +71,7 @@ public ImageReference withPublisher(String publisher) { } /** - * Get the offer value. + * Get specifies the offer of the platform image or marketplace image used to create the virtual machine. * * @return the offer value */ @@ -79,7 +80,7 @@ public String offer() { } /** - * Set the offer value. + * Set specifies the offer of the platform image or marketplace image used to create the virtual machine. * * @param offer the offer value to set * @return the ImageReference object itself. @@ -90,7 +91,7 @@ public ImageReference withOffer(String offer) { } /** - * Get the sku value. + * Get the image SKU. * * @return the sku value */ @@ -99,7 +100,7 @@ public String sku() { } /** - * Set the sku value. + * Set the image SKU. * * @param sku the sku value to set * @return the ImageReference object itself. @@ -110,7 +111,7 @@ public ImageReference withSku(String sku) { } /** - * Get the version value. + * Get specifies the version of the platform image or marketplace image used to create the virtual machine. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available. * * @return the version value */ @@ -119,7 +120,7 @@ public String version() { } /** - * Set the version value. + * Set specifies the version of the platform image or marketplace image used to create the virtual machine. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available. * * @param version the version value to set * @return the ImageReference object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageStorageProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageStorageProfile.java index 175d97c41ec5..d6d17915afdf 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageStorageProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageStorageProfile.java @@ -42,7 +42,7 @@ public class ImageStorageProfile { private Boolean zoneResilient; /** - * Get the osDisk value. + * Get specifies information about the operating system disk used by the virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @return the osDisk value */ @@ -51,7 +51,7 @@ public ImageOSDisk osDisk() { } /** - * Set the osDisk value. + * Set specifies information about the operating system disk used by the virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @param osDisk the osDisk value to set * @return the ImageStorageProfile object itself. @@ -62,7 +62,7 @@ public ImageStorageProfile withOsDisk(ImageOSDisk osDisk) { } /** - * Get the dataDisks value. + * Get specifies the parameters that are used to add a data disk to a virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @return the dataDisks value */ @@ -71,7 +71,7 @@ public List dataDisks() { } /** - * Set the dataDisks value. + * Set specifies the parameters that are used to add a data disk to a virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @param dataDisks the dataDisks value to set * @return the ImageStorageProfile object itself. @@ -82,7 +82,7 @@ public ImageStorageProfile withDataDisks(List dataDisks) { } /** - * Get the zoneResilient value. + * Get specifies whether an image is zone resilient or not. Default is false. Zone resilient images can be created only in regions that provide Zone Redundant Storage (ZRS). * * @return the zoneResilient value */ @@ -91,7 +91,7 @@ public Boolean zoneResilient() { } /** - * Set the zoneResilient value. + * Set specifies whether an image is zone resilient or not. Default is false. Zone resilient images can be created only in regions that provide Zone Redundant Storage (ZRS). * * @param zoneResilient the zoneResilient value to set * @return the ImageStorageProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageUpdate.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageUpdate.java index f365e080bb14..a618273c6fbd 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageUpdate.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ImageUpdate.java @@ -36,7 +36,7 @@ public class ImageUpdate extends UpdateResource { private String provisioningState; /** - * Get the sourceVirtualMachine value. + * Get the source virtual machine from which Image is created. * * @return the sourceVirtualMachine value */ @@ -45,7 +45,7 @@ public SubResource sourceVirtualMachine() { } /** - * Set the sourceVirtualMachine value. + * Set the source virtual machine from which Image is created. * * @param sourceVirtualMachine the sourceVirtualMachine value to set * @return the ImageUpdate object itself. @@ -56,7 +56,7 @@ public ImageUpdate withSourceVirtualMachine(SubResource sourceVirtualMachine) { } /** - * Get the storageProfile value. + * Get specifies the storage settings for the virtual machine disks. * * @return the storageProfile value */ @@ -65,7 +65,7 @@ public ImageStorageProfile storageProfile() { } /** - * Set the storageProfile value. + * Set specifies the storage settings for the virtual machine disks. * * @param storageProfile the storageProfile value to set * @return the ImageUpdate object itself. @@ -76,7 +76,7 @@ public ImageUpdate withStorageProfile(ImageStorageProfile storageProfile) { } /** - * Get the provisioningState value. + * Get the provisioning state. * * @return the provisioningState value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/InnerError.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/InnerError.java index f6eb66554eed..05fc927e8af5 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/InnerError.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/InnerError.java @@ -27,7 +27,7 @@ public class InnerError { private String errordetail; /** - * Get the exceptiontype value. + * Get the exception type. * * @return the exceptiontype value */ @@ -36,7 +36,7 @@ public String exceptiontype() { } /** - * Set the exceptiontype value. + * Set the exception type. * * @param exceptiontype the exceptiontype value to set * @return the InnerError object itself. @@ -47,7 +47,7 @@ public InnerError withExceptiontype(String exceptiontype) { } /** - * Get the errordetail value. + * Get the internal error message or exception dump. * * @return the errordetail value */ @@ -56,7 +56,7 @@ public String errordetail() { } /** - * Set the errordetail value. + * Set the internal error message or exception dump. * * @param errordetail the errordetail value to set * @return the InnerError object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/InstanceViewStatus.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/InstanceViewStatus.java index 44231fbbfb28..b9c74cb5d474 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/InstanceViewStatus.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/InstanceViewStatus.java @@ -46,7 +46,7 @@ public class InstanceViewStatus { private DateTime time; /** - * Get the code value. + * Get the status code. * * @return the code value */ @@ -55,7 +55,7 @@ public String code() { } /** - * Set the code value. + * Set the status code. * * @param code the code value to set * @return the InstanceViewStatus object itself. @@ -66,7 +66,7 @@ public InstanceViewStatus withCode(String code) { } /** - * Get the level value. + * Get the level code. Possible values include: 'Info', 'Warning', 'Error'. * * @return the level value */ @@ -75,7 +75,7 @@ public StatusLevelTypes level() { } /** - * Set the level value. + * Set the level code. Possible values include: 'Info', 'Warning', 'Error'. * * @param level the level value to set * @return the InstanceViewStatus object itself. @@ -86,7 +86,7 @@ public InstanceViewStatus withLevel(StatusLevelTypes level) { } /** - * Get the displayStatus value. + * Get the short localizable label for the status. * * @return the displayStatus value */ @@ -95,7 +95,7 @@ public String displayStatus() { } /** - * Set the displayStatus value. + * Set the short localizable label for the status. * * @param displayStatus the displayStatus value to set * @return the InstanceViewStatus object itself. @@ -106,7 +106,7 @@ public InstanceViewStatus withDisplayStatus(String displayStatus) { } /** - * Get the message value. + * Get the detailed status message, including for alerts and error messages. * * @return the message value */ @@ -115,7 +115,7 @@ public String message() { } /** - * Set the message value. + * Set the detailed status message, including for alerts and error messages. * * @param message the message value to set * @return the InstanceViewStatus object itself. @@ -126,7 +126,7 @@ public InstanceViewStatus withMessage(String message) { } /** - * Get the time value. + * Get the time of the status. * * @return the time value */ @@ -135,7 +135,7 @@ public DateTime time() { } /** - * Set the time value. + * Set the time of the status. * * @param time the time value to set * @return the InstanceViewStatus object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/KeyVaultKeyReference.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/KeyVaultKeyReference.java index 660eedd02e02..5a4b54244b16 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/KeyVaultKeyReference.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/KeyVaultKeyReference.java @@ -28,7 +28,7 @@ public class KeyVaultKeyReference { private SubResource sourceVault; /** - * Get the keyUrl value. + * Get the URL referencing a key encryption key in Key Vault. * * @return the keyUrl value */ @@ -37,7 +37,7 @@ public String keyUrl() { } /** - * Set the keyUrl value. + * Set the URL referencing a key encryption key in Key Vault. * * @param keyUrl the keyUrl value to set * @return the KeyVaultKeyReference object itself. @@ -48,7 +48,7 @@ public KeyVaultKeyReference withKeyUrl(String keyUrl) { } /** - * Get the sourceVault value. + * Get the relative URL of the Key Vault containing the key. * * @return the sourceVault value */ @@ -57,7 +57,7 @@ public SubResource sourceVault() { } /** - * Set the sourceVault value. + * Set the relative URL of the Key Vault containing the key. * * @param sourceVault the sourceVault value to set * @return the KeyVaultKeyReference object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/KeyVaultSecretReference.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/KeyVaultSecretReference.java index c64fffff70d3..d950e13de31e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/KeyVaultSecretReference.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/KeyVaultSecretReference.java @@ -28,7 +28,7 @@ public class KeyVaultSecretReference { private SubResource sourceVault; /** - * Get the secretUrl value. + * Get the URL referencing a secret in a Key Vault. * * @return the secretUrl value */ @@ -37,7 +37,7 @@ public String secretUrl() { } /** - * Set the secretUrl value. + * Set the URL referencing a secret in a Key Vault. * * @param secretUrl the secretUrl value to set * @return the KeyVaultSecretReference object itself. @@ -48,7 +48,7 @@ public KeyVaultSecretReference withSecretUrl(String secretUrl) { } /** - * Get the sourceVault value. + * Get the relative URL of the Key Vault containing the secret. * * @return the sourceVault value */ @@ -57,7 +57,7 @@ public SubResource sourceVault() { } /** - * Set the sourceVault value. + * Set the relative URL of the Key Vault containing the secret. * * @param sourceVault the sourceVault value to set * @return the KeyVaultSecretReference object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LinuxConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LinuxConfiguration.java index dd065115e926..1583ee4dc3dd 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LinuxConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LinuxConfiguration.java @@ -33,7 +33,7 @@ public class LinuxConfiguration { private SshConfiguration ssh; /** - * Get the disablePasswordAuthentication value. + * Get specifies whether password authentication should be disabled. * * @return the disablePasswordAuthentication value */ @@ -42,7 +42,7 @@ public Boolean disablePasswordAuthentication() { } /** - * Set the disablePasswordAuthentication value. + * Set specifies whether password authentication should be disabled. * * @param disablePasswordAuthentication the disablePasswordAuthentication value to set * @return the LinuxConfiguration object itself. @@ -53,7 +53,7 @@ public LinuxConfiguration withDisablePasswordAuthentication(Boolean disablePassw } /** - * Get the ssh value. + * Get specifies the ssh key configuration for a Linux OS. * * @return the ssh value */ @@ -62,7 +62,7 @@ public SshConfiguration ssh() { } /** - * Set the ssh value. + * Set specifies the ssh key configuration for a Linux OS. * * @param ssh the ssh value to set * @return the LinuxConfiguration object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LogAnalyticsInputBase.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LogAnalyticsInputBase.java index 32315ac3bf96..51e9e772184e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LogAnalyticsInputBase.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LogAnalyticsInputBase.java @@ -41,7 +41,7 @@ public class LogAnalyticsInputBase { private Boolean groupByThrottlePolicy; /** - * Group query result by by Operation Name. + * Group query result by Operation Name. */ @JsonProperty(value = "groupByOperationName") private Boolean groupByOperationName; @@ -53,7 +53,7 @@ public class LogAnalyticsInputBase { private Boolean groupByResourceName; /** - * Get the blobContainerSasUri value. + * Get sAS Uri of the logging blob container to which LogAnalytics Api writes output logs to. * * @return the blobContainerSasUri value */ @@ -62,7 +62,7 @@ public String blobContainerSasUri() { } /** - * Set the blobContainerSasUri value. + * Set sAS Uri of the logging blob container to which LogAnalytics Api writes output logs to. * * @param blobContainerSasUri the blobContainerSasUri value to set * @return the LogAnalyticsInputBase object itself. @@ -73,7 +73,7 @@ public LogAnalyticsInputBase withBlobContainerSasUri(String blobContainerSasUri) } /** - * Get the fromTime value. + * Get from time of the query. * * @return the fromTime value */ @@ -82,7 +82,7 @@ public DateTime fromTime() { } /** - * Set the fromTime value. + * Set from time of the query. * * @param fromTime the fromTime value to set * @return the LogAnalyticsInputBase object itself. @@ -93,7 +93,7 @@ public LogAnalyticsInputBase withFromTime(DateTime fromTime) { } /** - * Get the toTime value. + * Get to time of the query. * * @return the toTime value */ @@ -102,7 +102,7 @@ public DateTime toTime() { } /** - * Set the toTime value. + * Set to time of the query. * * @param toTime the toTime value to set * @return the LogAnalyticsInputBase object itself. @@ -113,7 +113,7 @@ public LogAnalyticsInputBase withToTime(DateTime toTime) { } /** - * Get the groupByThrottlePolicy value. + * Get group query result by Throttle Policy applied. * * @return the groupByThrottlePolicy value */ @@ -122,7 +122,7 @@ public Boolean groupByThrottlePolicy() { } /** - * Set the groupByThrottlePolicy value. + * Set group query result by Throttle Policy applied. * * @param groupByThrottlePolicy the groupByThrottlePolicy value to set * @return the LogAnalyticsInputBase object itself. @@ -133,7 +133,7 @@ public LogAnalyticsInputBase withGroupByThrottlePolicy(Boolean groupByThrottlePo } /** - * Get the groupByOperationName value. + * Get group query result by Operation Name. * * @return the groupByOperationName value */ @@ -142,7 +142,7 @@ public Boolean groupByOperationName() { } /** - * Set the groupByOperationName value. + * Set group query result by Operation Name. * * @param groupByOperationName the groupByOperationName value to set * @return the LogAnalyticsInputBase object itself. @@ -153,7 +153,7 @@ public LogAnalyticsInputBase withGroupByOperationName(Boolean groupByOperationNa } /** - * Get the groupByResourceName value. + * Get group query result by Resource Name. * * @return the groupByResourceName value */ @@ -162,7 +162,7 @@ public Boolean groupByResourceName() { } /** - * Set the groupByResourceName value. + * Set group query result by Resource Name. * * @param groupByResourceName the groupByResourceName value to set * @return the LogAnalyticsInputBase object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LogAnalyticsOutput.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LogAnalyticsOutput.java index ffadc4edb9bc..be24b5f7aae9 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LogAnalyticsOutput.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/LogAnalyticsOutput.java @@ -21,7 +21,7 @@ public class LogAnalyticsOutput { private String output; /** - * Get the output value. + * Get output file Uri path to blob container. * * @return the output value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/MaintenanceRedeployStatus.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/MaintenanceRedeployStatus.java index b0f8b898bff7..96357e6bcf37 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/MaintenanceRedeployStatus.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/MaintenanceRedeployStatus.java @@ -59,7 +59,7 @@ public class MaintenanceRedeployStatus { private String lastOperationMessage; /** - * Get the isCustomerInitiatedMaintenanceAllowed value. + * Get true, if customer is allowed to perform Maintenance. * * @return the isCustomerInitiatedMaintenanceAllowed value */ @@ -68,7 +68,7 @@ public Boolean isCustomerInitiatedMaintenanceAllowed() { } /** - * Set the isCustomerInitiatedMaintenanceAllowed value. + * Set true, if customer is allowed to perform Maintenance. * * @param isCustomerInitiatedMaintenanceAllowed the isCustomerInitiatedMaintenanceAllowed value to set * @return the MaintenanceRedeployStatus object itself. @@ -79,7 +79,7 @@ public MaintenanceRedeployStatus withIsCustomerInitiatedMaintenanceAllowed(Boole } /** - * Get the preMaintenanceWindowStartTime value. + * Get start Time for the Pre Maintenance Window. * * @return the preMaintenanceWindowStartTime value */ @@ -88,7 +88,7 @@ public DateTime preMaintenanceWindowStartTime() { } /** - * Set the preMaintenanceWindowStartTime value. + * Set start Time for the Pre Maintenance Window. * * @param preMaintenanceWindowStartTime the preMaintenanceWindowStartTime value to set * @return the MaintenanceRedeployStatus object itself. @@ -99,7 +99,7 @@ public MaintenanceRedeployStatus withPreMaintenanceWindowStartTime(DateTime preM } /** - * Get the preMaintenanceWindowEndTime value. + * Get end Time for the Pre Maintenance Window. * * @return the preMaintenanceWindowEndTime value */ @@ -108,7 +108,7 @@ public DateTime preMaintenanceWindowEndTime() { } /** - * Set the preMaintenanceWindowEndTime value. + * Set end Time for the Pre Maintenance Window. * * @param preMaintenanceWindowEndTime the preMaintenanceWindowEndTime value to set * @return the MaintenanceRedeployStatus object itself. @@ -119,7 +119,7 @@ public MaintenanceRedeployStatus withPreMaintenanceWindowEndTime(DateTime preMai } /** - * Get the maintenanceWindowStartTime value. + * Get start Time for the Maintenance Window. * * @return the maintenanceWindowStartTime value */ @@ -128,7 +128,7 @@ public DateTime maintenanceWindowStartTime() { } /** - * Set the maintenanceWindowStartTime value. + * Set start Time for the Maintenance Window. * * @param maintenanceWindowStartTime the maintenanceWindowStartTime value to set * @return the MaintenanceRedeployStatus object itself. @@ -139,7 +139,7 @@ public MaintenanceRedeployStatus withMaintenanceWindowStartTime(DateTime mainten } /** - * Get the maintenanceWindowEndTime value. + * Get end Time for the Maintenance Window. * * @return the maintenanceWindowEndTime value */ @@ -148,7 +148,7 @@ public DateTime maintenanceWindowEndTime() { } /** - * Set the maintenanceWindowEndTime value. + * Set end Time for the Maintenance Window. * * @param maintenanceWindowEndTime the maintenanceWindowEndTime value to set * @return the MaintenanceRedeployStatus object itself. @@ -159,7 +159,7 @@ public MaintenanceRedeployStatus withMaintenanceWindowEndTime(DateTime maintenan } /** - * Get the lastOperationResultCode value. + * Get the Last Maintenance Operation Result Code. Possible values include: 'None', 'RetryLater', 'MaintenanceAborted', 'MaintenanceCompleted'. * * @return the lastOperationResultCode value */ @@ -168,7 +168,7 @@ public MaintenanceOperationResultCodeTypes lastOperationResultCode() { } /** - * Set the lastOperationResultCode value. + * Set the Last Maintenance Operation Result Code. Possible values include: 'None', 'RetryLater', 'MaintenanceAborted', 'MaintenanceCompleted'. * * @param lastOperationResultCode the lastOperationResultCode value to set * @return the MaintenanceRedeployStatus object itself. @@ -179,7 +179,7 @@ public MaintenanceRedeployStatus withLastOperationResultCode(MaintenanceOperatio } /** - * Get the lastOperationMessage value. + * Get message returned for the last Maintenance Operation. * * @return the lastOperationMessage value */ @@ -188,7 +188,7 @@ public String lastOperationMessage() { } /** - * Set the lastOperationMessage value. + * Set message returned for the last Maintenance Operation. * * @param lastOperationMessage the lastOperationMessage value to set * @return the MaintenanceRedeployStatus object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ManagedDiskParameters.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ManagedDiskParameters.java index f0a64bfd5b71..cc9c9e212073 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ManagedDiskParameters.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/ManagedDiskParameters.java @@ -24,7 +24,7 @@ public class ManagedDiskParameters extends SubResource { private StorageAccountTypes storageAccountType; /** - * Get the storageAccountType value. + * Get specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS'. * * @return the storageAccountType value */ @@ -33,7 +33,7 @@ public StorageAccountTypes storageAccountType() { } /** - * Set the storageAccountType value. + * Set specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS'. * * @param storageAccountType the storageAccountType value to set * @return the ManagedDiskParameters object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/NetworkInterfaceReference.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/NetworkInterfaceReference.java index f2e1554a4664..04a43568b56c 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/NetworkInterfaceReference.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/NetworkInterfaceReference.java @@ -25,7 +25,7 @@ public class NetworkInterfaceReference extends SubResource { private Boolean primary; /** - * Get the primary value. + * Get specifies the primary network interface in case the virtual machine has more than 1 network interface. * * @return the primary value */ @@ -34,7 +34,7 @@ public Boolean primary() { } /** - * Set the primary value. + * Set specifies the primary network interface in case the virtual machine has more than 1 network interface. * * @param primary the primary value to set * @return the NetworkInterfaceReference object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/NetworkProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/NetworkProfile.java index 4df59c458a67..a5b70bffd93f 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/NetworkProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/NetworkProfile.java @@ -23,7 +23,7 @@ public class NetworkProfile { private List networkInterfaces; /** - * Get the networkInterfaces value. + * Get specifies the list of resource Ids for the network interfaces associated with the virtual machine. * * @return the networkInterfaces value */ @@ -32,7 +32,7 @@ public List networkInterfaces() { } /** - * Set the networkInterfaces value. + * Set specifies the list of resource Ids for the network interfaces associated with the virtual machine. * * @param networkInterfaces the networkInterfaces value to set * @return the NetworkProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSDisk.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSDisk.java index 08aaf14028c6..b4e79eaccb22 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSDisk.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSDisk.java @@ -87,7 +87,7 @@ public class OSDisk { /** * Specifies the size of an empty data disk in gigabytes. This element can - * be used to overwrite the name of the disk in a virtual machine image. + * be used to overwrite the size of the disk in a virtual machine image. * <br><br> This value cannot be larger than 1023 GB. */ @JsonProperty(value = "diskSizeGB") @@ -100,7 +100,7 @@ public class OSDisk { private ManagedDiskParameters managedDisk; /** - * Get the osType value. + * Get this property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD. <br><br> Possible values are: <br><br> **Windows** <br><br> **Linux**. Possible values include: 'Windows', 'Linux'. * * @return the osType value */ @@ -109,7 +109,7 @@ public OperatingSystemTypes osType() { } /** - * Set the osType value. + * Set this property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD. <br><br> Possible values are: <br><br> **Windows** <br><br> **Linux**. Possible values include: 'Windows', 'Linux'. * * @param osType the osType value to set * @return the OSDisk object itself. @@ -120,7 +120,7 @@ public OSDisk withOsType(OperatingSystemTypes osType) { } /** - * Get the encryptionSettings value. + * Get specifies the encryption settings for the OS Disk. <br><br> Minimum api-version: 2015-06-15. * * @return the encryptionSettings value */ @@ -129,7 +129,7 @@ public DiskEncryptionSettings encryptionSettings() { } /** - * Set the encryptionSettings value. + * Set specifies the encryption settings for the OS Disk. <br><br> Minimum api-version: 2015-06-15. * * @param encryptionSettings the encryptionSettings value to set * @return the OSDisk object itself. @@ -140,7 +140,7 @@ public OSDisk withEncryptionSettings(DiskEncryptionSettings encryptionSettings) } /** - * Get the name value. + * Get the disk name. * * @return the name value */ @@ -149,7 +149,7 @@ public String name() { } /** - * Set the name value. + * Set the disk name. * * @param name the name value to set * @return the OSDisk object itself. @@ -160,7 +160,7 @@ public OSDisk withName(String name) { } /** - * Get the vhd value. + * Get the virtual hard disk. * * @return the vhd value */ @@ -169,7 +169,7 @@ public VirtualHardDisk vhd() { } /** - * Set the vhd value. + * Set the virtual hard disk. * * @param vhd the vhd value to set * @return the OSDisk object itself. @@ -180,7 +180,7 @@ public OSDisk withVhd(VirtualHardDisk vhd) { } /** - * Get the image value. + * Get the source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided, the destination virtual hard drive must not exist. * * @return the image value */ @@ -189,7 +189,7 @@ public VirtualHardDisk image() { } /** - * Set the image value. + * Set the source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided, the destination virtual hard drive must not exist. * * @param image the image value to set * @return the OSDisk object itself. @@ -200,7 +200,7 @@ public OSDisk withImage(VirtualHardDisk image) { } /** - * Get the caching value. + * Get specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @return the caching value */ @@ -209,7 +209,7 @@ public CachingTypes caching() { } /** - * Set the caching value. + * Set specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @param caching the caching value to set * @return the OSDisk object itself. @@ -220,7 +220,7 @@ public OSDisk withCaching(CachingTypes caching) { } /** - * Get the writeAcceleratorEnabled value. + * Get specifies whether writeAccelerator should be enabled or disabled on the disk. * * @return the writeAcceleratorEnabled value */ @@ -229,7 +229,7 @@ public Boolean writeAcceleratorEnabled() { } /** - * Set the writeAcceleratorEnabled value. + * Set specifies whether writeAccelerator should be enabled or disabled on the disk. * * @param writeAcceleratorEnabled the writeAcceleratorEnabled value to set * @return the OSDisk object itself. @@ -240,7 +240,7 @@ public OSDisk withWriteAcceleratorEnabled(Boolean writeAcceleratorEnabled) { } /** - * Get the createOption value. + * Get specifies how the virtual machine should be created.<br><br> Possible values are:<br><br> **Attach** \u2013 This value is used when you are using a specialized disk to create the virtual machine.<br><br> **FromImage** \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you also use the plan element previously described. Possible values include: 'FromImage', 'Empty', 'Attach'. * * @return the createOption value */ @@ -249,7 +249,7 @@ public DiskCreateOptionTypes createOption() { } /** - * Set the createOption value. + * Set specifies how the virtual machine should be created.<br><br> Possible values are:<br><br> **Attach** \u2013 This value is used when you are using a specialized disk to create the virtual machine.<br><br> **FromImage** \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you also use the plan element previously described. Possible values include: 'FromImage', 'Empty', 'Attach'. * * @param createOption the createOption value to set * @return the OSDisk object itself. @@ -260,7 +260,7 @@ public OSDisk withCreateOption(DiskCreateOptionTypes createOption) { } /** - * Get the diskSizeGB value. + * Get specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @return the diskSizeGB value */ @@ -269,7 +269,7 @@ public Integer diskSizeGB() { } /** - * Set the diskSizeGB value. + * Set specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @param diskSizeGB the diskSizeGB value to set * @return the OSDisk object itself. @@ -280,7 +280,7 @@ public OSDisk withDiskSizeGB(Integer diskSizeGB) { } /** - * Get the managedDisk value. + * Get the managed disk parameters. * * @return the managedDisk value */ @@ -289,7 +289,7 @@ public ManagedDiskParameters managedDisk() { } /** - * Set the managedDisk value. + * Set the managed disk parameters. * * @param managedDisk the managedDisk value to set * @return the OSDisk object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSDiskImage.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSDiskImage.java index 38d51530f40c..bf17d019ec67 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSDiskImage.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSDiskImage.java @@ -22,7 +22,7 @@ public class OSDiskImage { private OperatingSystemTypes operatingSystem; /** - * Get the operatingSystem value. + * Get the operating system of the osDiskImage. Possible values include: 'Windows', 'Linux'. * * @return the operatingSystem value */ @@ -31,7 +31,7 @@ public OperatingSystemTypes operatingSystem() { } /** - * Set the operatingSystem value. + * Set the operating system of the osDiskImage. Possible values include: 'Windows', 'Linux'. * * @param operatingSystem the operatingSystem value to set * @return the OSDiskImage object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSProfile.java index f4489702f4f1..d6bc28279111 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/OSProfile.java @@ -17,10 +17,11 @@ public class OSProfile { /** * Specifies the host OS name of the virtual machine. <br><br> - * **Max-length (Windows):** 15 characters <br><br> - * **Max-length (Linux):** 64 characters. <br><br> For naming - * conventions and restrictions see [Azure infrastructure services - * implementation + * This name cannot be updated after the VM is created. + * <br><br> **Max-length (Windows):** 15 characters + * <br><br> **Max-length (Linux):** 64 characters. + * <br><br> For naming conventions and restrictions see [Azure + * infrastructure services implementation * guidelines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-infrastructure-subscription-accounts-guidelines?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#1-naming-conventions). */ @JsonProperty(value = "computerName") @@ -106,7 +107,7 @@ public class OSProfile { private List secrets; /** - * Get the computerName value. + * Get specifies the host OS name of the virtual machine. <br><br> This name cannot be updated after the VM is created. <br><br> **Max-length (Windows):** 15 characters <br><br> **Max-length (Linux):** 64 characters. <br><br> For naming conventions and restrictions see [Azure infrastructure services implementation guidelines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-infrastructure-subscription-accounts-guidelines?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#1-naming-conventions). * * @return the computerName value */ @@ -115,7 +116,7 @@ public String computerName() { } /** - * Set the computerName value. + * Set specifies the host OS name of the virtual machine. <br><br> This name cannot be updated after the VM is created. <br><br> **Max-length (Windows):** 15 characters <br><br> **Max-length (Linux):** 64 characters. <br><br> For naming conventions and restrictions see [Azure infrastructure services implementation guidelines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-infrastructure-subscription-accounts-guidelines?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#1-naming-conventions). * * @param computerName the computerName value to set * @return the OSProfile object itself. @@ -126,7 +127,7 @@ public OSProfile withComputerName(String computerName) { } /** - * Get the adminUsername value. + * Get specifies the name of the administrator account. <br><br> **Windows-only restriction:** Cannot end in "." <br><br> **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". <br><br> **Minimum-length (Linux):** 1 character <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length (Windows):** 20 characters <br><br><li> For root access to the Linux VM, see [Using root privileges on Linux virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)<br><li> For a list of built-in system users on Linux that should not be used in this field, see [Selecting User Names for Linux on Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @return the adminUsername value */ @@ -135,7 +136,7 @@ public String adminUsername() { } /** - * Set the adminUsername value. + * Set specifies the name of the administrator account. <br><br> **Windows-only restriction:** Cannot end in "." <br><br> **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". <br><br> **Minimum-length (Linux):** 1 character <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length (Windows):** 20 characters <br><br><li> For root access to the Linux VM, see [Using root privileges on Linux virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)<br><li> For a list of built-in system users on Linux that should not be used in this field, see [Selecting User Names for Linux on Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @param adminUsername the adminUsername value to set * @return the OSProfile object itself. @@ -146,7 +147,7 @@ public OSProfile withAdminUsername(String adminUsername) { } /** - * Get the adminPassword value. + * Get specifies the password of the administrator account. <br><br> **Minimum-length (Windows):** 8 characters <br><br> **Minimum-length (Linux):** 6 characters <br><br> **Max-length (Windows):** 123 characters <br><br> **Max-length (Linux):** 72 characters <br><br> **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled <br> Has lower characters <br>Has upper characters <br> Has a digit <br> Has a special character (Regex match [\W_]) <br><br> **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!" <br><br> For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password). * * @return the adminPassword value */ @@ -155,7 +156,7 @@ public String adminPassword() { } /** - * Set the adminPassword value. + * Set specifies the password of the administrator account. <br><br> **Minimum-length (Windows):** 8 characters <br><br> **Minimum-length (Linux):** 6 characters <br><br> **Max-length (Windows):** 123 characters <br><br> **Max-length (Linux):** 72 characters <br><br> **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled <br> Has lower characters <br>Has upper characters <br> Has a digit <br> Has a special character (Regex match [\W_]) <br><br> **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!" <br><br> For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password). * * @param adminPassword the adminPassword value to set * @return the OSProfile object itself. @@ -166,7 +167,7 @@ public OSProfile withAdminPassword(String adminPassword) { } /** - * Get the customData value. + * Get specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. <br><br> For using cloud-init for your VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @return the customData value */ @@ -175,7 +176,7 @@ public String customData() { } /** - * Set the customData value. + * Set specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. <br><br> For using cloud-init for your VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @param customData the customData value to set * @return the OSProfile object itself. @@ -186,7 +187,7 @@ public OSProfile withCustomData(String customData) { } /** - * Get the windowsConfiguration value. + * Get specifies Windows operating system settings on the virtual machine. * * @return the windowsConfiguration value */ @@ -195,7 +196,7 @@ public WindowsConfiguration windowsConfiguration() { } /** - * Set the windowsConfiguration value. + * Set specifies Windows operating system settings on the virtual machine. * * @param windowsConfiguration the windowsConfiguration value to set * @return the OSProfile object itself. @@ -206,7 +207,7 @@ public OSProfile withWindowsConfiguration(WindowsConfiguration windowsConfigurat } /** - * Get the linuxConfiguration value. + * Get specifies the Linux operating system settings on the virtual machine. <br><br>For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) <br><br> For running non-endorsed distributions, see [Information for Non-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @return the linuxConfiguration value */ @@ -215,7 +216,7 @@ public LinuxConfiguration linuxConfiguration() { } /** - * Set the linuxConfiguration value. + * Set specifies the Linux operating system settings on the virtual machine. <br><br>For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) <br><br> For running non-endorsed distributions, see [Information for Non-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @param linuxConfiguration the linuxConfiguration value to set * @return the OSProfile object itself. @@ -226,7 +227,7 @@ public OSProfile withLinuxConfiguration(LinuxConfiguration linuxConfiguration) { } /** - * Get the secrets value. + * Get specifies set of certificates that should be installed onto the virtual machine. * * @return the secrets value */ @@ -235,7 +236,7 @@ public List secrets() { } /** - * Set the secrets value. + * Set specifies set of certificates that should be installed onto the virtual machine. * * @param secrets the secrets value to set * @return the OSProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Plan.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Plan.java index 706959e783f6..c558718b558e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Plan.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Plan.java @@ -45,7 +45,7 @@ public class Plan { private String promotionCode; /** - * Get the name value. + * Get the plan ID. * * @return the name value */ @@ -54,7 +54,7 @@ public String name() { } /** - * Set the name value. + * Set the plan ID. * * @param name the name value to set * @return the Plan object itself. @@ -65,7 +65,7 @@ public Plan withName(String name) { } /** - * Get the publisher value. + * Get the publisher ID. * * @return the publisher value */ @@ -74,7 +74,7 @@ public String publisher() { } /** - * Set the publisher value. + * Set the publisher ID. * * @param publisher the publisher value to set * @return the Plan object itself. @@ -85,7 +85,7 @@ public Plan withPublisher(String publisher) { } /** - * Get the product value. + * Get specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element. * * @return the product value */ @@ -94,7 +94,7 @@ public String product() { } /** - * Set the product value. + * Set specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element. * * @param product the product value to set * @return the Plan object itself. @@ -105,7 +105,7 @@ public Plan withProduct(String product) { } /** - * Get the promotionCode value. + * Get the promotion code. * * @return the promotionCode value */ @@ -114,7 +114,7 @@ public String promotionCode() { } /** - * Set the promotionCode value. + * Set the promotion code. * * @param promotionCode the promotionCode value to set * @return the Plan object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/PurchasePlan.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/PurchasePlan.java index 2c35d99d844d..07ecdb4dff25 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/PurchasePlan.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/PurchasePlan.java @@ -35,7 +35,7 @@ public class PurchasePlan { private String product; /** - * Get the publisher value. + * Get the publisher ID. * * @return the publisher value */ @@ -44,7 +44,7 @@ public String publisher() { } /** - * Set the publisher value. + * Set the publisher ID. * * @param publisher the publisher value to set * @return the PurchasePlan object itself. @@ -55,7 +55,7 @@ public PurchasePlan withPublisher(String publisher) { } /** - * Get the name value. + * Get the plan ID. * * @return the name value */ @@ -64,7 +64,7 @@ public String name() { } /** - * Set the name value. + * Set the plan ID. * * @param name the name value to set * @return the PurchasePlan object itself. @@ -75,7 +75,7 @@ public PurchasePlan withName(String name) { } /** - * Get the product value. + * Get specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element. * * @return the product value */ @@ -84,7 +84,7 @@ public String product() { } /** - * Set the product value. + * Set specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element. * * @param product the product value to set * @return the PurchasePlan object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RequestRateByIntervalInput.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RequestRateByIntervalInput.java index bf1a991b190e..d1511a067772 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RequestRateByIntervalInput.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RequestRateByIntervalInput.java @@ -23,7 +23,7 @@ public class RequestRateByIntervalInput extends LogAnalyticsInputBase { private IntervalInMins intervalLength; /** - * Get the intervalLength value. + * Get interval value in minutes used to create LogAnalytics call rate logs. Possible values include: 'ThreeMins', 'FiveMins', 'ThirtyMins', 'SixtyMins'. * * @return the intervalLength value */ @@ -32,7 +32,7 @@ public IntervalInMins intervalLength() { } /** - * Set the intervalLength value. + * Set interval value in minutes used to create LogAnalytics call rate logs. Possible values include: 'ThreeMins', 'FiveMins', 'ThirtyMins', 'SixtyMins'. * * @param intervalLength the intervalLength value to set * @return the RequestRateByIntervalInput object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollbackStatusInfo.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollbackStatusInfo.java index 8207a42eda11..db0955bfd4d4 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollbackStatusInfo.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollbackStatusInfo.java @@ -34,7 +34,7 @@ public class RollbackStatusInfo { private ApiError rollbackError; /** - * Get the successfullyRolledbackInstanceCount value. + * Get the number of instances which have been successfully rolled back. * * @return the successfullyRolledbackInstanceCount value */ @@ -43,7 +43,7 @@ public Integer successfullyRolledbackInstanceCount() { } /** - * Get the failedRolledbackInstanceCount value. + * Get the number of instances which failed to rollback. * * @return the failedRolledbackInstanceCount value */ @@ -52,7 +52,7 @@ public Integer failedRolledbackInstanceCount() { } /** - * Get the rollbackError value. + * Get error details if OS rollback failed. * * @return the rollbackError value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradePolicy.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradePolicy.java index 999b0e8ea431..359050d4bde2 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradePolicy.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradePolicy.java @@ -53,7 +53,7 @@ public class RollingUpgradePolicy { private String pauseTimeBetweenBatches; /** - * Get the maxBatchInstancePercent value. + * Get the maximum percent of total virtual machine instances that will be upgraded simultaneously by the rolling upgrade in one batch. As this is a maximum, unhealthy instances in previous or future batches can cause the percentage of instances in a batch to decrease to ensure higher reliability. The default value for this parameter is 20%. * * @return the maxBatchInstancePercent value */ @@ -62,7 +62,7 @@ public Integer maxBatchInstancePercent() { } /** - * Set the maxBatchInstancePercent value. + * Set the maximum percent of total virtual machine instances that will be upgraded simultaneously by the rolling upgrade in one batch. As this is a maximum, unhealthy instances in previous or future batches can cause the percentage of instances in a batch to decrease to ensure higher reliability. The default value for this parameter is 20%. * * @param maxBatchInstancePercent the maxBatchInstancePercent value to set * @return the RollingUpgradePolicy object itself. @@ -73,7 +73,7 @@ public RollingUpgradePolicy withMaxBatchInstancePercent(Integer maxBatchInstance } /** - * Get the maxUnhealthyInstancePercent value. + * Get the maximum percentage of the total virtual machine instances in the scale set that can be simultaneously unhealthy, either as a result of being upgraded, or by being found in an unhealthy state by the virtual machine health checks before the rolling upgrade aborts. This constraint will be checked prior to starting any batch. The default value for this parameter is 20%. * * @return the maxUnhealthyInstancePercent value */ @@ -82,7 +82,7 @@ public Integer maxUnhealthyInstancePercent() { } /** - * Set the maxUnhealthyInstancePercent value. + * Set the maximum percentage of the total virtual machine instances in the scale set that can be simultaneously unhealthy, either as a result of being upgraded, or by being found in an unhealthy state by the virtual machine health checks before the rolling upgrade aborts. This constraint will be checked prior to starting any batch. The default value for this parameter is 20%. * * @param maxUnhealthyInstancePercent the maxUnhealthyInstancePercent value to set * @return the RollingUpgradePolicy object itself. @@ -93,7 +93,7 @@ public RollingUpgradePolicy withMaxUnhealthyInstancePercent(Integer maxUnhealthy } /** - * Get the maxUnhealthyUpgradedInstancePercent value. + * Get the maximum percentage of upgraded virtual machine instances that can be found to be in an unhealthy state. This check will happen after each batch is upgraded. If this percentage is ever exceeded, the rolling update aborts. The default value for this parameter is 20%. * * @return the maxUnhealthyUpgradedInstancePercent value */ @@ -102,7 +102,7 @@ public Integer maxUnhealthyUpgradedInstancePercent() { } /** - * Set the maxUnhealthyUpgradedInstancePercent value. + * Set the maximum percentage of upgraded virtual machine instances that can be found to be in an unhealthy state. This check will happen after each batch is upgraded. If this percentage is ever exceeded, the rolling update aborts. The default value for this parameter is 20%. * * @param maxUnhealthyUpgradedInstancePercent the maxUnhealthyUpgradedInstancePercent value to set * @return the RollingUpgradePolicy object itself. @@ -113,7 +113,7 @@ public RollingUpgradePolicy withMaxUnhealthyUpgradedInstancePercent(Integer maxU } /** - * Get the pauseTimeBetweenBatches value. + * Get the wait time between completing the update for all virtual machines in one batch and starting the next batch. The time duration should be specified in ISO 8601 format. The default value is 0 seconds (PT0S). * * @return the pauseTimeBetweenBatches value */ @@ -122,7 +122,7 @@ public String pauseTimeBetweenBatches() { } /** - * Set the pauseTimeBetweenBatches value. + * Set the wait time between completing the update for all virtual machines in one batch and starting the next batch. The time duration should be specified in ISO 8601 format. The default value is 0 seconds (PT0S). * * @param pauseTimeBetweenBatches the pauseTimeBetweenBatches value to set * @return the RollingUpgradePolicy object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradeProgressInfo.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradeProgressInfo.java index fe594d70d731..d683e53001f6 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradeProgressInfo.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradeProgressInfo.java @@ -40,7 +40,7 @@ public class RollingUpgradeProgressInfo { private Integer pendingInstanceCount; /** - * Get the successfulInstanceCount value. + * Get the number of instances that have been successfully upgraded. * * @return the successfulInstanceCount value */ @@ -49,7 +49,7 @@ public Integer successfulInstanceCount() { } /** - * Get the failedInstanceCount value. + * Get the number of instances that have failed to be upgraded successfully. * * @return the failedInstanceCount value */ @@ -58,7 +58,7 @@ public Integer failedInstanceCount() { } /** - * Get the inProgressInstanceCount value. + * Get the number of instances that are currently being upgraded. * * @return the inProgressInstanceCount value */ @@ -67,7 +67,7 @@ public Integer inProgressInstanceCount() { } /** - * Get the pendingInstanceCount value. + * Get the number of instances that have not yet begun to be upgraded. * * @return the pendingInstanceCount value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradeRunningStatus.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradeRunningStatus.java index d54aa47da1b8..e1b9cf54f0e2 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradeRunningStatus.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RollingUpgradeRunningStatus.java @@ -42,7 +42,7 @@ public class RollingUpgradeRunningStatus { private DateTime lastActionTime; /** - * Get the code value. + * Get code indicating the current status of the upgrade. Possible values include: 'RollingForward', 'Cancelled', 'Completed', 'Faulted'. * * @return the code value */ @@ -51,7 +51,7 @@ public RollingUpgradeStatusCode code() { } /** - * Get the startTime value. + * Get start time of the upgrade. * * @return the startTime value */ @@ -60,7 +60,7 @@ public DateTime startTime() { } /** - * Get the lastAction value. + * Get the last action performed on the rolling upgrade. Possible values include: 'Start', 'Cancel'. * * @return the lastAction value */ @@ -69,7 +69,7 @@ public RollingUpgradeActionType lastAction() { } /** - * Get the lastActionTime value. + * Get last action time of the upgrade. * * @return the lastActionTime value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandInput.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandInput.java index 5c66fe6db133..d0bdd3cc2471 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandInput.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandInput.java @@ -35,7 +35,7 @@ public class RunCommandInput { private List parameters; /** - * Get the commandId value. + * Get the run command id. * * @return the commandId value */ @@ -44,7 +44,7 @@ public String commandId() { } /** - * Set the commandId value. + * Set the run command id. * * @param commandId the commandId value to set * @return the RunCommandInput object itself. @@ -55,7 +55,7 @@ public RunCommandInput withCommandId(String commandId) { } /** - * Get the script value. + * Get optional. The script to be executed. When this value is given, the given script will override the default script of the command. * * @return the script value */ @@ -64,7 +64,7 @@ public List script() { } /** - * Set the script value. + * Set optional. The script to be executed. When this value is given, the given script will override the default script of the command. * * @param script the script value to set * @return the RunCommandInput object itself. @@ -75,7 +75,7 @@ public RunCommandInput withScript(List script) { } /** - * Get the parameters value. + * Get the run command parameters. * * @return the parameters value */ @@ -84,7 +84,7 @@ public List parameters() { } /** - * Set the parameters value. + * Set the run command parameters. * * @param parameters the parameters value to set * @return the RunCommandInput object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandInputParameter.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandInputParameter.java index 7e18c716d015..6027c0967754 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandInputParameter.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandInputParameter.java @@ -27,7 +27,7 @@ public class RunCommandInputParameter { private String value; /** - * Get the name value. + * Get the run command parameter name. * * @return the name value */ @@ -36,7 +36,7 @@ public String name() { } /** - * Set the name value. + * Set the run command parameter name. * * @param name the name value to set * @return the RunCommandInputParameter object itself. @@ -47,7 +47,7 @@ public RunCommandInputParameter withName(String name) { } /** - * Get the value value. + * Get the run command parameter value. * * @return the value value */ @@ -56,7 +56,7 @@ public String value() { } /** - * Set the value value. + * Set the run command parameter value. * * @param value the value value to set * @return the RunCommandInputParameter object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandParameterDefinition.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandParameterDefinition.java index 902143de1f2a..2a363b3103d6 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandParameterDefinition.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/RunCommandParameterDefinition.java @@ -39,7 +39,7 @@ public class RunCommandParameterDefinition { private Boolean required; /** - * Get the name value. + * Get the run command parameter name. * * @return the name value */ @@ -48,7 +48,7 @@ public String name() { } /** - * Set the name value. + * Set the run command parameter name. * * @param name the name value to set * @return the RunCommandParameterDefinition object itself. @@ -59,7 +59,7 @@ public RunCommandParameterDefinition withName(String name) { } /** - * Get the type value. + * Get the run command parameter type. * * @return the type value */ @@ -68,7 +68,7 @@ public String type() { } /** - * Set the type value. + * Set the run command parameter type. * * @param type the type value to set * @return the RunCommandParameterDefinition object itself. @@ -79,7 +79,7 @@ public RunCommandParameterDefinition withType(String type) { } /** - * Get the defaultValue value. + * Get the run command parameter default value. * * @return the defaultValue value */ @@ -88,7 +88,7 @@ public String defaultValue() { } /** - * Set the defaultValue value. + * Set the run command parameter default value. * * @param defaultValue the defaultValue value to set * @return the RunCommandParameterDefinition object itself. @@ -99,7 +99,7 @@ public RunCommandParameterDefinition withDefaultValue(String defaultValue) { } /** - * Get the required value. + * Get the run command parameter required. * * @return the required value */ @@ -108,7 +108,7 @@ public Boolean required() { } /** - * Set the required value. + * Set the run command parameter required. * * @param required the required value to set * @return the RunCommandParameterDefinition object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Sku.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Sku.java index 35f2570273dc..21bf24ccf00b 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Sku.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/Sku.java @@ -11,7 +11,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; /** - * Describes a virtual machine scale set sku. + * Describes a virtual machine scale set sku. NOTE: If the new VM SKU is not + * supported on the hardware the scale set is currently on, you need to + * deallocate the VMs in the scale set before you modify the SKU name. */ public class Sku { /** @@ -35,7 +37,7 @@ public class Sku { private Long capacity; /** - * Get the name value. + * Get the sku name. * * @return the name value */ @@ -44,7 +46,7 @@ public String name() { } /** - * Set the name value. + * Set the sku name. * * @param name the name value to set * @return the Sku object itself. @@ -55,7 +57,7 @@ public Sku withName(String name) { } /** - * Get the tier value. + * Get specifies the tier of virtual machines in a scale set.<br /><br /> Possible Values:<br /><br /> **Standard**<br /><br /> **Basic**. * * @return the tier value */ @@ -64,7 +66,7 @@ public String tier() { } /** - * Set the tier value. + * Set specifies the tier of virtual machines in a scale set.<br /><br /> Possible Values:<br /><br /> **Standard**<br /><br /> **Basic**. * * @param tier the tier value to set * @return the Sku object itself. @@ -75,7 +77,7 @@ public Sku withTier(String tier) { } /** - * Get the capacity value. + * Get specifies the number of virtual machines in the scale set. * * @return the capacity value */ @@ -84,7 +86,7 @@ public Long capacity() { } /** - * Set the capacity value. + * Set specifies the number of virtual machines in the scale set. * * @param capacity the capacity value to set * @return the Sku object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SshConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SshConfiguration.java index be0ba2e5a809..62efd514bf07 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SshConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SshConfiguration.java @@ -22,7 +22,7 @@ public class SshConfiguration { private List publicKeys; /** - * Get the publicKeys value. + * Get the list of SSH public keys used to authenticate with linux based VMs. * * @return the publicKeys value */ @@ -31,7 +31,7 @@ public List publicKeys() { } /** - * Set the publicKeys value. + * Set the list of SSH public keys used to authenticate with linux based VMs. * * @param publicKeys the publicKeys value to set * @return the SshConfiguration object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SshPublicKey.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SshPublicKey.java index 974bab7868b0..50b9a336e3ec 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SshPublicKey.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SshPublicKey.java @@ -34,7 +34,7 @@ public class SshPublicKey { private String keyData; /** - * Get the path value. + * Get specifies the full path on the created VM where ssh public key is stored. If the file already exists, the specified key is appended to the file. Example: /home/user/.ssh/authorized_keys. * * @return the path value */ @@ -43,7 +43,7 @@ public String path() { } /** - * Set the path value. + * Set specifies the full path on the created VM where ssh public key is stored. If the file already exists, the specified key is appended to the file. Example: /home/user/.ssh/authorized_keys. * * @param path the path value to set * @return the SshPublicKey object itself. @@ -54,7 +54,7 @@ public SshPublicKey withPath(String path) { } /** - * Get the keyData value. + * Get sSH public key certificate used to authenticate with the VM through ssh. The key needs to be at least 2048-bit and in ssh-rsa format. <br><br> For creating ssh keys, see [Create SSH keys on Linux and Mac for Linux VMs in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-mac-create-ssh-keys?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @return the keyData value */ @@ -63,7 +63,7 @@ public String keyData() { } /** - * Set the keyData value. + * Set sSH public key certificate used to authenticate with the VM through ssh. The key needs to be at least 2048-bit and in ssh-rsa format. <br><br> For creating ssh keys, see [Create SSH keys on Linux and Mac for Linux VMs in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-mac-create-ssh-keys?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @param keyData the keyData value to set * @return the SshPublicKey object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/StorageProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/StorageProfile.java index 7ec35f671971..336f5dbe3f48 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/StorageProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/StorageProfile.java @@ -44,7 +44,7 @@ public class StorageProfile { private List dataDisks; /** - * Get the imageReference value. + * Get specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This element is required when you want to use a platform image, marketplace image, or virtual machine image, but is not used in other creation operations. * * @return the imageReference value */ @@ -53,7 +53,7 @@ public ImageReference imageReference() { } /** - * Set the imageReference value. + * Set specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This element is required when you want to use a platform image, marketplace image, or virtual machine image, but is not used in other creation operations. * * @param imageReference the imageReference value to set * @return the StorageProfile object itself. @@ -64,7 +64,7 @@ public StorageProfile withImageReference(ImageReference imageReference) { } /** - * Get the osDisk value. + * Get specifies information about the operating system disk used by the virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @return the osDisk value */ @@ -73,7 +73,7 @@ public OSDisk osDisk() { } /** - * Set the osDisk value. + * Set specifies information about the operating system disk used by the virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @param osDisk the osDisk value to set * @return the StorageProfile object itself. @@ -84,7 +84,7 @@ public StorageProfile withOsDisk(OSDisk osDisk) { } /** - * Get the dataDisks value. + * Get specifies the parameters that are used to add a data disk to a virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @return the dataDisks value */ @@ -93,7 +93,7 @@ public List dataDisks() { } /** - * Set the dataDisks value. + * Set specifies the parameters that are used to add a data disk to a virtual machine. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @param dataDisks the dataDisks value to set * @return the StorageProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SubResourceReadOnly.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SubResourceReadOnly.java index e66fe0e581ee..80a1765517e9 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SubResourceReadOnly.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/SubResourceReadOnly.java @@ -21,7 +21,7 @@ public class SubResourceReadOnly { private String id; /** - * Get the id value. + * Get resource Id. * * @return the id value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpdateResource.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpdateResource.java index 8808b169e2ce..1fb55920f690 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpdateResource.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpdateResource.java @@ -22,7 +22,7 @@ public class UpdateResource { private Map tags; /** - * Get the tags value. + * Get resource tags. * * @return the tags value */ @@ -31,7 +31,7 @@ public Map tags() { } /** - * Set the tags value. + * Set resource tags. * * @param tags the tags value to set * @return the UpdateResource object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradeOperationHistoricalStatusInfoProperties.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradeOperationHistoricalStatusInfoProperties.java index 096b287640d6..6730722003ad 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradeOperationHistoricalStatusInfoProperties.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradeOperationHistoricalStatusInfoProperties.java @@ -21,7 +21,7 @@ public class UpgradeOperationHistoricalStatusInfoProperties { private UpgradeOperationHistoryStatus runningStatus; /** - * Counts of the VM's in each state. + * Counts of the VMs in each state. */ @JsonProperty(value = "progress", access = JsonProperty.Access.WRITE_ONLY) private RollingUpgradeProgressInfo progress; @@ -52,7 +52,7 @@ public class UpgradeOperationHistoricalStatusInfoProperties { private RollbackStatusInfo rollbackInfo; /** - * Get the runningStatus value. + * Get information about the overall status of the upgrade operation. * * @return the runningStatus value */ @@ -61,7 +61,7 @@ public UpgradeOperationHistoryStatus runningStatus() { } /** - * Get the progress value. + * Get counts of the VMs in each state. * * @return the progress value */ @@ -70,7 +70,7 @@ public RollingUpgradeProgressInfo progress() { } /** - * Get the error value. + * Get error Details for this upgrade if there are any. * * @return the error value */ @@ -79,7 +79,7 @@ public ApiError error() { } /** - * Get the startedBy value. + * Get invoker of the Upgrade Operation. Possible values include: 'Unknown', 'User', 'Platform'. * * @return the startedBy value */ @@ -88,7 +88,7 @@ public UpgradeOperationInvoker startedBy() { } /** - * Get the targetImageReference value. + * Get image Reference details. * * @return the targetImageReference value */ @@ -97,7 +97,7 @@ public ImageReference targetImageReference() { } /** - * Get the rollbackInfo value. + * Get information about OS rollback if performed. * * @return the rollbackInfo value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradeOperationHistoryStatus.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradeOperationHistoryStatus.java index c013fe0b73de..8eead01d5506 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradeOperationHistoryStatus.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradeOperationHistoryStatus.java @@ -35,7 +35,7 @@ public class UpgradeOperationHistoryStatus { private DateTime endTime; /** - * Get the code value. + * Get code indicating the current status of the upgrade. Possible values include: 'RollingForward', 'Cancelled', 'Completed', 'Faulted'. * * @return the code value */ @@ -44,7 +44,7 @@ public UpgradeState code() { } /** - * Get the startTime value. + * Get start time of the upgrade. * * @return the startTime value */ @@ -53,7 +53,7 @@ public DateTime startTime() { } /** - * Get the endTime value. + * Get end time of the upgrade. * * @return the endTime value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradePolicy.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradePolicy.java index 3072edd998ab..9509b264727f 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradePolicy.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UpgradePolicy.java @@ -47,7 +47,7 @@ public class UpgradePolicy { private AutoOSUpgradePolicy autoOSUpgradePolicy; /** - * Get the mode value. + * Get specifies the mode of an upgrade to virtual machines in the scale set.<br /><br /> Possible values are:<br /><br /> **Manual** - You control the application of updates to virtual machines in the scale set. You do this by using the manualUpgrade action.<br /><br /> **Automatic** - All virtual machines in the scale set are automatically updated at the same time. Possible values include: 'Automatic', 'Manual', 'Rolling'. * * @return the mode value */ @@ -56,7 +56,7 @@ public UpgradeMode mode() { } /** - * Set the mode value. + * Set specifies the mode of an upgrade to virtual machines in the scale set.<br /><br /> Possible values are:<br /><br /> **Manual** - You control the application of updates to virtual machines in the scale set. You do this by using the manualUpgrade action.<br /><br /> **Automatic** - All virtual machines in the scale set are automatically updated at the same time. Possible values include: 'Automatic', 'Manual', 'Rolling'. * * @param mode the mode value to set * @return the UpgradePolicy object itself. @@ -67,7 +67,7 @@ public UpgradePolicy withMode(UpgradeMode mode) { } /** - * Get the rollingUpgradePolicy value. + * Get the configuration parameters used while performing a rolling upgrade. * * @return the rollingUpgradePolicy value */ @@ -76,7 +76,7 @@ public RollingUpgradePolicy rollingUpgradePolicy() { } /** - * Set the rollingUpgradePolicy value. + * Set the configuration parameters used while performing a rolling upgrade. * * @param rollingUpgradePolicy the rollingUpgradePolicy value to set * @return the UpgradePolicy object itself. @@ -87,7 +87,7 @@ public UpgradePolicy withRollingUpgradePolicy(RollingUpgradePolicy rollingUpgrad } /** - * Get the automaticOSUpgrade value. + * Get whether OS upgrades should automatically be applied to scale set instances in a rolling fashion when a newer version of the image becomes available. * * @return the automaticOSUpgrade value */ @@ -96,7 +96,7 @@ public Boolean automaticOSUpgrade() { } /** - * Set the automaticOSUpgrade value. + * Set whether OS upgrades should automatically be applied to scale set instances in a rolling fashion when a newer version of the image becomes available. * * @param automaticOSUpgrade the automaticOSUpgrade value to set * @return the UpgradePolicy object itself. @@ -107,7 +107,7 @@ public UpgradePolicy withAutomaticOSUpgrade(Boolean automaticOSUpgrade) { } /** - * Get the autoOSUpgradePolicy value. + * Get configuration parameters used for performing automatic OS Upgrade. * * @return the autoOSUpgradePolicy value */ @@ -116,7 +116,7 @@ public AutoOSUpgradePolicy autoOSUpgradePolicy() { } /** - * Set the autoOSUpgradePolicy value. + * Set configuration parameters used for performing automatic OS Upgrade. * * @param autoOSUpgradePolicy the autoOSUpgradePolicy value to set * @return the UpgradePolicy object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UsageName.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UsageName.java index 3e4ae08bcd7a..a357996d2295 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UsageName.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/UsageName.java @@ -27,7 +27,7 @@ public class UsageName { private String localizedValue; /** - * Get the value value. + * Get the name of the resource. * * @return the value value */ @@ -36,7 +36,7 @@ public String value() { } /** - * Set the value value. + * Set the name of the resource. * * @param value the value value to set * @return the UsageName object itself. @@ -47,7 +47,7 @@ public UsageName withValue(String value) { } /** - * Get the localizedValue value. + * Get the localized name of the resource. * * @return the localizedValue value */ @@ -56,7 +56,7 @@ public String localizedValue() { } /** - * Set the localizedValue value. + * Set the localized name of the resource. * * @param localizedValue the localizedValue value to set * @return the UsageName object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VaultCertificate.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VaultCertificate.java index 59e13305a5e5..b79661420c2d 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VaultCertificate.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VaultCertificate.java @@ -35,15 +35,16 @@ public class VaultCertificate { * to which the certificate should be added. The specified certificate * store is implicitly in the LocalMachine account. <br><br>For * Linux VMs, the certificate file is placed under the /var/lib/waagent - * directory, with the file name <UppercaseThumbprint>.crt for the - * X509 certificate file and <UppercaseThumbpring>.prv for private - * key. Both of these files are .pem formatted. + * directory, with the file name &lt;UppercaseThumbprint&gt;.crt + * for the X509 certificate file and + * &lt;UppercaseThumbprint&gt;.prv for private key. Both of these + * files are .pem formatted. */ @JsonProperty(value = "certificateStore") private String certificateStore; /** - * Get the certificateUrl value. + * Get this is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). In this case, your certificate needs to be It is the Base64 encoding of the following JSON Object which is encoded in UTF-8: <br><br> {<br> "data":"<Base64-encoded-certificate>",<br> "dataType":"pfx",<br> "password":"<pfx-file-password>"<br>}. * * @return the certificateUrl value */ @@ -52,7 +53,7 @@ public String certificateUrl() { } /** - * Set the certificateUrl value. + * Set this is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). In this case, your certificate needs to be It is the Base64 encoding of the following JSON Object which is encoded in UTF-8: <br><br> {<br> "data":"<Base64-encoded-certificate>",<br> "dataType":"pfx",<br> "password":"<pfx-file-password>"<br>}. * * @param certificateUrl the certificateUrl value to set * @return the VaultCertificate object itself. @@ -63,7 +64,7 @@ public VaultCertificate withCertificateUrl(String certificateUrl) { } /** - * Get the certificateStore value. + * Get for Windows VMs, specifies the certificate store on the Virtual Machine to which the certificate should be added. The specified certificate store is implicitly in the LocalMachine account. <br><br>For Linux VMs, the certificate file is placed under the /var/lib/waagent directory, with the file name &lt;UppercaseThumbprint&gt;.crt for the X509 certificate file and &lt;UppercaseThumbprint&gt;.prv for private key. Both of these files are .pem formatted. * * @return the certificateStore value */ @@ -72,7 +73,7 @@ public String certificateStore() { } /** - * Set the certificateStore value. + * Set for Windows VMs, specifies the certificate store on the Virtual Machine to which the certificate should be added. The specified certificate store is implicitly in the LocalMachine account. <br><br>For Linux VMs, the certificate file is placed under the /var/lib/waagent directory, with the file name &lt;UppercaseThumbprint&gt;.crt for the X509 certificate file and &lt;UppercaseThumbprint&gt;.prv for private key. Both of these files are .pem formatted. * * @param certificateStore the certificateStore value to set * @return the VaultCertificate object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VaultSecretGroup.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VaultSecretGroup.java index d335a0a37e0c..1a133a55dc81 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VaultSecretGroup.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VaultSecretGroup.java @@ -31,7 +31,7 @@ public class VaultSecretGroup { private List vaultCertificates; /** - * Get the sourceVault value. + * Get the relative URL of the Key Vault containing all of the certificates in VaultCertificates. * * @return the sourceVault value */ @@ -40,7 +40,7 @@ public SubResource sourceVault() { } /** - * Set the sourceVault value. + * Set the relative URL of the Key Vault containing all of the certificates in VaultCertificates. * * @param sourceVault the sourceVault value to set * @return the VaultSecretGroup object itself. @@ -51,7 +51,7 @@ public VaultSecretGroup withSourceVault(SubResource sourceVault) { } /** - * Get the vaultCertificates value. + * Get the list of key vault references in SourceVault which contain certificates. * * @return the vaultCertificates value */ @@ -60,7 +60,7 @@ public List vaultCertificates() { } /** - * Set the vaultCertificates value. + * Set the list of key vault references in SourceVault which contain certificates. * * @param vaultCertificates the vaultCertificates value to set * @return the VaultSecretGroup object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualHardDisk.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualHardDisk.java index 6e765d76372c..268869d60c12 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualHardDisk.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualHardDisk.java @@ -21,7 +21,7 @@ public class VirtualHardDisk { private String uri; /** - * Get the uri value. + * Get specifies the virtual hard disk's uri. * * @return the uri value */ @@ -30,7 +30,7 @@ public String uri() { } /** - * Set the uri value. + * Set specifies the virtual hard disk's uri. * * @param uri the uri value to set * @return the VirtualHardDisk object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachine.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachine.java index 83f99f4007e2..8285339e0a0e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachine.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachine.java @@ -9,24 +9,22 @@ package com.microsoft.azure.management.compute.v2017_12_01; import com.microsoft.azure.arm.model.HasInner; -import com.microsoft.azure.arm.resources.models.Resource; -import com.microsoft.azure.arm.resources.models.HasResourceGroup; -import com.microsoft.azure.arm.model.Refreshable; +import com.microsoft.azure.management.compute.v2017_12_01.implementation.VirtualMachineInner; +import com.microsoft.azure.arm.model.Indexable; import com.microsoft.azure.arm.model.Updatable; import com.microsoft.azure.arm.model.Appliable; import com.microsoft.azure.arm.model.Creatable; -import com.microsoft.azure.arm.resources.models.GroupableResourceCore; import com.microsoft.azure.arm.resources.models.HasManager; import com.microsoft.azure.management.compute.v2017_12_01.implementation.ComputeManager; +import java.util.Map; import com.microsoft.azure.SubResource; import com.microsoft.azure.management.compute.v2017_12_01.implementation.VirtualMachineInstanceViewInner; import java.util.List; -import com.microsoft.azure.management.compute.v2017_12_01.implementation.VirtualMachineInner; /** * Type representing VirtualMachine. */ -public interface VirtualMachine extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager { +public interface VirtualMachine extends HasInner, Indexable, Updatable, HasManager { /** * @return the availabilitySet value. */ @@ -42,6 +40,11 @@ public interface VirtualMachine extends HasInner, Resource, */ HardwareProfile hardwareProfile(); + /** + * @return the id value. + */ + String id(); + /** * @return the identity value. */ @@ -57,6 +60,16 @@ public interface VirtualMachine extends HasInner, Resource, */ String licenseType(); + /** + * @return the location value. + */ + String location(); + + /** + * @return the name value. + */ + String name(); + /** * @return the networkProfile value. */ @@ -87,6 +100,16 @@ public interface VirtualMachine extends HasInner, Resource, */ StorageProfile storageProfile(); + /** + * @return the tags value. + */ + Map tags(); + + /** + * @return the type value. + */ + String type(); + /** * @return the vmId value. */ @@ -100,7 +123,7 @@ public interface VirtualMachine extends HasInner, Resource, /** * The entirety of the VirtualMachine definition. */ - interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithCreate { + interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLocation, DefinitionStages.WithLocation, DefinitionStages.WithCreate { } /** @@ -110,111 +133,161 @@ interface DefinitionStages { /** * The first stage of a VirtualMachine definition. */ - interface Blank extends GroupableResourceCore.DefinitionWithRegion { + interface Blank extends WithLocation { } /** - * The stage of the VirtualMachine definition allowing to specify the resource group. + * The stage of the virtualmachine definition allowing to specify Location. */ - interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup { + interface WithLocation { + /** + * Specifies resourceGroupName. + * @param resourceGroupName The name of the resource group + * @return the next definition stage + */ + WithLocation withExistingLocation(String resourceGroupName); } /** - * The stage of the virtualmachine update allowing to specify AvailabilitySet. + * The stage of the virtualmachine definition allowing to specify Location. + */ + interface WithLocation { + /** + * Specifies location. + * @param location Resource location + * @return the next definition stage + */ + WithCreate withLocation(String location); + } + + /** + * The stage of the virtualmachine definition allowing to specify AvailabilitySet. */ interface WithAvailabilitySet { /** * Specifies availabilitySet. + * @param availabilitySet Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set + * @return the next definition stage */ WithCreate withAvailabilitySet(SubResource availabilitySet); } /** - * The stage of the virtualmachine update allowing to specify DiagnosticsProfile. + * The stage of the virtualmachine definition allowing to specify DiagnosticsProfile. */ interface WithDiagnosticsProfile { /** * Specifies diagnosticsProfile. + * @param diagnosticsProfile Specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15 + * @return the next definition stage */ WithCreate withDiagnosticsProfile(DiagnosticsProfile diagnosticsProfile); } /** - * The stage of the virtualmachine update allowing to specify HardwareProfile. + * The stage of the virtualmachine definition allowing to specify HardwareProfile. */ interface WithHardwareProfile { /** * Specifies hardwareProfile. + * @param hardwareProfile Specifies the hardware settings for the virtual machine + * @return the next definition stage */ WithCreate withHardwareProfile(HardwareProfile hardwareProfile); } /** - * The stage of the virtualmachine update allowing to specify Identity. + * The stage of the virtualmachine definition allowing to specify Identity. */ interface WithIdentity { /** * Specifies identity. + * @param identity The identity of the virtual machine, if configured + * @return the next definition stage */ WithCreate withIdentity(VirtualMachineIdentity identity); } /** - * The stage of the virtualmachine update allowing to specify LicenseType. + * The stage of the virtualmachine definition allowing to specify LicenseType. */ interface WithLicenseType { /** * Specifies licenseType. + * @param licenseType Specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15 + * @return the next definition stage */ WithCreate withLicenseType(String licenseType); } /** - * The stage of the virtualmachine update allowing to specify NetworkProfile. + * The stage of the virtualmachine definition allowing to specify NetworkProfile. */ interface WithNetworkProfile { /** * Specifies networkProfile. + * @param networkProfile Specifies the network interfaces of the virtual machine + * @return the next definition stage */ WithCreate withNetworkProfile(NetworkProfile networkProfile); } /** - * The stage of the virtualmachine update allowing to specify OsProfile. + * The stage of the virtualmachine definition allowing to specify OsProfile. */ interface WithOsProfile { /** * Specifies osProfile. + * @param osProfile Specifies the operating system settings for the virtual machine + * @return the next definition stage */ WithCreate withOsProfile(OSProfile osProfile); } /** - * The stage of the virtualmachine update allowing to specify Plan. + * The stage of the virtualmachine definition allowing to specify Plan. */ interface WithPlan { /** * Specifies plan. + * @param plan Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save** + * @return the next definition stage */ WithCreate withPlan(Plan plan); } /** - * The stage of the virtualmachine update allowing to specify StorageProfile. + * The stage of the virtualmachine definition allowing to specify StorageProfile. */ interface WithStorageProfile { /** * Specifies storageProfile. + * @param storageProfile Specifies the storage settings for the virtual machine disks + * @return the next definition stage */ WithCreate withStorageProfile(StorageProfile storageProfile); } /** - * The stage of the virtualmachine update allowing to specify Zones. + * The stage of the virtualmachine definition allowing to specify Tags. + */ + interface WithTags { + /** + * Specifies tags. + * @param tags Resource tags + * @return the next definition stage + */ + WithCreate withTags(Map tags); + } + + /** + * The stage of the virtualmachine definition allowing to specify Zones. */ interface WithZones { /** * Specifies zones. + * @param zones The virtual machine zones + * @return the next definition stage */ WithCreate withZones(List zones); } @@ -224,13 +297,13 @@ interface WithZones { * the resource to be created (via {@link WithCreate#create()}), but also allows * for any other optional settings to be specified. */ - interface WithCreate extends Creatable, Resource.DefinitionWithTags, DefinitionStages.WithAvailabilitySet, DefinitionStages.WithDiagnosticsProfile, DefinitionStages.WithHardwareProfile, DefinitionStages.WithIdentity, DefinitionStages.WithLicenseType, DefinitionStages.WithNetworkProfile, DefinitionStages.WithOsProfile, DefinitionStages.WithPlan, DefinitionStages.WithStorageProfile, DefinitionStages.WithZones { + interface WithCreate extends Creatable, DefinitionStages.WithAvailabilitySet, DefinitionStages.WithDiagnosticsProfile, DefinitionStages.WithHardwareProfile, DefinitionStages.WithIdentity, DefinitionStages.WithLicenseType, DefinitionStages.WithNetworkProfile, DefinitionStages.WithOsProfile, DefinitionStages.WithPlan, DefinitionStages.WithStorageProfile, DefinitionStages.WithTags, DefinitionStages.WithZones { } } /** * The template for a VirtualMachine update operation, containing all the settings that can be modified. */ - interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithAvailabilitySet, UpdateStages.WithDiagnosticsProfile, UpdateStages.WithHardwareProfile, UpdateStages.WithIdentity, UpdateStages.WithLicenseType, UpdateStages.WithNetworkProfile, UpdateStages.WithOsProfile, UpdateStages.WithPlan, UpdateStages.WithStorageProfile, UpdateStages.WithZones { + interface Update extends Appliable, UpdateStages.WithAvailabilitySet, UpdateStages.WithDiagnosticsProfile, UpdateStages.WithHardwareProfile, UpdateStages.WithIdentity, UpdateStages.WithLicenseType, UpdateStages.WithNetworkProfile, UpdateStages.WithOsProfile, UpdateStages.WithPlan, UpdateStages.WithStorageProfile, UpdateStages.WithTags, UpdateStages.WithZones { } /** @@ -238,101 +311,133 @@ interface Update extends Appliable, Resource.UpdateWithTags tags); + } + + /** + * The stage of the virtualmachine update allowing to specify Zones. */ interface WithZones { /** * Specifies zones. + * @param zones The virtual machine zones + * @return the next update stage */ Update withZones(List zones); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineAgentInstanceView.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineAgentInstanceView.java index 156da0dfb183..30ffe785bc13 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineAgentInstanceView.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineAgentInstanceView.java @@ -34,7 +34,7 @@ public class VirtualMachineAgentInstanceView { private List statuses; /** - * Get the vmAgentVersion value. + * Get the VM Agent full version. * * @return the vmAgentVersion value */ @@ -43,7 +43,7 @@ public String vmAgentVersion() { } /** - * Set the vmAgentVersion value. + * Set the VM Agent full version. * * @param vmAgentVersion the vmAgentVersion value to set * @return the VirtualMachineAgentInstanceView object itself. @@ -54,7 +54,7 @@ public VirtualMachineAgentInstanceView withVmAgentVersion(String vmAgentVersion) } /** - * Get the extensionHandlers value. + * Get the virtual machine extension handler instance view. * * @return the extensionHandlers value */ @@ -63,7 +63,7 @@ public List extensionHandlers() { } /** - * Set the extensionHandlers value. + * Set the virtual machine extension handler instance view. * * @param extensionHandlers the extensionHandlers value to set * @return the VirtualMachineAgentInstanceView object itself. @@ -74,7 +74,7 @@ public VirtualMachineAgentInstanceView withExtensionHandlers(List statuses() { } /** - * Set the statuses value. + * Set the resource status information. * * @param statuses the statuses value to set * @return the VirtualMachineAgentInstanceView object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineCaptureParameters.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineCaptureParameters.java index 50c508531712..4fe94993e26b 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineCaptureParameters.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineCaptureParameters.java @@ -34,7 +34,7 @@ public class VirtualMachineCaptureParameters { private boolean overwriteVhds; /** - * Get the vhdPrefix value. + * Get the captured virtual hard disk's name prefix. * * @return the vhdPrefix value */ @@ -43,7 +43,7 @@ public String vhdPrefix() { } /** - * Set the vhdPrefix value. + * Set the captured virtual hard disk's name prefix. * * @param vhdPrefix the vhdPrefix value to set * @return the VirtualMachineCaptureParameters object itself. @@ -54,7 +54,7 @@ public VirtualMachineCaptureParameters withVhdPrefix(String vhdPrefix) { } /** - * Get the destinationContainerName value. + * Get the destination container name. * * @return the destinationContainerName value */ @@ -63,7 +63,7 @@ public String destinationContainerName() { } /** - * Set the destinationContainerName value. + * Set the destination container name. * * @param destinationContainerName the destinationContainerName value to set * @return the VirtualMachineCaptureParameters object itself. @@ -74,7 +74,7 @@ public VirtualMachineCaptureParameters withDestinationContainerName(String desti } /** - * Get the overwriteVhds value. + * Get specifies whether to overwrite the destination virtual hard disk, in case of conflict. * * @return the overwriteVhds value */ @@ -83,7 +83,7 @@ public boolean overwriteVhds() { } /** - * Set the overwriteVhds value. + * Set specifies whether to overwrite the destination virtual hard disk, in case of conflict. * * @param overwriteVhds the overwriteVhds value to set * @return the VirtualMachineCaptureParameters object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtension.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtension.java index 79db947c044d..6a030a6ab9dd 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtension.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtension.java @@ -115,6 +115,9 @@ interface Blank extends WithVirtualMachine { interface WithVirtualMachine { /** * Specifies resourceGroupName, vmName. + * @param resourceGroupName The name of the resource group + * @param vmName The name of the virtual machine where the extension should be created or updated + * @return the next definition stage */ WithLocation withExistingVirtualMachine(String resourceGroupName, String vmName); } @@ -125,6 +128,8 @@ interface WithVirtualMachine { interface WithLocation { /** * Specifies location. + * @param location Resource location + * @return the next definition stage */ WithCreate withLocation(String location); } @@ -135,6 +140,8 @@ interface WithLocation { interface WithAutoUpgradeMinorVersion { /** * Specifies autoUpgradeMinorVersion. + * @param autoUpgradeMinorVersion Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true + * @return the next definition stage */ WithCreate withAutoUpgradeMinorVersion(Boolean autoUpgradeMinorVersion); } @@ -145,6 +152,8 @@ interface WithAutoUpgradeMinorVersion { interface WithForceUpdateTag { /** * Specifies forceUpdateTag. + * @param forceUpdateTag How the extension handler should be forced to update even if the extension configuration has not changed + * @return the next definition stage */ WithCreate withForceUpdateTag(String forceUpdateTag); } @@ -155,6 +164,8 @@ interface WithForceUpdateTag { interface WithInstanceView { /** * Specifies instanceView. + * @param instanceView The virtual machine extension instance view + * @return the next definition stage */ WithCreate withInstanceView(VirtualMachineExtensionInstanceView instanceView); } @@ -165,6 +176,8 @@ interface WithInstanceView { interface WithProtectedSettings { /** * Specifies protectedSettings. + * @param protectedSettings The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all + * @return the next definition stage */ WithCreate withProtectedSettings(Object protectedSettings); } @@ -175,6 +188,8 @@ interface WithProtectedSettings { interface WithPublisher { /** * Specifies publisher. + * @param publisher The name of the extension handler publisher + * @return the next definition stage */ WithCreate withPublisher(String publisher); } @@ -185,6 +200,8 @@ interface WithPublisher { interface WithSettings { /** * Specifies settings. + * @param settings Json formatted public settings for the extension + * @return the next definition stage */ WithCreate withSettings(Object settings); } @@ -195,6 +212,8 @@ interface WithSettings { interface WithTags { /** * Specifies tags. + * @param tags Resource tags + * @return the next definition stage */ WithCreate withTags(Map tags); } @@ -205,6 +224,8 @@ interface WithTags { interface WithTypeHandlerVersion { /** * Specifies typeHandlerVersion. + * @param typeHandlerVersion Specifies the version of the script handler + * @return the next definition stage */ WithCreate withTypeHandlerVersion(String typeHandlerVersion); } @@ -215,6 +236,8 @@ interface WithTypeHandlerVersion { interface WithVirtualMachineExtensionType { /** * Specifies virtualMachineExtensionType. + * @param virtualMachineExtensionType Specifies the type of the extension; an example is "CustomScriptExtension" + * @return the next definition stage */ WithCreate withVirtualMachineExtensionType(String virtualMachineExtensionType); } @@ -243,6 +266,8 @@ interface UpdateStages { interface WithAutoUpgradeMinorVersion { /** * Specifies autoUpgradeMinorVersion. + * @param autoUpgradeMinorVersion Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true + * @return the next update stage */ Update withAutoUpgradeMinorVersion(Boolean autoUpgradeMinorVersion); } @@ -253,6 +278,8 @@ interface WithAutoUpgradeMinorVersion { interface WithForceUpdateTag { /** * Specifies forceUpdateTag. + * @param forceUpdateTag How the extension handler should be forced to update even if the extension configuration has not changed + * @return the next update stage */ Update withForceUpdateTag(String forceUpdateTag); } @@ -263,6 +290,8 @@ interface WithForceUpdateTag { interface WithProtectedSettings { /** * Specifies protectedSettings. + * @param protectedSettings The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all + * @return the next update stage */ Update withProtectedSettings(Object protectedSettings); } @@ -273,6 +302,8 @@ interface WithProtectedSettings { interface WithPublisher { /** * Specifies publisher. + * @param publisher The name of the extension handler publisher + * @return the next update stage */ Update withPublisher(String publisher); } @@ -283,6 +314,8 @@ interface WithPublisher { interface WithSettings { /** * Specifies settings. + * @param settings Json formatted public settings for the extension + * @return the next update stage */ Update withSettings(Object settings); } @@ -293,6 +326,8 @@ interface WithSettings { interface WithTags { /** * Specifies tags. + * @param tags Resource tags + * @return the next update stage */ Update withTags(Map tags); } @@ -303,6 +338,8 @@ interface WithTags { interface WithType { /** * Specifies type. + * @param type Specifies the type of the extension; an example is "CustomScriptExtension" + * @return the next update stage */ Update withType(String type); } @@ -313,6 +350,8 @@ interface WithType { interface WithTypeHandlerVersion { /** * Specifies typeHandlerVersion. + * @param typeHandlerVersion Specifies the version of the script handler + * @return the next update stage */ Update withTypeHandlerVersion(String typeHandlerVersion); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionHandlerInstanceView.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionHandlerInstanceView.java index 3f556377c748..9d07f64defed 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionHandlerInstanceView.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionHandlerInstanceView.java @@ -34,7 +34,7 @@ public class VirtualMachineExtensionHandlerInstanceView { private InstanceViewStatus status; /** - * Get the type value. + * Get specifies the type of the extension; an example is "CustomScriptExtension". * * @return the type value */ @@ -43,7 +43,7 @@ public String type() { } /** - * Set the type value. + * Set specifies the type of the extension; an example is "CustomScriptExtension". * * @param type the type value to set * @return the VirtualMachineExtensionHandlerInstanceView object itself. @@ -54,7 +54,7 @@ public VirtualMachineExtensionHandlerInstanceView withType(String type) { } /** - * Get the typeHandlerVersion value. + * Get specifies the version of the script handler. * * @return the typeHandlerVersion value */ @@ -63,7 +63,7 @@ public String typeHandlerVersion() { } /** - * Set the typeHandlerVersion value. + * Set specifies the version of the script handler. * * @param typeHandlerVersion the typeHandlerVersion value to set * @return the VirtualMachineExtensionHandlerInstanceView object itself. @@ -74,7 +74,7 @@ public VirtualMachineExtensionHandlerInstanceView withTypeHandlerVersion(String } /** - * Get the status value. + * Get the extension handler status. * * @return the status value */ @@ -83,7 +83,7 @@ public InstanceViewStatus status() { } /** - * Set the status value. + * Set the extension handler status. * * @param status the status value to set * @return the VirtualMachineExtensionHandlerInstanceView object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionInstanceView.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionInstanceView.java index fb61f04c3eb7..d52e0ea12b1f 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionInstanceView.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionInstanceView.java @@ -47,7 +47,7 @@ public class VirtualMachineExtensionInstanceView { private List statuses; /** - * Get the name value. + * Get the virtual machine extension name. * * @return the name value */ @@ -56,7 +56,7 @@ public String name() { } /** - * Set the name value. + * Set the virtual machine extension name. * * @param name the name value to set * @return the VirtualMachineExtensionInstanceView object itself. @@ -67,7 +67,7 @@ public VirtualMachineExtensionInstanceView withName(String name) { } /** - * Get the type value. + * Get specifies the type of the extension; an example is "CustomScriptExtension". * * @return the type value */ @@ -76,7 +76,7 @@ public String type() { } /** - * Set the type value. + * Set specifies the type of the extension; an example is "CustomScriptExtension". * * @param type the type value to set * @return the VirtualMachineExtensionInstanceView object itself. @@ -87,7 +87,7 @@ public VirtualMachineExtensionInstanceView withType(String type) { } /** - * Get the typeHandlerVersion value. + * Get specifies the version of the script handler. * * @return the typeHandlerVersion value */ @@ -96,7 +96,7 @@ public String typeHandlerVersion() { } /** - * Set the typeHandlerVersion value. + * Set specifies the version of the script handler. * * @param typeHandlerVersion the typeHandlerVersion value to set * @return the VirtualMachineExtensionInstanceView object itself. @@ -107,7 +107,7 @@ public VirtualMachineExtensionInstanceView withTypeHandlerVersion(String typeHan } /** - * Get the substatuses value. + * Get the resource status information. * * @return the substatuses value */ @@ -116,7 +116,7 @@ public List substatuses() { } /** - * Set the substatuses value. + * Set the resource status information. * * @param substatuses the substatuses value to set * @return the VirtualMachineExtensionInstanceView object itself. @@ -127,7 +127,7 @@ public VirtualMachineExtensionInstanceView withSubstatuses(List statuses() { } /** - * Set the statuses value. + * Set the resource status information. * * @param statuses the statuses value to set * @return the VirtualMachineExtensionInstanceView object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionUpdate.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionUpdate.java index e13c73f1e495..0e7ee520fb03 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionUpdate.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensionUpdate.java @@ -65,7 +65,7 @@ public class VirtualMachineExtensionUpdate extends UpdateResource { private Object protectedSettings; /** - * Get the forceUpdateTag value. + * Get how the extension handler should be forced to update even if the extension configuration has not changed. * * @return the forceUpdateTag value */ @@ -74,7 +74,7 @@ public String forceUpdateTag() { } /** - * Set the forceUpdateTag value. + * Set how the extension handler should be forced to update even if the extension configuration has not changed. * * @param forceUpdateTag the forceUpdateTag value to set * @return the VirtualMachineExtensionUpdate object itself. @@ -85,7 +85,7 @@ public VirtualMachineExtensionUpdate withForceUpdateTag(String forceUpdateTag) { } /** - * Get the publisher value. + * Get the name of the extension handler publisher. * * @return the publisher value */ @@ -94,7 +94,7 @@ public String publisher() { } /** - * Set the publisher value. + * Set the name of the extension handler publisher. * * @param publisher the publisher value to set * @return the VirtualMachineExtensionUpdate object itself. @@ -105,7 +105,7 @@ public VirtualMachineExtensionUpdate withPublisher(String publisher) { } /** - * Get the type value. + * Get specifies the type of the extension; an example is "CustomScriptExtension". * * @return the type value */ @@ -114,7 +114,7 @@ public String type() { } /** - * Set the type value. + * Set specifies the type of the extension; an example is "CustomScriptExtension". * * @param type the type value to set * @return the VirtualMachineExtensionUpdate object itself. @@ -125,7 +125,7 @@ public VirtualMachineExtensionUpdate withType(String type) { } /** - * Get the typeHandlerVersion value. + * Get specifies the version of the script handler. * * @return the typeHandlerVersion value */ @@ -134,7 +134,7 @@ public String typeHandlerVersion() { } /** - * Set the typeHandlerVersion value. + * Set specifies the version of the script handler. * * @param typeHandlerVersion the typeHandlerVersion value to set * @return the VirtualMachineExtensionUpdate object itself. @@ -145,7 +145,7 @@ public VirtualMachineExtensionUpdate withTypeHandlerVersion(String typeHandlerVe } /** - * Get the autoUpgradeMinorVersion value. + * Get indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true. * * @return the autoUpgradeMinorVersion value */ @@ -154,7 +154,7 @@ public Boolean autoUpgradeMinorVersion() { } /** - * Set the autoUpgradeMinorVersion value. + * Set indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true. * * @param autoUpgradeMinorVersion the autoUpgradeMinorVersion value to set * @return the VirtualMachineExtensionUpdate object itself. @@ -165,7 +165,7 @@ public VirtualMachineExtensionUpdate withAutoUpgradeMinorVersion(Boolean autoUpg } /** - * Get the settings value. + * Get json formatted public settings for the extension. * * @return the settings value */ @@ -174,7 +174,7 @@ public Object settings() { } /** - * Set the settings value. + * Set json formatted public settings for the extension. * * @param settings the settings value to set * @return the VirtualMachineExtensionUpdate object itself. @@ -185,7 +185,7 @@ public VirtualMachineExtensionUpdate withSettings(Object settings) { } /** - * Get the protectedSettings value. + * Get the extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all. * * @return the protectedSettings value */ @@ -194,7 +194,7 @@ public Object protectedSettings() { } /** - * Set the protectedSettings value. + * Set the extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all. * * @param protectedSettings the protectedSettings value to set * @return the VirtualMachineExtensionUpdate object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensions.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensions.java index 11df68b64868..18bb37df8f29 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensions.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineExtensions.java @@ -8,16 +8,20 @@ package com.microsoft.azure.management.compute.v2017_12_01; -import com.microsoft.azure.arm.collection.SupportsCreating; -import rx.Completable; import rx.Observable; -import com.microsoft.azure.management.compute.v2017_12_01.implementation.VirtualMachineExtensionsInner; -import com.microsoft.azure.arm.model.HasInner; +import rx.Completable; /** * Type representing VirtualMachineExtensions. */ -public interface VirtualMachineExtensions extends SupportsCreating, HasInner { +public interface VirtualMachineExtensions { + /** + * Begins definition for a new Extension resource. + * @param name resource name. + * @return the first stage of the new Extension definition. + */ + VirtualMachineExtension.DefinitionStages.Blank defineExtension(String name); + /** * The operation to get the extension. * diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineHealthStatus.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineHealthStatus.java index b9c7c6b1fe99..7b9080432236 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineHealthStatus.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineHealthStatus.java @@ -21,7 +21,7 @@ public class VirtualMachineHealthStatus { private InstanceViewStatus status; /** - * Get the status value. + * Get the health status information for the VM. * * @return the status value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineIdentity.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineIdentity.java index 04e0d23f7d4b..1fa8534a402e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineIdentity.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineIdentity.java @@ -49,7 +49,7 @@ public class VirtualMachineIdentity { private List identityIds; /** - * Get the principalId value. + * Get the principal id of virtual machine identity. This property will only be provided for a system assigned identity. * * @return the principalId value */ @@ -58,7 +58,7 @@ public String principalId() { } /** - * Get the tenantId value. + * Get the tenant id associated with the virtual machine. This property will only be provided for a system assigned identity. * * @return the tenantId value */ @@ -67,7 +67,7 @@ public String tenantId() { } /** - * Get the type value. + * Get the type of identity used for the virtual machine. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine. Possible values include: 'SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None'. * * @return the type value */ @@ -76,7 +76,7 @@ public ResourceIdentityType type() { } /** - * Set the type value. + * Set the type of identity used for the virtual machine. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine. Possible values include: 'SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None'. * * @param type the type value to set * @return the VirtualMachineIdentity object itself. @@ -87,7 +87,7 @@ public VirtualMachineIdentity withType(ResourceIdentityType type) { } /** - * Get the identityIds value. + * Get the list of user identities associated with the Virtual Machine. The user identity references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identities/{identityName}'. * * @return the identityIds value */ @@ -96,7 +96,7 @@ public List identityIds() { } /** - * Set the identityIds value. + * Set the list of user identities associated with the Virtual Machine. The user identity references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identities/{identityName}'. * * @param identityIds the identityIds value to set * @return the VirtualMachineIdentity object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSet.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSet.java index 953bad5b6f46..f9b6500adf97 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSet.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSet.java @@ -10,12 +10,12 @@ import com.microsoft.azure.arm.model.HasInner; import com.microsoft.azure.arm.resources.models.Resource; +import com.microsoft.azure.arm.resources.models.GroupableResourceCore; import com.microsoft.azure.arm.resources.models.HasResourceGroup; import com.microsoft.azure.arm.model.Refreshable; import com.microsoft.azure.arm.model.Updatable; import com.microsoft.azure.arm.model.Appliable; import com.microsoft.azure.arm.model.Creatable; -import com.microsoft.azure.arm.resources.models.GroupableResourceCore; import com.microsoft.azure.arm.resources.models.HasManager; import com.microsoft.azure.management.compute.v2017_12_01.implementation.ComputeManager; import java.util.List; @@ -108,101 +108,121 @@ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup zones); } @@ -226,71 +246,85 @@ interface Update extends Appliable, Resource.UpdateWithT */ interface UpdateStages { /** - * The stage of the virtualmachinescaleset {0} allowing to specify Identity. + * The stage of the virtualmachinescaleset update allowing to specify Identity. */ interface WithIdentity { /** * Specifies identity. + * @param identity The identity of the virtual machine scale set, if configured + * @return the next update stage */ Update withIdentity(VirtualMachineScaleSetIdentity identity); } /** - * The stage of the virtualmachinescaleset {0} allowing to specify Overprovision. + * The stage of the virtualmachinescaleset update allowing to specify Overprovision. */ interface WithOverprovision { /** * Specifies overprovision. + * @param overprovision Specifies whether the Virtual Machine Scale Set should be overprovisioned + * @return the next update stage */ Update withOverprovision(Boolean overprovision); } /** - * The stage of the virtualmachinescaleset {0} allowing to specify Plan. + * The stage of the virtualmachinescaleset update allowing to specify Plan. */ interface WithPlan { /** * Specifies plan. + * @param plan The purchase plan when deploying a virtual machine scale set from VM Marketplace images + * @return the next update stage */ Update withPlan(Plan plan); } /** - * The stage of the virtualmachinescaleset {0} allowing to specify SinglePlacementGroup. + * The stage of the virtualmachinescaleset update allowing to specify SinglePlacementGroup. */ interface WithSinglePlacementGroup { /** * Specifies singlePlacementGroup. + * @param singlePlacementGroup When true this limits the scale set to a single placement group, of max size 100 virtual machines. NOTE: If singlePlacementGroup is true, it may be modified to false. However, if singlePlacementGroup is false, it may not be modified to true + * @return the next update stage */ Update withSinglePlacementGroup(Boolean singlePlacementGroup); } /** - * The stage of the virtualmachinescaleset {0} allowing to specify Sku. + * The stage of the virtualmachinescaleset update allowing to specify Sku. */ interface WithSku { /** * Specifies sku. + * @param sku The virtual machine scale set sku + * @return the next update stage */ Update withSku(Sku sku); } /** - * The stage of the virtualmachinescaleset {0} allowing to specify UpgradePolicy. + * The stage of the virtualmachinescaleset update allowing to specify UpgradePolicy. */ interface WithUpgradePolicy { /** * Specifies upgradePolicy. + * @param upgradePolicy The upgrade policy + * @return the next update stage */ Update withUpgradePolicy(UpgradePolicy upgradePolicy); } /** - * The stage of the virtualmachinescaleset {0} allowing to specify VirtualMachineProfile. + * The stage of the virtualmachinescaleset update allowing to specify VirtualMachineProfile. */ interface WithVirtualMachineProfile { /** * Specifies virtualMachineProfile. + * @param virtualMachineProfile The virtual machine profile + * @return the next update stage */ Update withVirtualMachineProfile(VirtualMachineScaleSetUpdateVMProfile virtualMachineProfile); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetDataDisk.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetDataDisk.java index 6a89052b6d82..f4af16f1e8dd 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetDataDisk.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetDataDisk.java @@ -54,7 +54,7 @@ public class VirtualMachineScaleSetDataDisk { /** * Specifies the size of an empty data disk in gigabytes. This element can - * be used to overwrite the name of the disk in a virtual machine image. + * be used to overwrite the size of the disk in a virtual machine image. * <br><br> This value cannot be larger than 1023 GB. */ @JsonProperty(value = "diskSizeGB") @@ -67,7 +67,7 @@ public class VirtualMachineScaleSetDataDisk { private VirtualMachineScaleSetManagedDiskParameters managedDisk; /** - * Get the name value. + * Get the disk name. * * @return the name value */ @@ -76,7 +76,7 @@ public String name() { } /** - * Set the name value. + * Set the disk name. * * @param name the name value to set * @return the VirtualMachineScaleSetDataDisk object itself. @@ -87,7 +87,7 @@ public VirtualMachineScaleSetDataDisk withName(String name) { } /** - * Get the lun value. + * Get specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. * * @return the lun value */ @@ -96,7 +96,7 @@ public int lun() { } /** - * Set the lun value. + * Set specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. * * @param lun the lun value to set * @return the VirtualMachineScaleSetDataDisk object itself. @@ -107,7 +107,7 @@ public VirtualMachineScaleSetDataDisk withLun(int lun) { } /** - * Get the caching value. + * Get specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @return the caching value */ @@ -116,7 +116,7 @@ public CachingTypes caching() { } /** - * Set the caching value. + * Set specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @param caching the caching value to set * @return the VirtualMachineScaleSetDataDisk object itself. @@ -127,7 +127,7 @@ public VirtualMachineScaleSetDataDisk withCaching(CachingTypes caching) { } /** - * Get the writeAcceleratorEnabled value. + * Get specifies whether writeAccelerator should be enabled or disabled on the disk. * * @return the writeAcceleratorEnabled value */ @@ -136,7 +136,7 @@ public Boolean writeAcceleratorEnabled() { } /** - * Set the writeAcceleratorEnabled value. + * Set specifies whether writeAccelerator should be enabled or disabled on the disk. * * @param writeAcceleratorEnabled the writeAcceleratorEnabled value to set * @return the VirtualMachineScaleSetDataDisk object itself. @@ -147,7 +147,7 @@ public VirtualMachineScaleSetDataDisk withWriteAcceleratorEnabled(Boolean writeA } /** - * Get the createOption value. + * Get the create option. Possible values include: 'FromImage', 'Empty', 'Attach'. * * @return the createOption value */ @@ -156,7 +156,7 @@ public DiskCreateOptionTypes createOption() { } /** - * Set the createOption value. + * Set the create option. Possible values include: 'FromImage', 'Empty', 'Attach'. * * @param createOption the createOption value to set * @return the VirtualMachineScaleSetDataDisk object itself. @@ -167,7 +167,7 @@ public VirtualMachineScaleSetDataDisk withCreateOption(DiskCreateOptionTypes cre } /** - * Get the diskSizeGB value. + * Get specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @return the diskSizeGB value */ @@ -176,7 +176,7 @@ public Integer diskSizeGB() { } /** - * Set the diskSizeGB value. + * Set specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image. <br><br> This value cannot be larger than 1023 GB. * * @param diskSizeGB the diskSizeGB value to set * @return the VirtualMachineScaleSetDataDisk object itself. @@ -187,7 +187,7 @@ public VirtualMachineScaleSetDataDisk withDiskSizeGB(Integer diskSizeGB) { } /** - * Get the managedDisk value. + * Get the managed disk parameters. * * @return the managedDisk value */ @@ -196,7 +196,7 @@ public VirtualMachineScaleSetManagedDiskParameters managedDisk() { } /** - * Set the managedDisk value. + * Set the managed disk parameters. * * @param managedDisk the managedDisk value to set * @return the VirtualMachineScaleSetDataDisk object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetExtension.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetExtension.java index 0f8e48148dcf..39610b72dcfb 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetExtension.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetExtension.java @@ -94,6 +94,9 @@ interface Blank extends WithVirtualMachineScaleSet { interface WithVirtualMachineScaleSet { /** * Specifies resourceGroupName, vmScaleSetName. + * @param resourceGroupName The name of the resource group + * @param vmScaleSetName The name of the VM scale set where the extension should be create or updated + * @return the next definition stage */ WithCreate withExistingVirtualMachineScaleSet(String resourceGroupName, String vmScaleSetName); } @@ -104,6 +107,8 @@ interface WithVirtualMachineScaleSet { interface WithAutoUpgradeMinorVersion { /** * Specifies autoUpgradeMinorVersion. + * @param autoUpgradeMinorVersion Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true + * @return the next definition stage */ WithCreate withAutoUpgradeMinorVersion(Boolean autoUpgradeMinorVersion); } @@ -114,6 +119,8 @@ interface WithAutoUpgradeMinorVersion { interface WithForceUpdateTag { /** * Specifies forceUpdateTag. + * @param forceUpdateTag If a value is provided and is different from the previous value, the extension handler will be forced to update even if the extension configuration has not changed + * @return the next definition stage */ WithCreate withForceUpdateTag(String forceUpdateTag); } @@ -124,6 +131,8 @@ interface WithForceUpdateTag { interface WithName { /** * Specifies name. + * @param name The name of the extension + * @return the next definition stage */ WithCreate withName(String name); } @@ -134,6 +143,8 @@ interface WithName { interface WithProtectedSettings { /** * Specifies protectedSettings. + * @param protectedSettings The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all + * @return the next definition stage */ WithCreate withProtectedSettings(Object protectedSettings); } @@ -144,6 +155,8 @@ interface WithProtectedSettings { interface WithPublisher { /** * Specifies publisher. + * @param publisher The name of the extension handler publisher + * @return the next definition stage */ WithCreate withPublisher(String publisher); } @@ -154,6 +167,8 @@ interface WithPublisher { interface WithSettings { /** * Specifies settings. + * @param settings Json formatted public settings for the extension + * @return the next definition stage */ WithCreate withSettings(Object settings); } @@ -164,6 +179,8 @@ interface WithSettings { interface WithType { /** * Specifies type. + * @param type Specifies the type of the extension; an example is "CustomScriptExtension" + * @return the next definition stage */ WithCreate withType(String type); } @@ -174,6 +191,8 @@ interface WithType { interface WithTypeHandlerVersion { /** * Specifies typeHandlerVersion. + * @param typeHandlerVersion Specifies the version of the script handler + * @return the next definition stage */ WithCreate withTypeHandlerVersion(String typeHandlerVersion); } @@ -202,6 +221,8 @@ interface UpdateStages { interface WithAutoUpgradeMinorVersion { /** * Specifies autoUpgradeMinorVersion. + * @param autoUpgradeMinorVersion Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true + * @return the next update stage */ Update withAutoUpgradeMinorVersion(Boolean autoUpgradeMinorVersion); } @@ -212,6 +233,8 @@ interface WithAutoUpgradeMinorVersion { interface WithForceUpdateTag { /** * Specifies forceUpdateTag. + * @param forceUpdateTag If a value is provided and is different from the previous value, the extension handler will be forced to update even if the extension configuration has not changed + * @return the next update stage */ Update withForceUpdateTag(String forceUpdateTag); } @@ -222,6 +245,8 @@ interface WithForceUpdateTag { interface WithName { /** * Specifies name. + * @param name The name of the extension + * @return the next update stage */ Update withName(String name); } @@ -232,6 +257,8 @@ interface WithName { interface WithProtectedSettings { /** * Specifies protectedSettings. + * @param protectedSettings The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all + * @return the next update stage */ Update withProtectedSettings(Object protectedSettings); } @@ -242,6 +269,8 @@ interface WithProtectedSettings { interface WithPublisher { /** * Specifies publisher. + * @param publisher The name of the extension handler publisher + * @return the next update stage */ Update withPublisher(String publisher); } @@ -252,6 +281,8 @@ interface WithPublisher { interface WithSettings { /** * Specifies settings. + * @param settings Json formatted public settings for the extension + * @return the next update stage */ Update withSettings(Object settings); } @@ -262,6 +293,8 @@ interface WithSettings { interface WithType { /** * Specifies type. + * @param type Specifies the type of the extension; an example is "CustomScriptExtension" + * @return the next update stage */ Update withType(String type); } @@ -272,6 +305,8 @@ interface WithType { interface WithTypeHandlerVersion { /** * Specifies typeHandlerVersion. + * @param typeHandlerVersion Specifies the version of the script handler + * @return the next update stage */ Update withTypeHandlerVersion(String typeHandlerVersion); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetExtensionProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetExtensionProfile.java index 4ae80e5e54a8..4ee5c605bd15 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetExtensionProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetExtensionProfile.java @@ -23,7 +23,7 @@ public class VirtualMachineScaleSetExtensionProfile { private List extensions; /** - * Get the extensions value. + * Get the virtual machine scale set child extension resources. * * @return the extensions value */ @@ -32,7 +32,7 @@ public List extensions() { } /** - * Set the extensions value. + * Set the virtual machine scale set child extension resources. * * @param extensions the extensions value to set * @return the VirtualMachineScaleSetExtensionProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetIPConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetIPConfiguration.java index e900b48a195f..c2eb7449e57a 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetIPConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetIPConfiguration.java @@ -80,7 +80,7 @@ public class VirtualMachineScaleSetIPConfiguration extends SubResource { private List loadBalancerInboundNatPools; /** - * Get the name value. + * Get the IP configuration name. * * @return the name value */ @@ -89,7 +89,7 @@ public String name() { } /** - * Set the name value. + * Set the IP configuration name. * * @param name the name value to set * @return the VirtualMachineScaleSetIPConfiguration object itself. @@ -100,7 +100,7 @@ public VirtualMachineScaleSetIPConfiguration withName(String name) { } /** - * Get the subnet value. + * Get specifies the identifier of the subnet. * * @return the subnet value */ @@ -109,7 +109,7 @@ public ApiEntityReference subnet() { } /** - * Set the subnet value. + * Set specifies the identifier of the subnet. * * @param subnet the subnet value to set * @return the VirtualMachineScaleSetIPConfiguration object itself. @@ -120,7 +120,7 @@ public VirtualMachineScaleSetIPConfiguration withSubnet(ApiEntityReference subne } /** - * Get the primary value. + * Get specifies the primary network interface in case the virtual machine has more than 1 network interface. * * @return the primary value */ @@ -129,7 +129,7 @@ public Boolean primary() { } /** - * Set the primary value. + * Set specifies the primary network interface in case the virtual machine has more than 1 network interface. * * @param primary the primary value to set * @return the VirtualMachineScaleSetIPConfiguration object itself. @@ -140,7 +140,7 @@ public VirtualMachineScaleSetIPConfiguration withPrimary(Boolean primary) { } /** - * Get the publicIPAddressConfiguration value. + * Get the publicIPAddressConfiguration. * * @return the publicIPAddressConfiguration value */ @@ -149,7 +149,7 @@ public VirtualMachineScaleSetPublicIPAddressConfiguration publicIPAddressConfigu } /** - * Set the publicIPAddressConfiguration value. + * Set the publicIPAddressConfiguration. * * @param publicIPAddressConfiguration the publicIPAddressConfiguration value to set * @return the VirtualMachineScaleSetIPConfiguration object itself. @@ -160,7 +160,7 @@ public VirtualMachineScaleSetIPConfiguration withPublicIPAddressConfiguration(Vi } /** - * Get the privateIPAddressVersion value. + * Get available from Api-Version 2017-03-30 onwards, it represents whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible values are: 'IPv4' and 'IPv6'. Possible values include: 'IPv4', 'IPv6'. * * @return the privateIPAddressVersion value */ @@ -169,7 +169,7 @@ public IPVersion privateIPAddressVersion() { } /** - * Set the privateIPAddressVersion value. + * Set available from Api-Version 2017-03-30 onwards, it represents whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible values are: 'IPv4' and 'IPv6'. Possible values include: 'IPv4', 'IPv6'. * * @param privateIPAddressVersion the privateIPAddressVersion value to set * @return the VirtualMachineScaleSetIPConfiguration object itself. @@ -180,7 +180,7 @@ public VirtualMachineScaleSetIPConfiguration withPrivateIPAddressVersion(IPVersi } /** - * Get the applicationGatewayBackendAddressPools value. + * Get specifies an array of references to backend address pools of application gateways. A scale set can reference backend address pools of multiple application gateways. Multiple scale sets cannot use the same application gateway. * * @return the applicationGatewayBackendAddressPools value */ @@ -189,7 +189,7 @@ public List applicationGatewayBackendAddressPools() { } /** - * Set the applicationGatewayBackendAddressPools value. + * Set specifies an array of references to backend address pools of application gateways. A scale set can reference backend address pools of multiple application gateways. Multiple scale sets cannot use the same application gateway. * * @param applicationGatewayBackendAddressPools the applicationGatewayBackendAddressPools value to set * @return the VirtualMachineScaleSetIPConfiguration object itself. @@ -200,7 +200,7 @@ public VirtualMachineScaleSetIPConfiguration withApplicationGatewayBackendAddres } /** - * Get the loadBalancerBackendAddressPools value. + * Get specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer. * * @return the loadBalancerBackendAddressPools value */ @@ -209,7 +209,7 @@ public List loadBalancerBackendAddressPools() { } /** - * Set the loadBalancerBackendAddressPools value. + * Set specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer. * * @param loadBalancerBackendAddressPools the loadBalancerBackendAddressPools value to set * @return the VirtualMachineScaleSetIPConfiguration object itself. @@ -220,7 +220,7 @@ public VirtualMachineScaleSetIPConfiguration withLoadBalancerBackendAddressPools } /** - * Get the loadBalancerInboundNatPools value. + * Get specifies an array of references to inbound Nat pools of the load balancers. A scale set can reference inbound nat pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer. * * @return the loadBalancerInboundNatPools value */ @@ -229,7 +229,7 @@ public List loadBalancerInboundNatPools() { } /** - * Set the loadBalancerInboundNatPools value. + * Set specifies an array of references to inbound Nat pools of the load balancers. A scale set can reference inbound nat pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer. * * @param loadBalancerInboundNatPools the loadBalancerInboundNatPools value to set * @return the VirtualMachineScaleSetIPConfiguration object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetIdentity.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetIdentity.java index ae3f99507ab3..c9dfba41d0c8 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetIdentity.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetIdentity.java @@ -49,7 +49,7 @@ public class VirtualMachineScaleSetIdentity { private List identityIds; /** - * Get the principalId value. + * Get the principal id of virtual machine scale set identity. This property will only be provided for a system assigned identity. * * @return the principalId value */ @@ -58,7 +58,7 @@ public String principalId() { } /** - * Get the tenantId value. + * Get the tenant id associated with the virtual machine scale set. This property will only be provided for a system assigned identity. * * @return the tenantId value */ @@ -67,7 +67,7 @@ public String tenantId() { } /** - * Get the type value. + * Get the type of identity used for the virtual machine scale set. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine scale set. Possible values include: 'SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None'. * * @return the type value */ @@ -76,7 +76,7 @@ public ResourceIdentityType type() { } /** - * Set the type value. + * Set the type of identity used for the virtual machine scale set. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine scale set. Possible values include: 'SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', 'None'. * * @param type the type value to set * @return the VirtualMachineScaleSetIdentity object itself. @@ -87,7 +87,7 @@ public VirtualMachineScaleSetIdentity withType(ResourceIdentityType type) { } /** - * Get the identityIds value. + * Get the list of user identities associated with the virtual machine scale set. The user identity references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identities/{identityName}'. * * @return the identityIds value */ @@ -96,7 +96,7 @@ public List identityIds() { } /** - * Set the identityIds value. + * Set the list of user identities associated with the virtual machine scale set. The user identity references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identities/{identityName}'. * * @param identityIds the identityIds value to set * @return the VirtualMachineScaleSetIdentity object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetInstanceViewStatusesSummary.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetInstanceViewStatusesSummary.java index 89a115546d2f..c41e5a3cd64f 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetInstanceViewStatusesSummary.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetInstanceViewStatusesSummary.java @@ -23,7 +23,7 @@ public class VirtualMachineScaleSetInstanceViewStatusesSummary { private List statusesSummary; /** - * Get the statusesSummary value. + * Get the extensions information. * * @return the statusesSummary value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetManagedDiskParameters.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetManagedDiskParameters.java index 46d2bd0badf3..dca60d3e05b6 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetManagedDiskParameters.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetManagedDiskParameters.java @@ -23,7 +23,7 @@ public class VirtualMachineScaleSetManagedDiskParameters { private StorageAccountTypes storageAccountType; /** - * Get the storageAccountType value. + * Get specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS'. * * @return the storageAccountType value */ @@ -32,7 +32,7 @@ public StorageAccountTypes storageAccountType() { } /** - * Set the storageAccountType value. + * Set specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS'. * * @param storageAccountType the storageAccountType value to set * @return the VirtualMachineScaleSetManagedDiskParameters object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetNetworkConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetNetworkConfiguration.java index da9b07362594..988099e1d668 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetNetworkConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetNetworkConfiguration.java @@ -64,7 +64,7 @@ public class VirtualMachineScaleSetNetworkConfiguration extends SubResource { private Boolean enableIPForwarding; /** - * Get the name value. + * Get the network configuration name. * * @return the name value */ @@ -73,7 +73,7 @@ public String name() { } /** - * Set the name value. + * Set the network configuration name. * * @param name the name value to set * @return the VirtualMachineScaleSetNetworkConfiguration object itself. @@ -84,7 +84,7 @@ public VirtualMachineScaleSetNetworkConfiguration withName(String name) { } /** - * Get the primary value. + * Get specifies the primary network interface in case the virtual machine has more than 1 network interface. * * @return the primary value */ @@ -93,7 +93,7 @@ public Boolean primary() { } /** - * Set the primary value. + * Set specifies the primary network interface in case the virtual machine has more than 1 network interface. * * @param primary the primary value to set * @return the VirtualMachineScaleSetNetworkConfiguration object itself. @@ -104,7 +104,7 @@ public VirtualMachineScaleSetNetworkConfiguration withPrimary(Boolean primary) { } /** - * Get the enableAcceleratedNetworking value. + * Get specifies whether the network interface is accelerated networking-enabled. * * @return the enableAcceleratedNetworking value */ @@ -113,7 +113,7 @@ public Boolean enableAcceleratedNetworking() { } /** - * Set the enableAcceleratedNetworking value. + * Set specifies whether the network interface is accelerated networking-enabled. * * @param enableAcceleratedNetworking the enableAcceleratedNetworking value to set * @return the VirtualMachineScaleSetNetworkConfiguration object itself. @@ -124,7 +124,7 @@ public VirtualMachineScaleSetNetworkConfiguration withEnableAcceleratedNetworkin } /** - * Get the networkSecurityGroup value. + * Get the network security group. * * @return the networkSecurityGroup value */ @@ -133,7 +133,7 @@ public SubResource networkSecurityGroup() { } /** - * Set the networkSecurityGroup value. + * Set the network security group. * * @param networkSecurityGroup the networkSecurityGroup value to set * @return the VirtualMachineScaleSetNetworkConfiguration object itself. @@ -144,7 +144,7 @@ public VirtualMachineScaleSetNetworkConfiguration withNetworkSecurityGroup(SubRe } /** - * Get the dnsSettings value. + * Get the dns settings to be applied on the network interfaces. * * @return the dnsSettings value */ @@ -153,7 +153,7 @@ public VirtualMachineScaleSetNetworkConfigurationDnsSettings dnsSettings() { } /** - * Set the dnsSettings value. + * Set the dns settings to be applied on the network interfaces. * * @param dnsSettings the dnsSettings value to set * @return the VirtualMachineScaleSetNetworkConfiguration object itself. @@ -164,7 +164,7 @@ public VirtualMachineScaleSetNetworkConfiguration withDnsSettings(VirtualMachine } /** - * Get the ipConfigurations value. + * Get specifies the IP configurations of the network interface. * * @return the ipConfigurations value */ @@ -173,7 +173,7 @@ public List ipConfigurations() { } /** - * Set the ipConfigurations value. + * Set specifies the IP configurations of the network interface. * * @param ipConfigurations the ipConfigurations value to set * @return the VirtualMachineScaleSetNetworkConfiguration object itself. @@ -184,7 +184,7 @@ public VirtualMachineScaleSetNetworkConfiguration withIpConfigurations(List dnsServers; /** - * Get the dnsServers value. + * Get list of DNS servers IP addresses. * * @return the dnsServers value */ @@ -32,7 +32,7 @@ public List dnsServers() { } /** - * Set the dnsServers value. + * Set list of DNS servers IP addresses. * * @param dnsServers the dnsServers value to set * @return the VirtualMachineScaleSetNetworkConfigurationDnsSettings object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetNetworkProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetNetworkProfile.java index 20a4f21334b9..5846717bccc2 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetNetworkProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetNetworkProfile.java @@ -31,7 +31,7 @@ public class VirtualMachineScaleSetNetworkProfile { private List networkInterfaceConfigurations; /** - * Get the healthProbe value. + * Get a reference to a load balancer probe used to determine the health of an instance in the virtual machine scale set. The reference will be in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}'. * * @return the healthProbe value */ @@ -40,7 +40,7 @@ public ApiEntityReference healthProbe() { } /** - * Set the healthProbe value. + * Set a reference to a load balancer probe used to determine the health of an instance in the virtual machine scale set. The reference will be in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}'. * * @param healthProbe the healthProbe value to set * @return the VirtualMachineScaleSetNetworkProfile object itself. @@ -51,7 +51,7 @@ public VirtualMachineScaleSetNetworkProfile withHealthProbe(ApiEntityReference h } /** - * Get the networkInterfaceConfigurations value. + * Get the list of network configurations. * * @return the networkInterfaceConfigurations value */ @@ -60,7 +60,7 @@ public List networkInterfaceConfigur } /** - * Set the networkInterfaceConfigurations value. + * Set the list of network configurations. * * @param networkInterfaceConfigurations the networkInterfaceConfigurations value to set * @return the VirtualMachineScaleSetNetworkProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetOSDisk.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetOSDisk.java index 2fa837682605..3e7faba4dc5b 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetOSDisk.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetOSDisk.java @@ -81,7 +81,7 @@ public class VirtualMachineScaleSetOSDisk { private VirtualMachineScaleSetManagedDiskParameters managedDisk; /** - * Get the name value. + * Get the disk name. * * @return the name value */ @@ -90,7 +90,7 @@ public String name() { } /** - * Set the name value. + * Set the disk name. * * @param name the name value to set * @return the VirtualMachineScaleSetOSDisk object itself. @@ -101,7 +101,7 @@ public VirtualMachineScaleSetOSDisk withName(String name) { } /** - * Get the caching value. + * Get specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @return the caching value */ @@ -110,7 +110,7 @@ public CachingTypes caching() { } /** - * Set the caching value. + * Set specifies the caching requirements. <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @param caching the caching value to set * @return the VirtualMachineScaleSetOSDisk object itself. @@ -121,7 +121,7 @@ public VirtualMachineScaleSetOSDisk withCaching(CachingTypes caching) { } /** - * Get the writeAcceleratorEnabled value. + * Get specifies whether writeAccelerator should be enabled or disabled on the disk. * * @return the writeAcceleratorEnabled value */ @@ -130,7 +130,7 @@ public Boolean writeAcceleratorEnabled() { } /** - * Set the writeAcceleratorEnabled value. + * Set specifies whether writeAccelerator should be enabled or disabled on the disk. * * @param writeAcceleratorEnabled the writeAcceleratorEnabled value to set * @return the VirtualMachineScaleSetOSDisk object itself. @@ -141,7 +141,7 @@ public VirtualMachineScaleSetOSDisk withWriteAcceleratorEnabled(Boolean writeAcc } /** - * Get the createOption value. + * Get specifies how the virtual machines in the scale set should be created.<br><br> The only allowed value is: **FromImage** \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you also use the plan element previously described. Possible values include: 'FromImage', 'Empty', 'Attach'. * * @return the createOption value */ @@ -150,7 +150,7 @@ public DiskCreateOptionTypes createOption() { } /** - * Set the createOption value. + * Set specifies how the virtual machines in the scale set should be created.<br><br> The only allowed value is: **FromImage** \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you also use the plan element previously described. Possible values include: 'FromImage', 'Empty', 'Attach'. * * @param createOption the createOption value to set * @return the VirtualMachineScaleSetOSDisk object itself. @@ -161,7 +161,7 @@ public VirtualMachineScaleSetOSDisk withCreateOption(DiskCreateOptionTypes creat } /** - * Get the osType value. + * Get this property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD. <br><br> Possible values are: <br><br> **Windows** <br><br> **Linux**. Possible values include: 'Windows', 'Linux'. * * @return the osType value */ @@ -170,7 +170,7 @@ public OperatingSystemTypes osType() { } /** - * Set the osType value. + * Set this property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD. <br><br> Possible values are: <br><br> **Windows** <br><br> **Linux**. Possible values include: 'Windows', 'Linux'. * * @param osType the osType value to set * @return the VirtualMachineScaleSetOSDisk object itself. @@ -181,7 +181,7 @@ public VirtualMachineScaleSetOSDisk withOsType(OperatingSystemTypes osType) { } /** - * Get the image value. + * Get specifies information about the unmanaged user image to base the scale set on. * * @return the image value */ @@ -190,7 +190,7 @@ public VirtualHardDisk image() { } /** - * Set the image value. + * Set specifies information about the unmanaged user image to base the scale set on. * * @param image the image value to set * @return the VirtualMachineScaleSetOSDisk object itself. @@ -201,7 +201,7 @@ public VirtualMachineScaleSetOSDisk withImage(VirtualHardDisk image) { } /** - * Get the vhdContainers value. + * Get specifies the container urls that are used to store operating system disks for the scale set. * * @return the vhdContainers value */ @@ -210,7 +210,7 @@ public List vhdContainers() { } /** - * Set the vhdContainers value. + * Set specifies the container urls that are used to store operating system disks for the scale set. * * @param vhdContainers the vhdContainers value to set * @return the VirtualMachineScaleSetOSDisk object itself. @@ -221,7 +221,7 @@ public VirtualMachineScaleSetOSDisk withVhdContainers(List vhdContainers } /** - * Get the managedDisk value. + * Get the managed disk parameters. * * @return the managedDisk value */ @@ -230,7 +230,7 @@ public VirtualMachineScaleSetManagedDiskParameters managedDisk() { } /** - * Set the managedDisk value. + * Set the managed disk parameters. * * @param managedDisk the managedDisk value to set * @return the VirtualMachineScaleSetOSDisk object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetOSProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetOSProfile.java index 2ba8f8865d1f..18636b79d422 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetOSProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetOSProfile.java @@ -102,7 +102,7 @@ public class VirtualMachineScaleSetOSProfile { private List secrets; /** - * Get the computerNamePrefix value. + * Get specifies the computer name prefix for all of the virtual machines in the scale set. Computer name prefixes must be 1 to 15 characters long. * * @return the computerNamePrefix value */ @@ -111,7 +111,7 @@ public String computerNamePrefix() { } /** - * Set the computerNamePrefix value. + * Set specifies the computer name prefix for all of the virtual machines in the scale set. Computer name prefixes must be 1 to 15 characters long. * * @param computerNamePrefix the computerNamePrefix value to set * @return the VirtualMachineScaleSetOSProfile object itself. @@ -122,7 +122,7 @@ public VirtualMachineScaleSetOSProfile withComputerNamePrefix(String computerNam } /** - * Get the adminUsername value. + * Get specifies the name of the administrator account. <br><br> **Windows-only restriction:** Cannot end in "." <br><br> **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". <br><br> **Minimum-length (Linux):** 1 character <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length (Windows):** 20 characters <br><br><li> For root access to the Linux VM, see [Using root privileges on Linux virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)<br><li> For a list of built-in system users on Linux that should not be used in this field, see [Selecting User Names for Linux on Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @return the adminUsername value */ @@ -131,7 +131,7 @@ public String adminUsername() { } /** - * Set the adminUsername value. + * Set specifies the name of the administrator account. <br><br> **Windows-only restriction:** Cannot end in "." <br><br> **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". <br><br> **Minimum-length (Linux):** 1 character <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length (Windows):** 20 characters <br><br><li> For root access to the Linux VM, see [Using root privileges on Linux virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)<br><li> For a list of built-in system users on Linux that should not be used in this field, see [Selecting User Names for Linux on Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @param adminUsername the adminUsername value to set * @return the VirtualMachineScaleSetOSProfile object itself. @@ -142,7 +142,7 @@ public VirtualMachineScaleSetOSProfile withAdminUsername(String adminUsername) { } /** - * Get the adminPassword value. + * Get specifies the password of the administrator account. <br><br> **Minimum-length (Windows):** 8 characters <br><br> **Minimum-length (Linux):** 6 characters <br><br> **Max-length (Windows):** 123 characters <br><br> **Max-length (Linux):** 72 characters <br><br> **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled <br> Has lower characters <br>Has upper characters <br> Has a digit <br> Has a special character (Regex match [\W_]) <br><br> **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!" <br><br> For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password). * * @return the adminPassword value */ @@ -151,7 +151,7 @@ public String adminPassword() { } /** - * Set the adminPassword value. + * Set specifies the password of the administrator account. <br><br> **Minimum-length (Windows):** 8 characters <br><br> **Minimum-length (Linux):** 6 characters <br><br> **Max-length (Windows):** 123 characters <br><br> **Max-length (Linux):** 72 characters <br><br> **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled <br> Has lower characters <br>Has upper characters <br> Has a digit <br> Has a special character (Regex match [\W_]) <br><br> **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!" <br><br> For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password). * * @param adminPassword the adminPassword value to set * @return the VirtualMachineScaleSetOSProfile object itself. @@ -162,7 +162,7 @@ public VirtualMachineScaleSetOSProfile withAdminPassword(String adminPassword) { } /** - * Get the customData value. + * Get specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. <br><br> For using cloud-init for your VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @return the customData value */ @@ -171,7 +171,7 @@ public String customData() { } /** - * Set the customData value. + * Set specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. <br><br> For using cloud-init for your VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @param customData the customData value to set * @return the VirtualMachineScaleSetOSProfile object itself. @@ -182,7 +182,7 @@ public VirtualMachineScaleSetOSProfile withCustomData(String customData) { } /** - * Get the windowsConfiguration value. + * Get specifies Windows operating system settings on the virtual machine. * * @return the windowsConfiguration value */ @@ -191,7 +191,7 @@ public WindowsConfiguration windowsConfiguration() { } /** - * Set the windowsConfiguration value. + * Set specifies Windows operating system settings on the virtual machine. * * @param windowsConfiguration the windowsConfiguration value to set * @return the VirtualMachineScaleSetOSProfile object itself. @@ -202,7 +202,7 @@ public VirtualMachineScaleSetOSProfile withWindowsConfiguration(WindowsConfigura } /** - * Get the linuxConfiguration value. + * Get specifies the Linux operating system settings on the virtual machine. <br><br>For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) <br><br> For running non-endorsed distributions, see [Information for Non-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @return the linuxConfiguration value */ @@ -211,7 +211,7 @@ public LinuxConfiguration linuxConfiguration() { } /** - * Set the linuxConfiguration value. + * Set specifies the Linux operating system settings on the virtual machine. <br><br>For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) <br><br> For running non-endorsed distributions, see [Information for Non-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @param linuxConfiguration the linuxConfiguration value to set * @return the VirtualMachineScaleSetOSProfile object itself. @@ -222,7 +222,7 @@ public VirtualMachineScaleSetOSProfile withLinuxConfiguration(LinuxConfiguration } /** - * Get the secrets value. + * Get specifies set of certificates that should be installed onto the virtual machines in the scale set. * * @return the secrets value */ @@ -231,7 +231,7 @@ public List secrets() { } /** - * Set the secrets value. + * Set specifies set of certificates that should be installed onto the virtual machines in the scale set. * * @param secrets the secrets value to set * @return the VirtualMachineScaleSetOSProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetPublicIPAddressConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetPublicIPAddressConfiguration.java index e4fe35588ea0..1b29e8281cc3 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetPublicIPAddressConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetPublicIPAddressConfiguration.java @@ -36,7 +36,7 @@ public class VirtualMachineScaleSetPublicIPAddressConfiguration { private VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings dnsSettings; /** - * Get the name value. + * Get the publicIP address configuration name. * * @return the name value */ @@ -45,7 +45,7 @@ public String name() { } /** - * Set the name value. + * Set the publicIP address configuration name. * * @param name the name value to set * @return the VirtualMachineScaleSetPublicIPAddressConfiguration object itself. @@ -56,7 +56,7 @@ public VirtualMachineScaleSetPublicIPAddressConfiguration withName(String name) } /** - * Get the idleTimeoutInMinutes value. + * Get the idle timeout of the public IP address. * * @return the idleTimeoutInMinutes value */ @@ -65,7 +65,7 @@ public Integer idleTimeoutInMinutes() { } /** - * Set the idleTimeoutInMinutes value. + * Set the idle timeout of the public IP address. * * @param idleTimeoutInMinutes the idleTimeoutInMinutes value to set * @return the VirtualMachineScaleSetPublicIPAddressConfiguration object itself. @@ -76,7 +76,7 @@ public VirtualMachineScaleSetPublicIPAddressConfiguration withIdleTimeoutInMinut } /** - * Get the dnsSettings value. + * Get the dns settings to be applied on the publicIP addresses . * * @return the dnsSettings value */ @@ -85,7 +85,7 @@ public VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings dnsSettings } /** - * Set the dnsSettings value. + * Set the dns settings to be applied on the publicIP addresses . * * @param dnsSettings the dnsSettings value to set * @return the VirtualMachineScaleSetPublicIPAddressConfiguration object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings.java index f0639265059f..c44a35870b2e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings.java @@ -24,7 +24,7 @@ public class VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings { private String domainNameLabel; /** - * Get the domainNameLabel value. + * Get the Domain name label.The concatenation of the domain name label and vm index will be the domain name labels of the PublicIPAddress resources that will be created. * * @return the domainNameLabel value */ @@ -33,7 +33,7 @@ public String domainNameLabel() { } /** - * Set the domainNameLabel value. + * Set the Domain name label.The concatenation of the domain name label and vm index will be the domain name labels of the PublicIPAddress resources that will be created. * * @param domainNameLabel the domainNameLabel value to set * @return the VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetSkuCapacity.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetSkuCapacity.java index c7c6b826cd1a..73cbebc94db1 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetSkuCapacity.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetSkuCapacity.java @@ -40,7 +40,7 @@ public class VirtualMachineScaleSetSkuCapacity { private VirtualMachineScaleSetSkuScaleType scaleType; /** - * Get the minimum value. + * Get the minimum capacity. * * @return the minimum value */ @@ -49,7 +49,7 @@ public Long minimum() { } /** - * Get the maximum value. + * Get the maximum capacity that can be set. * * @return the maximum value */ @@ -58,7 +58,7 @@ public Long maximum() { } /** - * Get the defaultCapacity value. + * Get the default capacity. * * @return the defaultCapacity value */ @@ -67,7 +67,7 @@ public Long defaultCapacity() { } /** - * Get the scaleType value. + * Get the scale type applicable to the sku. Possible values include: 'Automatic', 'None'. * * @return the scaleType value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetStorageProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetStorageProfile.java index 19029de8ae06..83c6b538596e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetStorageProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetStorageProfile.java @@ -44,7 +44,7 @@ public class VirtualMachineScaleSetStorageProfile { private List dataDisks; /** - * Get the imageReference value. + * Get specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This element is required when you want to use a platform image, marketplace image, or virtual machine image, but is not used in other creation operations. * * @return the imageReference value */ @@ -53,7 +53,7 @@ public ImageReference imageReference() { } /** - * Set the imageReference value. + * Set specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This element is required when you want to use a platform image, marketplace image, or virtual machine image, but is not used in other creation operations. * * @param imageReference the imageReference value to set * @return the VirtualMachineScaleSetStorageProfile object itself. @@ -64,7 +64,7 @@ public VirtualMachineScaleSetStorageProfile withImageReference(ImageReference im } /** - * Get the osDisk value. + * Get specifies information about the operating system disk used by the virtual machines in the scale set. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @return the osDisk value */ @@ -73,7 +73,7 @@ public VirtualMachineScaleSetOSDisk osDisk() { } /** - * Set the osDisk value. + * Set specifies information about the operating system disk used by the virtual machines in the scale set. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @param osDisk the osDisk value to set * @return the VirtualMachineScaleSetStorageProfile object itself. @@ -84,7 +84,7 @@ public VirtualMachineScaleSetStorageProfile withOsDisk(VirtualMachineScaleSetOSD } /** - * Get the dataDisks value. + * Get specifies the parameters that are used to add data disks to the virtual machines in the scale set. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @return the dataDisks value */ @@ -93,7 +93,7 @@ public List dataDisks() { } /** - * Set the dataDisks value. + * Set specifies the parameters that are used to add data disks to the virtual machines in the scale set. <br><br> For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @param dataDisks the dataDisks value to set * @return the VirtualMachineScaleSetStorageProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdate.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdate.java index c2fee99f9fbe..766b0d36c4b7 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdate.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdate.java @@ -50,7 +50,9 @@ public class VirtualMachineScaleSetUpdate extends UpdateResource { /** * When true this limits the scale set to a single placement group, of max - * size 100 virtual machines. + * size 100 virtual machines. NOTE: If singlePlacementGroup is true, it may + * be modified to false. However, if singlePlacementGroup is false, it may + * not be modified to true. */ @JsonProperty(value = "properties.singlePlacementGroup") private Boolean singlePlacementGroup; @@ -62,7 +64,7 @@ public class VirtualMachineScaleSetUpdate extends UpdateResource { private VirtualMachineScaleSetIdentity identity; /** - * Get the sku value. + * Get the virtual machine scale set sku. * * @return the sku value */ @@ -71,7 +73,7 @@ public Sku sku() { } /** - * Set the sku value. + * Set the virtual machine scale set sku. * * @param sku the sku value to set * @return the VirtualMachineScaleSetUpdate object itself. @@ -82,7 +84,7 @@ public VirtualMachineScaleSetUpdate withSku(Sku sku) { } /** - * Get the plan value. + * Get the purchase plan when deploying a virtual machine scale set from VM Marketplace images. * * @return the plan value */ @@ -91,7 +93,7 @@ public Plan plan() { } /** - * Set the plan value. + * Set the purchase plan when deploying a virtual machine scale set from VM Marketplace images. * * @param plan the plan value to set * @return the VirtualMachineScaleSetUpdate object itself. @@ -102,7 +104,7 @@ public VirtualMachineScaleSetUpdate withPlan(Plan plan) { } /** - * Get the upgradePolicy value. + * Get the upgrade policy. * * @return the upgradePolicy value */ @@ -111,7 +113,7 @@ public UpgradePolicy upgradePolicy() { } /** - * Set the upgradePolicy value. + * Set the upgrade policy. * * @param upgradePolicy the upgradePolicy value to set * @return the VirtualMachineScaleSetUpdate object itself. @@ -122,7 +124,7 @@ public VirtualMachineScaleSetUpdate withUpgradePolicy(UpgradePolicy upgradePolic } /** - * Get the virtualMachineProfile value. + * Get the virtual machine profile. * * @return the virtualMachineProfile value */ @@ -131,7 +133,7 @@ public VirtualMachineScaleSetUpdateVMProfile virtualMachineProfile() { } /** - * Set the virtualMachineProfile value. + * Set the virtual machine profile. * * @param virtualMachineProfile the virtualMachineProfile value to set * @return the VirtualMachineScaleSetUpdate object itself. @@ -142,7 +144,7 @@ public VirtualMachineScaleSetUpdate withVirtualMachineProfile(VirtualMachineScal } /** - * Get the overprovision value. + * Get specifies whether the Virtual Machine Scale Set should be overprovisioned. * * @return the overprovision value */ @@ -151,7 +153,7 @@ public Boolean overprovision() { } /** - * Set the overprovision value. + * Set specifies whether the Virtual Machine Scale Set should be overprovisioned. * * @param overprovision the overprovision value to set * @return the VirtualMachineScaleSetUpdate object itself. @@ -162,7 +164,7 @@ public VirtualMachineScaleSetUpdate withOverprovision(Boolean overprovision) { } /** - * Get the singlePlacementGroup value. + * Get when true this limits the scale set to a single placement group, of max size 100 virtual machines. NOTE: If singlePlacementGroup is true, it may be modified to false. However, if singlePlacementGroup is false, it may not be modified to true. * * @return the singlePlacementGroup value */ @@ -171,7 +173,7 @@ public Boolean singlePlacementGroup() { } /** - * Set the singlePlacementGroup value. + * Set when true this limits the scale set to a single placement group, of max size 100 virtual machines. NOTE: If singlePlacementGroup is true, it may be modified to false. However, if singlePlacementGroup is false, it may not be modified to true. * * @param singlePlacementGroup the singlePlacementGroup value to set * @return the VirtualMachineScaleSetUpdate object itself. @@ -182,7 +184,7 @@ public VirtualMachineScaleSetUpdate withSinglePlacementGroup(Boolean singlePlace } /** - * Get the identity value. + * Get the identity of the virtual machine scale set, if configured. * * @return the identity value */ @@ -191,7 +193,7 @@ public VirtualMachineScaleSetIdentity identity() { } /** - * Set the identity value. + * Set the identity of the virtual machine scale set, if configured. * * @param identity the identity value to set * @return the VirtualMachineScaleSetUpdate object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateIPConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateIPConfiguration.java index be15c1aa49e8..338714c1be22 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateIPConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateIPConfiguration.java @@ -71,7 +71,7 @@ public class VirtualMachineScaleSetUpdateIPConfiguration extends SubResource { private List loadBalancerInboundNatPools; /** - * Get the name value. + * Get the IP configuration name. * * @return the name value */ @@ -80,7 +80,7 @@ public String name() { } /** - * Set the name value. + * Set the IP configuration name. * * @param name the name value to set * @return the VirtualMachineScaleSetUpdateIPConfiguration object itself. @@ -91,7 +91,7 @@ public VirtualMachineScaleSetUpdateIPConfiguration withName(String name) { } /** - * Get the subnet value. + * Get the subnet. * * @return the subnet value */ @@ -100,7 +100,7 @@ public ApiEntityReference subnet() { } /** - * Set the subnet value. + * Set the subnet. * * @param subnet the subnet value to set * @return the VirtualMachineScaleSetUpdateIPConfiguration object itself. @@ -111,7 +111,7 @@ public VirtualMachineScaleSetUpdateIPConfiguration withSubnet(ApiEntityReference } /** - * Get the primary value. + * Get specifies the primary IP Configuration in case the network interface has more than one IP Configuration. * * @return the primary value */ @@ -120,7 +120,7 @@ public Boolean primary() { } /** - * Set the primary value. + * Set specifies the primary IP Configuration in case the network interface has more than one IP Configuration. * * @param primary the primary value to set * @return the VirtualMachineScaleSetUpdateIPConfiguration object itself. @@ -131,7 +131,7 @@ public VirtualMachineScaleSetUpdateIPConfiguration withPrimary(Boolean primary) } /** - * Get the publicIPAddressConfiguration value. + * Get the publicIPAddressConfiguration. * * @return the publicIPAddressConfiguration value */ @@ -140,7 +140,7 @@ public VirtualMachineScaleSetUpdatePublicIPAddressConfiguration publicIPAddressC } /** - * Set the publicIPAddressConfiguration value. + * Set the publicIPAddressConfiguration. * * @param publicIPAddressConfiguration the publicIPAddressConfiguration value to set * @return the VirtualMachineScaleSetUpdateIPConfiguration object itself. @@ -151,7 +151,7 @@ public VirtualMachineScaleSetUpdateIPConfiguration withPublicIPAddressConfigurat } /** - * Get the privateIPAddressVersion value. + * Get available from Api-Version 2017-03-30 onwards, it represents whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible values are: 'IPv4' and 'IPv6'. Possible values include: 'IPv4', 'IPv6'. * * @return the privateIPAddressVersion value */ @@ -160,7 +160,7 @@ public IPVersion privateIPAddressVersion() { } /** - * Set the privateIPAddressVersion value. + * Set available from Api-Version 2017-03-30 onwards, it represents whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible values are: 'IPv4' and 'IPv6'. Possible values include: 'IPv4', 'IPv6'. * * @param privateIPAddressVersion the privateIPAddressVersion value to set * @return the VirtualMachineScaleSetUpdateIPConfiguration object itself. @@ -171,7 +171,7 @@ public VirtualMachineScaleSetUpdateIPConfiguration withPrivateIPAddressVersion(I } /** - * Get the applicationGatewayBackendAddressPools value. + * Get the application gateway backend address pools. * * @return the applicationGatewayBackendAddressPools value */ @@ -180,7 +180,7 @@ public List applicationGatewayBackendAddressPools() { } /** - * Set the applicationGatewayBackendAddressPools value. + * Set the application gateway backend address pools. * * @param applicationGatewayBackendAddressPools the applicationGatewayBackendAddressPools value to set * @return the VirtualMachineScaleSetUpdateIPConfiguration object itself. @@ -191,7 +191,7 @@ public VirtualMachineScaleSetUpdateIPConfiguration withApplicationGatewayBackend } /** - * Get the loadBalancerBackendAddressPools value. + * Get the load balancer backend address pools. * * @return the loadBalancerBackendAddressPools value */ @@ -200,7 +200,7 @@ public List loadBalancerBackendAddressPools() { } /** - * Set the loadBalancerBackendAddressPools value. + * Set the load balancer backend address pools. * * @param loadBalancerBackendAddressPools the loadBalancerBackendAddressPools value to set * @return the VirtualMachineScaleSetUpdateIPConfiguration object itself. @@ -211,7 +211,7 @@ public VirtualMachineScaleSetUpdateIPConfiguration withLoadBalancerBackendAddres } /** - * Get the loadBalancerInboundNatPools value. + * Get the load balancer inbound nat pools. * * @return the loadBalancerInboundNatPools value */ @@ -220,7 +220,7 @@ public List loadBalancerInboundNatPools() { } /** - * Set the loadBalancerInboundNatPools value. + * Set the load balancer inbound nat pools. * * @param loadBalancerInboundNatPools the loadBalancerInboundNatPools value to set * @return the VirtualMachineScaleSetUpdateIPConfiguration object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateNetworkConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateNetworkConfiguration.java index 65cf928769b8..164e5ff3a3b9 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateNetworkConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateNetworkConfiguration.java @@ -63,7 +63,7 @@ public class VirtualMachineScaleSetUpdateNetworkConfiguration extends SubResourc private Boolean enableIPForwarding; /** - * Get the name value. + * Get the network configuration name. * * @return the name value */ @@ -72,7 +72,7 @@ public String name() { } /** - * Set the name value. + * Set the network configuration name. * * @param name the name value to set * @return the VirtualMachineScaleSetUpdateNetworkConfiguration object itself. @@ -83,7 +83,7 @@ public VirtualMachineScaleSetUpdateNetworkConfiguration withName(String name) { } /** - * Get the primary value. + * Get whether this is a primary NIC on a virtual machine. * * @return the primary value */ @@ -92,7 +92,7 @@ public Boolean primary() { } /** - * Set the primary value. + * Set whether this is a primary NIC on a virtual machine. * * @param primary the primary value to set * @return the VirtualMachineScaleSetUpdateNetworkConfiguration object itself. @@ -103,7 +103,7 @@ public VirtualMachineScaleSetUpdateNetworkConfiguration withPrimary(Boolean prim } /** - * Get the enableAcceleratedNetworking value. + * Get specifies whether the network interface is accelerated networking-enabled. * * @return the enableAcceleratedNetworking value */ @@ -112,7 +112,7 @@ public Boolean enableAcceleratedNetworking() { } /** - * Set the enableAcceleratedNetworking value. + * Set specifies whether the network interface is accelerated networking-enabled. * * @param enableAcceleratedNetworking the enableAcceleratedNetworking value to set * @return the VirtualMachineScaleSetUpdateNetworkConfiguration object itself. @@ -123,7 +123,7 @@ public VirtualMachineScaleSetUpdateNetworkConfiguration withEnableAcceleratedNet } /** - * Get the networkSecurityGroup value. + * Get the network security group. * * @return the networkSecurityGroup value */ @@ -132,7 +132,7 @@ public SubResource networkSecurityGroup() { } /** - * Set the networkSecurityGroup value. + * Set the network security group. * * @param networkSecurityGroup the networkSecurityGroup value to set * @return the VirtualMachineScaleSetUpdateNetworkConfiguration object itself. @@ -143,7 +143,7 @@ public VirtualMachineScaleSetUpdateNetworkConfiguration withNetworkSecurityGroup } /** - * Get the dnsSettings value. + * Get the dns settings to be applied on the network interfaces. * * @return the dnsSettings value */ @@ -152,7 +152,7 @@ public VirtualMachineScaleSetNetworkConfigurationDnsSettings dnsSettings() { } /** - * Set the dnsSettings value. + * Set the dns settings to be applied on the network interfaces. * * @param dnsSettings the dnsSettings value to set * @return the VirtualMachineScaleSetUpdateNetworkConfiguration object itself. @@ -163,7 +163,7 @@ public VirtualMachineScaleSetUpdateNetworkConfiguration withDnsSettings(VirtualM } /** - * Get the ipConfigurations value. + * Get the virtual machine scale set IP Configuration. * * @return the ipConfigurations value */ @@ -172,7 +172,7 @@ public List ipConfigurations() { } /** - * Set the ipConfigurations value. + * Set the virtual machine scale set IP Configuration. * * @param ipConfigurations the ipConfigurations value to set * @return the VirtualMachineScaleSetUpdateNetworkConfiguration object itself. @@ -183,7 +183,7 @@ public VirtualMachineScaleSetUpdateNetworkConfiguration withIpConfigurations(Lis } /** - * Get the enableIPForwarding value. + * Get whether IP forwarding enabled on this NIC. * * @return the enableIPForwarding value */ @@ -192,7 +192,7 @@ public Boolean enableIPForwarding() { } /** - * Set the enableIPForwarding value. + * Set whether IP forwarding enabled on this NIC. * * @param enableIPForwarding the enableIPForwarding value to set * @return the VirtualMachineScaleSetUpdateNetworkConfiguration object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateNetworkProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateNetworkProfile.java index cc84e6a723df..baa850b4f875 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateNetworkProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateNetworkProfile.java @@ -22,7 +22,7 @@ public class VirtualMachineScaleSetUpdateNetworkProfile { private List networkInterfaceConfigurations; /** - * Get the networkInterfaceConfigurations value. + * Get the list of network configurations. * * @return the networkInterfaceConfigurations value */ @@ -31,7 +31,7 @@ public List networkInterfaceCo } /** - * Set the networkInterfaceConfigurations value. + * Set the list of network configurations. * * @param networkInterfaceConfigurations the networkInterfaceConfigurations value to set * @return the VirtualMachineScaleSetUpdateNetworkProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateOSDisk.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateOSDisk.java index bed53718e5ec..74acab75698e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateOSDisk.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateOSDisk.java @@ -51,7 +51,7 @@ public class VirtualMachineScaleSetUpdateOSDisk { private VirtualMachineScaleSetManagedDiskParameters managedDisk; /** - * Get the caching value. + * Get the caching type. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @return the caching value */ @@ -60,7 +60,7 @@ public CachingTypes caching() { } /** - * Set the caching value. + * Set the caching type. Possible values include: 'None', 'ReadOnly', 'ReadWrite'. * * @param caching the caching value to set * @return the VirtualMachineScaleSetUpdateOSDisk object itself. @@ -71,7 +71,7 @@ public VirtualMachineScaleSetUpdateOSDisk withCaching(CachingTypes caching) { } /** - * Get the writeAcceleratorEnabled value. + * Get specifies whether writeAccelerator should be enabled or disabled on the disk. * * @return the writeAcceleratorEnabled value */ @@ -80,7 +80,7 @@ public Boolean writeAcceleratorEnabled() { } /** - * Set the writeAcceleratorEnabled value. + * Set specifies whether writeAccelerator should be enabled or disabled on the disk. * * @param writeAcceleratorEnabled the writeAcceleratorEnabled value to set * @return the VirtualMachineScaleSetUpdateOSDisk object itself. @@ -91,7 +91,7 @@ public VirtualMachineScaleSetUpdateOSDisk withWriteAcceleratorEnabled(Boolean wr } /** - * Get the image value. + * Get the Source User Image VirtualHardDisk. This VirtualHardDisk will be copied before using it to attach to the Virtual Machine. If SourceImage is provided, the destination VirtualHardDisk should not exist. * * @return the image value */ @@ -100,7 +100,7 @@ public VirtualHardDisk image() { } /** - * Set the image value. + * Set the Source User Image VirtualHardDisk. This VirtualHardDisk will be copied before using it to attach to the Virtual Machine. If SourceImage is provided, the destination VirtualHardDisk should not exist. * * @param image the image value to set * @return the VirtualMachineScaleSetUpdateOSDisk object itself. @@ -111,7 +111,7 @@ public VirtualMachineScaleSetUpdateOSDisk withImage(VirtualHardDisk image) { } /** - * Get the vhdContainers value. + * Get the list of virtual hard disk container uris. * * @return the vhdContainers value */ @@ -120,7 +120,7 @@ public List vhdContainers() { } /** - * Set the vhdContainers value. + * Set the list of virtual hard disk container uris. * * @param vhdContainers the vhdContainers value to set * @return the VirtualMachineScaleSetUpdateOSDisk object itself. @@ -131,7 +131,7 @@ public VirtualMachineScaleSetUpdateOSDisk withVhdContainers(List vhdCont } /** - * Get the managedDisk value. + * Get the managed disk parameters. * * @return the managedDisk value */ @@ -140,7 +140,7 @@ public VirtualMachineScaleSetManagedDiskParameters managedDisk() { } /** - * Set the managedDisk value. + * Set the managed disk parameters. * * @param managedDisk the managedDisk value to set * @return the VirtualMachineScaleSetUpdateOSDisk object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateOSProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateOSProfile.java index 11839825f71a..49374b9ce975 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateOSProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateOSProfile.java @@ -40,7 +40,7 @@ public class VirtualMachineScaleSetUpdateOSProfile { private List secrets; /** - * Get the customData value. + * Get a base-64 encoded string of custom data. * * @return the customData value */ @@ -49,7 +49,7 @@ public String customData() { } /** - * Set the customData value. + * Set a base-64 encoded string of custom data. * * @param customData the customData value to set * @return the VirtualMachineScaleSetUpdateOSProfile object itself. @@ -60,7 +60,7 @@ public VirtualMachineScaleSetUpdateOSProfile withCustomData(String customData) { } /** - * Get the windowsConfiguration value. + * Get the Windows Configuration of the OS profile. * * @return the windowsConfiguration value */ @@ -69,7 +69,7 @@ public WindowsConfiguration windowsConfiguration() { } /** - * Set the windowsConfiguration value. + * Set the Windows Configuration of the OS profile. * * @param windowsConfiguration the windowsConfiguration value to set * @return the VirtualMachineScaleSetUpdateOSProfile object itself. @@ -80,7 +80,7 @@ public VirtualMachineScaleSetUpdateOSProfile withWindowsConfiguration(WindowsCon } /** - * Get the linuxConfiguration value. + * Get the Linux Configuration of the OS profile. * * @return the linuxConfiguration value */ @@ -89,7 +89,7 @@ public LinuxConfiguration linuxConfiguration() { } /** - * Set the linuxConfiguration value. + * Set the Linux Configuration of the OS profile. * * @param linuxConfiguration the linuxConfiguration value to set * @return the VirtualMachineScaleSetUpdateOSProfile object itself. @@ -100,7 +100,7 @@ public VirtualMachineScaleSetUpdateOSProfile withLinuxConfiguration(LinuxConfigu } /** - * Get the secrets value. + * Get the List of certificates for addition to the VM. * * @return the secrets value */ @@ -109,7 +109,7 @@ public List secrets() { } /** - * Set the secrets value. + * Set the List of certificates for addition to the VM. * * @param secrets the secrets value to set * @return the VirtualMachineScaleSetUpdateOSProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdatePublicIPAddressConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdatePublicIPAddressConfiguration.java index b5b410999086..bd011b083f93 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdatePublicIPAddressConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdatePublicIPAddressConfiguration.java @@ -36,7 +36,7 @@ public class VirtualMachineScaleSetUpdatePublicIPAddressConfiguration { private VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings dnsSettings; /** - * Get the name value. + * Get the publicIP address configuration name. * * @return the name value */ @@ -45,7 +45,7 @@ public String name() { } /** - * Set the name value. + * Set the publicIP address configuration name. * * @param name the name value to set * @return the VirtualMachineScaleSetUpdatePublicIPAddressConfiguration object itself. @@ -56,7 +56,7 @@ public VirtualMachineScaleSetUpdatePublicIPAddressConfiguration withName(String } /** - * Get the idleTimeoutInMinutes value. + * Get the idle timeout of the public IP address. * * @return the idleTimeoutInMinutes value */ @@ -65,7 +65,7 @@ public Integer idleTimeoutInMinutes() { } /** - * Set the idleTimeoutInMinutes value. + * Set the idle timeout of the public IP address. * * @param idleTimeoutInMinutes the idleTimeoutInMinutes value to set * @return the VirtualMachineScaleSetUpdatePublicIPAddressConfiguration object itself. @@ -76,7 +76,7 @@ public VirtualMachineScaleSetUpdatePublicIPAddressConfiguration withIdleTimeoutI } /** - * Get the dnsSettings value. + * Get the dns settings to be applied on the publicIP addresses . * * @return the dnsSettings value */ @@ -85,7 +85,7 @@ public VirtualMachineScaleSetPublicIPAddressConfigurationDnsSettings dnsSettings } /** - * Set the dnsSettings value. + * Set the dns settings to be applied on the publicIP addresses . * * @param dnsSettings the dnsSettings value to set * @return the VirtualMachineScaleSetUpdatePublicIPAddressConfiguration object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateStorageProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateStorageProfile.java index c631fca0fbce..9ca0f7b2f2b2 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateStorageProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateStorageProfile.java @@ -34,7 +34,7 @@ public class VirtualMachineScaleSetUpdateStorageProfile { private List dataDisks; /** - * Get the imageReference value. + * Get the image reference. * * @return the imageReference value */ @@ -43,7 +43,7 @@ public ImageReference imageReference() { } /** - * Set the imageReference value. + * Set the image reference. * * @param imageReference the imageReference value to set * @return the VirtualMachineScaleSetUpdateStorageProfile object itself. @@ -54,7 +54,7 @@ public VirtualMachineScaleSetUpdateStorageProfile withImageReference(ImageRefere } /** - * Get the osDisk value. + * Get the OS disk. * * @return the osDisk value */ @@ -63,7 +63,7 @@ public VirtualMachineScaleSetUpdateOSDisk osDisk() { } /** - * Set the osDisk value. + * Set the OS disk. * * @param osDisk the osDisk value to set * @return the VirtualMachineScaleSetUpdateStorageProfile object itself. @@ -74,7 +74,7 @@ public VirtualMachineScaleSetUpdateStorageProfile withOsDisk(VirtualMachineScale } /** - * Get the dataDisks value. + * Get the data disks. * * @return the dataDisks value */ @@ -83,7 +83,7 @@ public List dataDisks() { } /** - * Set the dataDisks value. + * Set the data disks. * * @param dataDisks the dataDisks value to set * @return the VirtualMachineScaleSetUpdateStorageProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateVMProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateVMProfile.java index 0e4083a5c1f0..2eee2eee5abe 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateVMProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetUpdateVMProfile.java @@ -51,7 +51,7 @@ public class VirtualMachineScaleSetUpdateVMProfile { private String licenseType; /** - * Get the osProfile value. + * Get the virtual machine scale set OS profile. * * @return the osProfile value */ @@ -60,7 +60,7 @@ public VirtualMachineScaleSetUpdateOSProfile osProfile() { } /** - * Set the osProfile value. + * Set the virtual machine scale set OS profile. * * @param osProfile the osProfile value to set * @return the VirtualMachineScaleSetUpdateVMProfile object itself. @@ -71,7 +71,7 @@ public VirtualMachineScaleSetUpdateVMProfile withOsProfile(VirtualMachineScaleSe } /** - * Get the storageProfile value. + * Get the virtual machine scale set storage profile. * * @return the storageProfile value */ @@ -80,7 +80,7 @@ public VirtualMachineScaleSetUpdateStorageProfile storageProfile() { } /** - * Set the storageProfile value. + * Set the virtual machine scale set storage profile. * * @param storageProfile the storageProfile value to set * @return the VirtualMachineScaleSetUpdateVMProfile object itself. @@ -91,7 +91,7 @@ public VirtualMachineScaleSetUpdateVMProfile withStorageProfile(VirtualMachineSc } /** - * Get the networkProfile value. + * Get the virtual machine scale set network profile. * * @return the networkProfile value */ @@ -100,7 +100,7 @@ public VirtualMachineScaleSetUpdateNetworkProfile networkProfile() { } /** - * Set the networkProfile value. + * Set the virtual machine scale set network profile. * * @param networkProfile the networkProfile value to set * @return the VirtualMachineScaleSetUpdateVMProfile object itself. @@ -111,7 +111,7 @@ public VirtualMachineScaleSetUpdateVMProfile withNetworkProfile(VirtualMachineSc } /** - * Get the diagnosticsProfile value. + * Get the virtual machine scale set diagnostics profile. * * @return the diagnosticsProfile value */ @@ -120,7 +120,7 @@ public DiagnosticsProfile diagnosticsProfile() { } /** - * Set the diagnosticsProfile value. + * Set the virtual machine scale set diagnostics profile. * * @param diagnosticsProfile the diagnosticsProfile value to set * @return the VirtualMachineScaleSetUpdateVMProfile object itself. @@ -131,7 +131,7 @@ public VirtualMachineScaleSetUpdateVMProfile withDiagnosticsProfile(DiagnosticsP } /** - * Get the extensionProfile value. + * Get the virtual machine scale set extension profile. * * @return the extensionProfile value */ @@ -140,7 +140,7 @@ public VirtualMachineScaleSetExtensionProfile extensionProfile() { } /** - * Set the extensionProfile value. + * Set the virtual machine scale set extension profile. * * @param extensionProfile the extensionProfile value to set * @return the VirtualMachineScaleSetUpdateVMProfile object itself. @@ -151,7 +151,7 @@ public VirtualMachineScaleSetUpdateVMProfile withExtensionProfile(VirtualMachine } /** - * Get the licenseType value. + * Get the license type, which is for bring your own license scenario. * * @return the licenseType value */ @@ -160,7 +160,7 @@ public String licenseType() { } /** - * Set the licenseType value. + * Set the license type, which is for bring your own license scenario. * * @param licenseType the licenseType value to set * @return the VirtualMachineScaleSetUpdateVMProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVM.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVM.java index 54fae114dfa8..bc9b114a3283 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVM.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVM.java @@ -52,7 +52,7 @@ public interface VirtualMachineScaleSetVM extends HasInner tags); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMExtensionsSummary.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMExtensionsSummary.java index 3cc0b1117e51..726e86547d25 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMExtensionsSummary.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMExtensionsSummary.java @@ -28,7 +28,7 @@ public class VirtualMachineScaleSetVMExtensionsSummary { private List statusesSummary; /** - * Get the name value. + * Get the extension name. * * @return the name value */ @@ -37,7 +37,7 @@ public String name() { } /** - * Get the statusesSummary value. + * Get the extensions information. * * @return the statusesSummary value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMInstanceIDs.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMInstanceIDs.java index ea1977fc1ae0..6c2b2d9c19e3 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMInstanceIDs.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMInstanceIDs.java @@ -24,7 +24,7 @@ public class VirtualMachineScaleSetVMInstanceIDs { private List instanceIds; /** - * Get the instanceIds value. + * Get the virtual machine scale set instance ids. Omitting the virtual machine scale set instance ids will result in the operation being performed on all virtual machines in the virtual machine scale set. * * @return the instanceIds value */ @@ -33,7 +33,7 @@ public List instanceIds() { } /** - * Set the instanceIds value. + * Set the virtual machine scale set instance ids. Omitting the virtual machine scale set instance ids will result in the operation being performed on all virtual machines in the virtual machine scale set. * * @param instanceIds the instanceIds value to set * @return the VirtualMachineScaleSetVMInstanceIDs object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMInstanceRequiredIDs.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMInstanceRequiredIDs.java index 21a2329dcbac..a80417dda49c 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMInstanceRequiredIDs.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMInstanceRequiredIDs.java @@ -22,7 +22,7 @@ public class VirtualMachineScaleSetVMInstanceRequiredIDs { private List instanceIds; /** - * Get the instanceIds value. + * Get the virtual machine scale set instance ids. * * @return the instanceIds value */ @@ -31,7 +31,7 @@ public List instanceIds() { } /** - * Set the instanceIds value. + * Set the virtual machine scale set instance ids. * * @param instanceIds the instanceIds value to set * @return the VirtualMachineScaleSetVMInstanceRequiredIDs object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMProfile.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMProfile.java index 875ae1de688b..821e6e66e0b7 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMProfile.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMProfile.java @@ -80,7 +80,7 @@ public class VirtualMachineScaleSetVMProfile { private VirtualMachineEvictionPolicyTypes evictionPolicy; /** - * Get the osProfile value. + * Get specifies the operating system settings for the virtual machines in the scale set. * * @return the osProfile value */ @@ -89,7 +89,7 @@ public VirtualMachineScaleSetOSProfile osProfile() { } /** - * Set the osProfile value. + * Set specifies the operating system settings for the virtual machines in the scale set. * * @param osProfile the osProfile value to set * @return the VirtualMachineScaleSetVMProfile object itself. @@ -100,7 +100,7 @@ public VirtualMachineScaleSetVMProfile withOsProfile(VirtualMachineScaleSetOSPro } /** - * Get the storageProfile value. + * Get specifies the storage settings for the virtual machine disks. * * @return the storageProfile value */ @@ -109,7 +109,7 @@ public VirtualMachineScaleSetStorageProfile storageProfile() { } /** - * Set the storageProfile value. + * Set specifies the storage settings for the virtual machine disks. * * @param storageProfile the storageProfile value to set * @return the VirtualMachineScaleSetVMProfile object itself. @@ -120,7 +120,7 @@ public VirtualMachineScaleSetVMProfile withStorageProfile(VirtualMachineScaleSet } /** - * Get the networkProfile value. + * Get specifies properties of the network interfaces of the virtual machines in the scale set. * * @return the networkProfile value */ @@ -129,7 +129,7 @@ public VirtualMachineScaleSetNetworkProfile networkProfile() { } /** - * Set the networkProfile value. + * Set specifies properties of the network interfaces of the virtual machines in the scale set. * * @param networkProfile the networkProfile value to set * @return the VirtualMachineScaleSetVMProfile object itself. @@ -140,7 +140,7 @@ public VirtualMachineScaleSetVMProfile withNetworkProfile(VirtualMachineScaleSet } /** - * Get the diagnosticsProfile value. + * Get specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15. * * @return the diagnosticsProfile value */ @@ -149,7 +149,7 @@ public DiagnosticsProfile diagnosticsProfile() { } /** - * Set the diagnosticsProfile value. + * Set specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15. * * @param diagnosticsProfile the diagnosticsProfile value to set * @return the VirtualMachineScaleSetVMProfile object itself. @@ -160,7 +160,7 @@ public VirtualMachineScaleSetVMProfile withDiagnosticsProfile(DiagnosticsProfile } /** - * Get the extensionProfile value. + * Get specifies a collection of settings for extensions installed on virtual machines in the scale set. * * @return the extensionProfile value */ @@ -169,7 +169,7 @@ public VirtualMachineScaleSetExtensionProfile extensionProfile() { } /** - * Set the extensionProfile value. + * Set specifies a collection of settings for extensions installed on virtual machines in the scale set. * * @param extensionProfile the extensionProfile value to set * @return the VirtualMachineScaleSetVMProfile object itself. @@ -180,7 +180,7 @@ public VirtualMachineScaleSetVMProfile withExtensionProfile(VirtualMachineScaleS } /** - * Get the licenseType value. + * Get specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15. * * @return the licenseType value */ @@ -189,7 +189,7 @@ public String licenseType() { } /** - * Set the licenseType value. + * Set specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15. * * @param licenseType the licenseType value to set * @return the VirtualMachineScaleSetVMProfile object itself. @@ -200,7 +200,7 @@ public VirtualMachineScaleSetVMProfile withLicenseType(String licenseType) { } /** - * Get the priority value. + * Get specifies the priority for the virtual machines in the scale set. <br><br>Minimum api-version: 2017-10-30-preview. Possible values include: 'Regular', 'Low'. * * @return the priority value */ @@ -209,7 +209,7 @@ public VirtualMachinePriorityTypes priority() { } /** - * Set the priority value. + * Set specifies the priority for the virtual machines in the scale set. <br><br>Minimum api-version: 2017-10-30-preview. Possible values include: 'Regular', 'Low'. * * @param priority the priority value to set * @return the VirtualMachineScaleSetVMProfile object itself. @@ -220,7 +220,7 @@ public VirtualMachineScaleSetVMProfile withPriority(VirtualMachinePriorityTypes } /** - * Get the evictionPolicy value. + * Get specifies the eviction policy for virtual machines in a low priority scale set. <br><br>Minimum api-version: 2017-10-30-preview. Possible values include: 'Deallocate', 'Delete'. * * @return the evictionPolicy value */ @@ -229,7 +229,7 @@ public VirtualMachineEvictionPolicyTypes evictionPolicy() { } /** - * Set the evictionPolicy value. + * Set specifies the eviction policy for virtual machines in a low priority scale set. <br><br>Minimum api-version: 2017-10-30-preview. Possible values include: 'Deallocate', 'Delete'. * * @param evictionPolicy the evictionPolicy value to set * @return the VirtualMachineScaleSetVMProfile object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMs.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMs.java index 76ece157e7e7..2cca3c40df78 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMs.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSetVMs.java @@ -95,7 +95,7 @@ public interface VirtualMachineScaleSetVMs extends HasInner startAsync(String resourceGroupName, String vmScaleSetName, String instanceId); /** - * Redeploys a virtual machine in a VM scale set. + * Shuts down the virtual machine in the virtual machine scale set, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSets.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSets.java index 678ae9efeef9..8ffb7fb58ebb 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSets.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineScaleSets.java @@ -96,7 +96,7 @@ public interface VirtualMachineScaleSets extends SupportsCreating startAsync(String resourceGroupName, String vmScaleSetName); /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -106,7 +106,7 @@ public interface VirtualMachineScaleSets extends SupportsCreating redeployAsync(String resourceGroupName, String vmScaleSetName); /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineStatusCodeCount.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineStatusCodeCount.java index 018f8c719e76..9ea79047103c 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineStatusCodeCount.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineStatusCodeCount.java @@ -28,7 +28,7 @@ public class VirtualMachineStatusCodeCount { private Integer count; /** - * Get the code value. + * Get the instance view status code. * * @return the code value */ @@ -37,7 +37,7 @@ public String code() { } /** - * Get the count value. + * Get the number of instances having a particular status code. * * @return the count value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineUpdate.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineUpdate.java index e1ccbb507cd9..b15d895bebb9 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineUpdate.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachineUpdate.java @@ -69,7 +69,7 @@ public class VirtualMachineUpdate extends UpdateResource { * availability. For more information about availability sets, see [Manage * the availability of virtual * machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). - * <br><br> For more information on Azure planned maintainance, + * <br><br> For more information on Azure planned maintenance, * see [Planned maintenance for virtual machines in * Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) * <br><br> Currently, a VM can only be added to availability @@ -127,7 +127,7 @@ public class VirtualMachineUpdate extends UpdateResource { private List zones; /** - * Get the plan value. + * Get specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**. * * @return the plan value */ @@ -136,7 +136,7 @@ public Plan plan() { } /** - * Set the plan value. + * Set specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**. * * @param plan the plan value to set * @return the VirtualMachineUpdate object itself. @@ -147,7 +147,7 @@ public VirtualMachineUpdate withPlan(Plan plan) { } /** - * Get the hardwareProfile value. + * Get specifies the hardware settings for the virtual machine. * * @return the hardwareProfile value */ @@ -156,7 +156,7 @@ public HardwareProfile hardwareProfile() { } /** - * Set the hardwareProfile value. + * Set specifies the hardware settings for the virtual machine. * * @param hardwareProfile the hardwareProfile value to set * @return the VirtualMachineUpdate object itself. @@ -167,7 +167,7 @@ public VirtualMachineUpdate withHardwareProfile(HardwareProfile hardwareProfile) } /** - * Get the storageProfile value. + * Get specifies the storage settings for the virtual machine disks. * * @return the storageProfile value */ @@ -176,7 +176,7 @@ public StorageProfile storageProfile() { } /** - * Set the storageProfile value. + * Set specifies the storage settings for the virtual machine disks. * * @param storageProfile the storageProfile value to set * @return the VirtualMachineUpdate object itself. @@ -187,7 +187,7 @@ public VirtualMachineUpdate withStorageProfile(StorageProfile storageProfile) { } /** - * Get the osProfile value. + * Get specifies the operating system settings for the virtual machine. * * @return the osProfile value */ @@ -196,7 +196,7 @@ public OSProfile osProfile() { } /** - * Set the osProfile value. + * Set specifies the operating system settings for the virtual machine. * * @param osProfile the osProfile value to set * @return the VirtualMachineUpdate object itself. @@ -207,7 +207,7 @@ public VirtualMachineUpdate withOsProfile(OSProfile osProfile) { } /** - * Get the networkProfile value. + * Get specifies the network interfaces of the virtual machine. * * @return the networkProfile value */ @@ -216,7 +216,7 @@ public NetworkProfile networkProfile() { } /** - * Set the networkProfile value. + * Set specifies the network interfaces of the virtual machine. * * @param networkProfile the networkProfile value to set * @return the VirtualMachineUpdate object itself. @@ -227,7 +227,7 @@ public VirtualMachineUpdate withNetworkProfile(NetworkProfile networkProfile) { } /** - * Get the diagnosticsProfile value. + * Get specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15. * * @return the diagnosticsProfile value */ @@ -236,7 +236,7 @@ public DiagnosticsProfile diagnosticsProfile() { } /** - * Set the diagnosticsProfile value. + * Set specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15. * * @param diagnosticsProfile the diagnosticsProfile value to set * @return the VirtualMachineUpdate object itself. @@ -247,7 +247,7 @@ public VirtualMachineUpdate withDiagnosticsProfile(DiagnosticsProfile diagnostic } /** - * Get the availabilitySet value. + * Get specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set. * * @return the availabilitySet value */ @@ -256,7 +256,7 @@ public SubResource availabilitySet() { } /** - * Set the availabilitySet value. + * Set specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set. * * @param availabilitySet the availabilitySet value to set * @return the VirtualMachineUpdate object itself. @@ -267,7 +267,7 @@ public VirtualMachineUpdate withAvailabilitySet(SubResource availabilitySet) { } /** - * Get the provisioningState value. + * Get the provisioning state, which only appears in the response. * * @return the provisioningState value */ @@ -276,7 +276,7 @@ public String provisioningState() { } /** - * Get the instanceView value. + * Get the virtual machine instance view. * * @return the instanceView value */ @@ -285,7 +285,7 @@ public VirtualMachineInstanceViewInner instanceView() { } /** - * Get the licenseType value. + * Get specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15. * * @return the licenseType value */ @@ -294,7 +294,7 @@ public String licenseType() { } /** - * Set the licenseType value. + * Set specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15. * * @param licenseType the licenseType value to set * @return the VirtualMachineUpdate object itself. @@ -305,7 +305,7 @@ public VirtualMachineUpdate withLicenseType(String licenseType) { } /** - * Get the vmId value. + * Get specifies the VM unique ID which is a 128-bits identifier that is encoded and stored in all Azure IaaS VMs SMBIOS and can be read using platform BIOS commands. * * @return the vmId value */ @@ -314,7 +314,7 @@ public String vmId() { } /** - * Get the identity value. + * Get the identity of the virtual machine, if configured. * * @return the identity value */ @@ -323,7 +323,7 @@ public VirtualMachineIdentity identity() { } /** - * Set the identity value. + * Set the identity of the virtual machine, if configured. * * @param identity the identity value to set * @return the VirtualMachineUpdate object itself. @@ -334,7 +334,7 @@ public VirtualMachineUpdate withIdentity(VirtualMachineIdentity identity) { } /** - * Get the zones value. + * Get the virtual machine zones. * * @return the zones value */ @@ -343,7 +343,7 @@ public List zones() { } /** - * Set the zones value. + * Set the virtual machine zones. * * @param zones the zones value to set * @return the VirtualMachineUpdate object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachines.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachines.java index 19735474f5b3..1101d7e343c3 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachines.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/VirtualMachines.java @@ -8,21 +8,31 @@ package com.microsoft.azure.management.compute.v2017_12_01; -import com.microsoft.azure.arm.collection.SupportsCreating; -import com.microsoft.azure.arm.resources.collection.SupportsDeletingByResourceGroup; -import com.microsoft.azure.arm.resources.collection.SupportsBatchDeletion; -import com.microsoft.azure.arm.resources.collection.SupportsGettingByResourceGroup; import rx.Observable; -import com.microsoft.azure.arm.resources.collection.SupportsListingByResourceGroup; -import com.microsoft.azure.arm.collection.SupportsListing; -import com.microsoft.azure.management.compute.v2017_12_01.implementation.VirtualMachinesInner; -import com.microsoft.azure.arm.model.HasInner; +import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachine; +import rx.Completable; import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineVirtualMachineSize; /** * Type representing VirtualMachines. */ -public interface VirtualMachines extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner { +public interface VirtualMachines { + /** + * Begins definition for a new VirtualMachine resource. + * @param name resource name. + * @return the first stage of the new VirtualMachine definition. + */ + VirtualMachine.DefinitionStages.Blank defineVirtualMachine(String name); + + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + * @param location The location for which virtual machines under the subscription are queried. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable for the request + */ + Observable listByLocationAsync(final String location); + /** * Captures the VM by copying virtual hard disks of the VM and outputs a template that can be used to create similar VMs. * @@ -34,6 +44,26 @@ public interface VirtualMachines extends SupportsCreating captureAsync(String resourceGroupName, String vmName, VirtualMachineCaptureParameters parameters); + /** + * The operation to delete a virtual machine. + * + * @param resourceGroupName The name of the resource group. + * @param vmName The name of the virtual machine. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable for the request + */ + Observable deleteAsync(String resourceGroupName, String vmName); + + /** + * Retrieves information about the model view or the instance view of a virtual machine. + * + * @param resourceGroupName The name of the resource group. + * @param vmName The name of the virtual machine. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable for the request + */ + Observable getByResourceGroupAsync(String resourceGroupName, String vmName); + /** * Retrieves information about the run-time state of a virtual machine. * @@ -105,7 +135,7 @@ public interface VirtualMachines extends SupportsCreating startAsync(String resourceGroupName, String vmName); /** - * The operation to redeploy a virtual machine. + * Shuts down the virtual machine, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmName The name of the virtual machine. @@ -135,6 +165,23 @@ public interface VirtualMachines extends SupportsCreating runCommandAsync(String resourceGroupName, String vmName, RunCommandInput parameters); + /** + * Lists all of the virtual machines in the specified resource group. Use the nextLink property in the response to get the next page of virtual machines. + * + * @param resourceGroupName The name of the resource group. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable for the request + */ + Observable listByResourceGroupAsync(final String resourceGroupName); + + /** + * Lists all of the virtual machines in the specified subscription. Use the nextLink property in the response to get the next page of virtual machines. + * + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable for the request + */ + Observable listAsync(); + /** * The operation to get all extensions of a Virtual Machine. * diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WinRMConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WinRMConfiguration.java index 30bdcfe1e06e..da00d7ac9051 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WinRMConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WinRMConfiguration.java @@ -22,7 +22,7 @@ public class WinRMConfiguration { private List listeners; /** - * Get the listeners value. + * Get the list of Windows Remote Management listeners. * * @return the listeners value */ @@ -31,7 +31,7 @@ public List listeners() { } /** - * Set the listeners value. + * Set the list of Windows Remote Management listeners. * * @param listeners the listeners value to set * @return the WinRMConfiguration object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WinRMListener.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WinRMListener.java index 66941981f508..0cf0c4c7fafa 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WinRMListener.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WinRMListener.java @@ -38,7 +38,7 @@ public class WinRMListener { private String certificateUrl; /** - * Get the protocol value. + * Get specifies the protocol of listener. <br><br> Possible values are: <br>**http** <br><br> **https**. Possible values include: 'Http', 'Https'. * * @return the protocol value */ @@ -47,7 +47,7 @@ public ProtocolTypes protocol() { } /** - * Set the protocol value. + * Set specifies the protocol of listener. <br><br> Possible values are: <br>**http** <br><br> **https**. Possible values include: 'Http', 'Https'. * * @param protocol the protocol value to set * @return the WinRMListener object itself. @@ -58,7 +58,7 @@ public WinRMListener withProtocol(ProtocolTypes protocol) { } /** - * Get the certificateUrl value. + * Get this is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). In this case, your certificate needs to be It is the Base64 encoding of the following JSON Object which is encoded in UTF-8: <br><br> {<br> "data":"<Base64-encoded-certificate>",<br> "dataType":"pfx",<br> "password":"<pfx-file-password>"<br>}. * * @return the certificateUrl value */ @@ -67,7 +67,7 @@ public String certificateUrl() { } /** - * Set the certificateUrl value. + * Set this is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). In this case, your certificate needs to be It is the Base64 encoding of the following JSON Object which is encoded in UTF-8: <br><br> {<br> "data":"<Base64-encoded-certificate>",<br> "dataType":"pfx",<br> "password":"<pfx-file-password>"<br>}. * * @param certificateUrl the certificateUrl value to set * @return the WinRMListener object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WindowsConfiguration.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WindowsConfiguration.java index a4276da6d0b6..74eb118f148e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WindowsConfiguration.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/WindowsConfiguration.java @@ -53,7 +53,7 @@ public class WindowsConfiguration { private WinRMConfiguration winRM; /** - * Get the provisionVMAgent value. + * Get indicates whether virtual machine agent should be provisioned on the virtual machine. <br><br> When this property is not specified in the request body, default behavior is to set it to true. This will ensure that VM Agent is installed on the VM so that extensions can be added to the VM later. * * @return the provisionVMAgent value */ @@ -62,7 +62,7 @@ public Boolean provisionVMAgent() { } /** - * Set the provisionVMAgent value. + * Set indicates whether virtual machine agent should be provisioned on the virtual machine. <br><br> When this property is not specified in the request body, default behavior is to set it to true. This will ensure that VM Agent is installed on the VM so that extensions can be added to the VM later. * * @param provisionVMAgent the provisionVMAgent value to set * @return the WindowsConfiguration object itself. @@ -73,7 +73,7 @@ public WindowsConfiguration withProvisionVMAgent(Boolean provisionVMAgent) { } /** - * Get the enableAutomaticUpdates value. + * Get indicates whether virtual machine is enabled for automatic updates. * * @return the enableAutomaticUpdates value */ @@ -82,7 +82,7 @@ public Boolean enableAutomaticUpdates() { } /** - * Set the enableAutomaticUpdates value. + * Set indicates whether virtual machine is enabled for automatic updates. * * @param enableAutomaticUpdates the enableAutomaticUpdates value to set * @return the WindowsConfiguration object itself. @@ -93,7 +93,7 @@ public WindowsConfiguration withEnableAutomaticUpdates(Boolean enableAutomaticUp } /** - * Get the timeZone value. + * Get specifies the time zone of the virtual machine. e.g. "Pacific Standard Time". * * @return the timeZone value */ @@ -102,7 +102,7 @@ public String timeZone() { } /** - * Set the timeZone value. + * Set specifies the time zone of the virtual machine. e.g. "Pacific Standard Time". * * @param timeZone the timeZone value to set * @return the WindowsConfiguration object itself. @@ -113,7 +113,7 @@ public WindowsConfiguration withTimeZone(String timeZone) { } /** - * Get the additionalUnattendContent value. + * Get specifies additional base-64 encoded XML formatted information that can be included in the Unattend.xml file, which is used by Windows Setup. * * @return the additionalUnattendContent value */ @@ -122,7 +122,7 @@ public List additionalUnattendContent() { } /** - * Set the additionalUnattendContent value. + * Set specifies additional base-64 encoded XML formatted information that can be included in the Unattend.xml file, which is used by Windows Setup. * * @param additionalUnattendContent the additionalUnattendContent value to set * @return the WindowsConfiguration object itself. @@ -133,7 +133,7 @@ public WindowsConfiguration withAdditionalUnattendContent(List virtualMachines() { } /** - * Set the virtualMachines value. + * Set a list of references to all virtual machines in the availability set. * * @param virtualMachines the virtualMachines value to set * @return the AvailabilitySetInner object itself. @@ -121,7 +121,7 @@ public AvailabilitySetInner withVirtualMachines(List virtualMachine } /** - * Get the statuses value. + * Get the resource status information. * * @return the statuses value */ @@ -130,7 +130,7 @@ public List statuses() { } /** - * Get the sku value. + * Get sku of the availability set. * * @return the sku value */ @@ -139,7 +139,7 @@ public Sku sku() { } /** - * Set the sku value. + * Set sku of the availability set. * * @param sku the sku value to set * @return the AvailabilitySetInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/AvailabilitySetsImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/AvailabilitySetsImpl.java index 6ce355a24014..2a6b514d323c 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/AvailabilitySetsImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/AvailabilitySetsImpl.java @@ -84,10 +84,34 @@ public PagedList listByResourceGroup(String resourceGroupName) public Observable listByResourceGroupAsync(String resourceGroupName) { AvailabilitySetsInner client = this.inner(); return client.listByResourceGroupAsync(resourceGroupName) - .flatMap(new Func1, Observable>() { + .flatMapIterable(new Func1, Iterable>() { @Override - public Observable call(Page innerPage) { - return Observable.from(innerPage.items()); + public Iterable call(Page page) { + return page.items(); + } + }) + .map(new Func1() { + @Override + public AvailabilitySet call(AvailabilitySetInner inner) { + return wrapModel(inner); + } + }); + } + + @Override + public PagedList list() { + AvailabilitySetsInner client = this.inner(); + return this.wrapList(client.list()); + } + + @Override + public Observable listAsync() { + AvailabilitySetsInner client = this.inner(); + return client.listAsync() + .flatMapIterable(new Func1, Iterable>() { + @Override + public Iterable call(Page page) { + return page.items(); } }) .map(new Func1() { diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/AvailabilitySetsInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/AvailabilitySetsInner.java index fa14ad6ae1b6..6375d2cd4d69 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/AvailabilitySetsInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/AvailabilitySetsInner.java @@ -10,9 +10,12 @@ import com.microsoft.azure.arm.collection.InnerSupportsGet; import com.microsoft.azure.arm.collection.InnerSupportsDelete; +import com.microsoft.azure.arm.collection.InnerSupportsListing; import retrofit2.Retrofit; import com.google.common.reflect.TypeToken; +import com.microsoft.azure.AzureServiceFuture; import com.microsoft.azure.CloudException; +import com.microsoft.azure.ListOperationCallback; import com.microsoft.azure.management.compute.v2017_12_01.AvailabilitySetUpdate; import com.microsoft.azure.Page; import com.microsoft.azure.PagedList; @@ -32,6 +35,7 @@ import retrofit2.http.Path; import retrofit2.http.PUT; import retrofit2.http.Query; +import retrofit2.http.Url; import retrofit2.Response; import rx.functions.Func1; import rx.Observable; @@ -40,7 +44,7 @@ * An instance of this class provides access to all the operations defined * in AvailabilitySets. */ -public class AvailabilitySetsInner implements InnerSupportsGet, InnerSupportsDelete { +public class AvailabilitySetsInner implements InnerSupportsGet, InnerSupportsDelete, InnerSupportsListing { /** The Retrofit service to perform REST calls. */ private AvailabilitySetsService service; /** The service client containing this operation class. */ @@ -78,6 +82,10 @@ interface AvailabilitySetsService { @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}") Observable> getByResourceGroup(@Path("resourceGroupName") String resourceGroupName, @Path("availabilitySetName") String availabilitySetName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.AvailabilitySets list" }) + @GET("subscriptions/{subscriptionId}/providers/Microsoft.Compute/availabilitySets") + Observable> list(@Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Query("$expand") String expand, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.AvailabilitySets listByResourceGroup" }) @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets") Observable> listByResourceGroup(@Path("resourceGroupName") String resourceGroupName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); @@ -86,6 +94,14 @@ interface AvailabilitySetsService { @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/vmSizes") Observable> listAvailableSizes(@Path("resourceGroupName") String resourceGroupName, @Path("availabilitySetName") String availabilitySetName, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.AvailabilitySets listNext" }) + @GET + Observable> listNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.AvailabilitySets listByResourceGroupNext" }) + @GET + Observable> listByResourceGroupNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + } /** @@ -449,20 +465,234 @@ private ServiceResponse getByResourceGroupDelegate(Respons .build(response); } + /** + * Lists all availability sets in a subscription. + * + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws CloudException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the PagedList<AvailabilitySetInner> object if successful. + */ + public PagedList list() { + ServiceResponse> response = listSinglePageAsync().toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return listNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists all availability sets in a subscription. + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listAsync(final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + listSinglePageAsync(), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return listNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists all availability sets in a subscription. + * + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object + */ + public Observable> listAsync() { + return listWithServiceResponseAsync() + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists all availability sets in a subscription. + * + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object + */ + public Observable>> listWithServiceResponseAsync() { + return listSinglePageAsync() + .concatMap(new Func1>, Observable>>>() { + @Override + public Observable>> call(ServiceResponse> page) { + String nextPageLink = page.body().nextPageLink(); + if (nextPageLink == null) { + return Observable.just(page); + } + return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists all availability sets in a subscription. + * + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<AvailabilitySetInner> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> listSinglePageAsync() { + if (this.client.subscriptionId() == null) { + throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null."); + } + if (this.client.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); + } + final String expand = null; + return service.list(this.client.subscriptionId(), this.client.apiVersion(), expand, this.client.acceptLanguage(), this.client.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = listDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Lists all availability sets in a subscription. + * + * @param expand The expand expression to apply to the operation. Allowed values are 'instanceView'. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws CloudException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the PagedList<AvailabilitySetInner> object if successful. + */ + public PagedList list(final String expand) { + ServiceResponse> response = listSinglePageAsync(expand).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return listNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists all availability sets in a subscription. + * + * @param expand The expand expression to apply to the operation. Allowed values are 'instanceView'. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listAsync(final String expand, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + listSinglePageAsync(expand), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return listNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists all availability sets in a subscription. + * + * @param expand The expand expression to apply to the operation. Allowed values are 'instanceView'. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object + */ + public Observable> listAsync(final String expand) { + return listWithServiceResponseAsync(expand) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists all availability sets in a subscription. + * + * @param expand The expand expression to apply to the operation. Allowed values are 'instanceView'. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object + */ + public Observable>> listWithServiceResponseAsync(final String expand) { + return listSinglePageAsync(expand) + .concatMap(new Func1>, Observable>>>() { + @Override + public Observable>> call(ServiceResponse> page) { + String nextPageLink = page.body().nextPageLink(); + if (nextPageLink == null) { + return Observable.just(page); + } + return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists all availability sets in a subscription. + * + ServiceResponse> * @param expand The expand expression to apply to the operation. Allowed values are 'instanceView'. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<AvailabilitySetInner> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> listSinglePageAsync(final String expand) { + if (this.client.subscriptionId() == null) { + throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null."); + } + if (this.client.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); + } + return service.list(this.client.subscriptionId(), this.client.apiVersion(), expand, this.client.acceptLanguage(), this.client.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = listDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> listDelegate(Response response) throws CloudException, IOException, IllegalArgumentException { + return this.client.restClient().responseBuilderFactory()., CloudException>newInstance(this.client.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(CloudException.class) + .build(response); + } + /** * Lists all availability sets in a resource group. * * @param resourceGroupName The name of the resource group. - * @return the PagedList object if successful. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws CloudException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the PagedList<AvailabilitySetInner> object if successful. */ - public PagedList listByResourceGroup(String resourceGroupName) { - PageImpl page = new PageImpl<>(); - page.setItems(listByResourceGroupWithServiceResponseAsync(resourceGroupName).toBlocking().single().body()); - page.setNextPageLink(null); - return new PagedList(page) { + public PagedList listByResourceGroup(final String resourceGroupName) { + ServiceResponse> response = listByResourceGroupSinglePageAsync(resourceGroupName).toBlocking().single(); + return new PagedList(response.body()) { @Override public Page nextPage(String nextPageLink) { - return null; + return listByResourceGroupNextSinglePageAsync(nextPageLink).toBlocking().single().body(); } }; } @@ -472,36 +702,67 @@ public Page nextPage(String nextPageLink) { * * @param resourceGroupName The name of the resource group. * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ - public ServiceFuture> listByResourceGroupAsync(String resourceGroupName, final ServiceCallback> serviceCallback) { - return ServiceFuture.fromResponse(listByResourceGroupWithServiceResponseAsync(resourceGroupName), serviceCallback); + public ServiceFuture> listByResourceGroupAsync(final String resourceGroupName, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + listByResourceGroupSinglePageAsync(resourceGroupName), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return listByResourceGroupNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); } /** * Lists all availability sets in a resource group. * * @param resourceGroupName The name of the resource group. - * @return the observable to the List<AvailabilitySetInner> object + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object */ - public Observable> listByResourceGroupAsync(String resourceGroupName) { - return listByResourceGroupWithServiceResponseAsync(resourceGroupName).map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - PageImpl page = new PageImpl<>(); - page.setItems(response.body()); - return page; - } - }); + public Observable> listByResourceGroupAsync(final String resourceGroupName) { + return listByResourceGroupWithServiceResponseAsync(resourceGroupName) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); } /** * Lists all availability sets in a resource group. * * @param resourceGroupName The name of the resource group. - * @return the observable to the List<AvailabilitySetInner> object + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object + */ + public Observable>> listByResourceGroupWithServiceResponseAsync(final String resourceGroupName) { + return listByResourceGroupSinglePageAsync(resourceGroupName) + .concatMap(new Func1>, Observable>>>() { + @Override + public Observable>> call(ServiceResponse> page) { + String nextPageLink = page.body().nextPageLink(); + if (nextPageLink == null) { + return Observable.just(page); + } + return Observable.just(page).concatWith(listByResourceGroupNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists all availability sets in a resource group. + * + ServiceResponse> * @param resourceGroupName The name of the resource group. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<AvailabilitySetInner> object wrapped in {@link ServiceResponse} if successful. */ - public Observable>> listByResourceGroupWithServiceResponseAsync(String resourceGroupName) { + public Observable>> listByResourceGroupSinglePageAsync(final String resourceGroupName) { if (resourceGroupName == null) { throw new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."); } @@ -512,17 +773,12 @@ public Observable>> listByResourceGro throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } return service.listByResourceGroup(resourceGroupName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()) - .flatMap(new Func1, Observable>>>() { + .flatMap(new Func1, Observable>>>() { @Override - public Observable>> call(Response response) { + public Observable>> call(Response response) { try { - ServiceResponse> result = listByResourceGroupDelegate(response); - List items = null; - if (result.body() != null) { - items = result.body().items(); - } - ServiceResponse> clientResponse = new ServiceResponse>(items, result.response()); - return Observable.just(clientResponse); + ServiceResponse> result = listByResourceGroupDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); } catch (Throwable t) { return Observable.error(t); } @@ -530,9 +786,9 @@ public Observable>> call(Response> listByResourceGroupDelegate(Response response) throws CloudException, IOException, IllegalArgumentException { - return this.client.restClient().responseBuilderFactory()., CloudException>newInstance(this.client.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) + private ServiceResponse> listByResourceGroupDelegate(Response response) throws CloudException, IOException, IllegalArgumentException { + return this.client.restClient().responseBuilderFactory()., CloudException>newInstance(this.client.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) .registerError(CloudException.class) .build(response); } @@ -628,4 +884,226 @@ private ServiceResponse> listAvailableSizesDel .build(response); } + /** + * Lists all availability sets in a subscription. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws CloudException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the PagedList<AvailabilitySetInner> object if successful. + */ + public PagedList listNext(final String nextPageLink) { + ServiceResponse> response = listNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return listNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists all availability sets in a subscription. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceFuture object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + listNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return listNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists all availability sets in a subscription. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object + */ + public Observable> listNextAsync(final String nextPageLink) { + return listNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists all availability sets in a subscription. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object + */ + public Observable>> listNextWithServiceResponseAsync(final String nextPageLink) { + return listNextSinglePageAsync(nextPageLink) + .concatMap(new Func1>, Observable>>>() { + @Override + public Observable>> call(ServiceResponse> page) { + String nextPageLink = page.body().nextPageLink(); + if (nextPageLink == null) { + return Observable.just(page); + } + return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists all availability sets in a subscription. + * + ServiceResponse> * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<AvailabilitySetInner> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> listNextSinglePageAsync(final String nextPageLink) { + if (nextPageLink == null) { + throw new IllegalArgumentException("Parameter nextPageLink is required and cannot be null."); + } + String nextUrl = String.format("%s", nextPageLink); + return service.listNext(nextUrl, this.client.acceptLanguage(), this.client.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = listNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> listNextDelegate(Response response) throws CloudException, IOException, IllegalArgumentException { + return this.client.restClient().responseBuilderFactory()., CloudException>newInstance(this.client.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(CloudException.class) + .build(response); + } + + /** + * Lists all availability sets in a resource group. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws CloudException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the PagedList<AvailabilitySetInner> object if successful. + */ + public PagedList listByResourceGroupNext(final String nextPageLink) { + ServiceResponse> response = listByResourceGroupNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return listByResourceGroupNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists all availability sets in a resource group. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceFuture object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listByResourceGroupNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + listByResourceGroupNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return listByResourceGroupNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists all availability sets in a resource group. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object + */ + public Observable> listByResourceGroupNextAsync(final String nextPageLink) { + return listByResourceGroupNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists all availability sets in a resource group. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<AvailabilitySetInner> object + */ + public Observable>> listByResourceGroupNextWithServiceResponseAsync(final String nextPageLink) { + return listByResourceGroupNextSinglePageAsync(nextPageLink) + .concatMap(new Func1>, Observable>>>() { + @Override + public Observable>> call(ServiceResponse> page) { + String nextPageLink = page.body().nextPageLink(); + if (nextPageLink == null) { + return Observable.just(page); + } + return Observable.just(page).concatWith(listByResourceGroupNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists all availability sets in a resource group. + * + ServiceResponse> * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<AvailabilitySetInner> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> listByResourceGroupNextSinglePageAsync(final String nextPageLink) { + if (nextPageLink == null) { + throw new IllegalArgumentException("Parameter nextPageLink is required and cannot be null."); + } + String nextUrl = String.format("%s", nextPageLink); + return service.listByResourceGroupNext(nextUrl, this.client.acceptLanguage(), this.client.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = listByResourceGroupNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> listByResourceGroupNextDelegate(Response response) throws CloudException, IOException, IllegalArgumentException { + return this.client.restClient().responseBuilderFactory()., CloudException>newInstance(this.client.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(CloudException.class) + .build(response); + } + } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ComputeManagementClientImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ComputeManagementClientImpl.java index c8ac26af222b..46548a84784d 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ComputeManagementClientImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ComputeManagementClientImpl.java @@ -10,6 +10,8 @@ import com.microsoft.azure.AzureClient; import com.microsoft.azure.AzureServiceClient; +import com.microsoft.azure.LongRunningFinalState; +import com.microsoft.azure.LongRunningOperationOptions; import com.microsoft.rest.credentials.ServiceClientCredentials; import com.microsoft.rest.RestClient; @@ -63,11 +65,11 @@ public String apiVersion() { return this.apiVersion; } - /** Gets or sets the preferred language for the response. */ + /** The preferred language for the response. */ private String acceptLanguage; /** - * Gets Gets or sets the preferred language for the response. + * Gets The preferred language for the response. * * @return the acceptLanguage value. */ @@ -76,7 +78,7 @@ public String acceptLanguage() { } /** - * Sets Gets or sets the preferred language for the response. + * Sets The preferred language for the response. * * @param acceptLanguage the acceptLanguage value. * @return the service client itself @@ -86,11 +88,11 @@ public ComputeManagementClientImpl withAcceptLanguage(String acceptLanguage) { return this; } - /** Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. */ + /** The retry timeout in seconds for Long Running Operations. Default value is 30. */ private int longRunningOperationRetryTimeout; /** - * Gets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. + * Gets The retry timeout in seconds for Long Running Operations. Default value is 30. * * @return the longRunningOperationRetryTimeout value. */ @@ -99,7 +101,7 @@ public int longRunningOperationRetryTimeout() { } /** - * Sets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. + * Sets The retry timeout in seconds for Long Running Operations. Default value is 30. * * @param longRunningOperationRetryTimeout the longRunningOperationRetryTimeout value. * @return the service client itself @@ -109,11 +111,11 @@ public ComputeManagementClientImpl withLongRunningOperationRetryTimeout(int long return this; } - /** When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. */ + /** Whether a unique x-ms-client-request-id should be generated. When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. */ private boolean generateClientRequestId; /** - * Gets When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. + * Gets Whether a unique x-ms-client-request-id should be generated. When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. * * @return the generateClientRequestId value. */ @@ -122,7 +124,7 @@ public boolean generateClientRequestId() { } /** - * Sets When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. + * Sets Whether a unique x-ms-client-request-id should be generated. When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. * * @param generateClientRequestId the generateClientRequestId value. * @return the service client itself @@ -387,6 +389,6 @@ protected void initialize() { */ @Override public String userAgent() { - return String.format("%s (%s, %s)", super.userAgent(), "ComputeManagementClient", "2017-12-01"); + return String.format("%s (%s, %s, auto-generated)", super.userAgent(), "ComputeManagementClient", "2017-12-01"); } } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ComputeOperationValueInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ComputeOperationValueInner.java index e82311886fd3..c41754b4b0ac 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ComputeOperationValueInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ComputeOperationValueInner.java @@ -53,7 +53,7 @@ public class ComputeOperationValueInner { private String provider; /** - * Get the origin value. + * Get the origin of the compute operation. * * @return the origin value */ @@ -62,7 +62,7 @@ public String origin() { } /** - * Get the name value. + * Get the name of the compute operation. * * @return the name value */ @@ -71,7 +71,7 @@ public String name() { } /** - * Get the operation value. + * Get the display name of the compute operation. * * @return the operation value */ @@ -80,7 +80,7 @@ public String operation() { } /** - * Get the resource value. + * Get the display name of the resource the operation applies to. * * @return the resource value */ @@ -89,7 +89,7 @@ public String resource() { } /** - * Get the description value. + * Get the description of the operation. * * @return the description value */ @@ -98,7 +98,7 @@ public String description() { } /** - * Get the provider value. + * Get the resource provider for the operation. * * @return the provider value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ImageInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ImageInner.java index 8677533dc069..e1f7806ff729 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ImageInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/ImageInner.java @@ -40,7 +40,7 @@ public class ImageInner extends Resource { private String provisioningState; /** - * Get the sourceVirtualMachine value. + * Get the source virtual machine from which Image is created. * * @return the sourceVirtualMachine value */ @@ -49,7 +49,7 @@ public SubResource sourceVirtualMachine() { } /** - * Set the sourceVirtualMachine value. + * Set the source virtual machine from which Image is created. * * @param sourceVirtualMachine the sourceVirtualMachine value to set * @return the ImageInner object itself. @@ -60,7 +60,7 @@ public ImageInner withSourceVirtualMachine(SubResource sourceVirtualMachine) { } /** - * Get the storageProfile value. + * Get specifies the storage settings for the virtual machine disks. * * @return the storageProfile value */ @@ -69,7 +69,7 @@ public ImageStorageProfile storageProfile() { } /** - * Set the storageProfile value. + * Set specifies the storage settings for the virtual machine disks. * * @param storageProfile the storageProfile value to set * @return the ImageInner object itself. @@ -80,7 +80,7 @@ public ImageInner withStorageProfile(ImageStorageProfile storageProfile) { } /** - * Get the provisioningState value. + * Get the provisioning state. * * @return the provisioningState value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/LogAnalyticsInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/LogAnalyticsInner.java index 80dd9094b0d0..6356a7bd0d9e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/LogAnalyticsInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/LogAnalyticsInner.java @@ -28,6 +28,8 @@ import retrofit2.Response; import rx.functions.Func1; import rx.Observable; +import com.microsoft.azure.LongRunningFinalState; +import com.microsoft.azure.LongRunningOperationOptions; /** * An instance of this class provides access to all the operations defined @@ -140,7 +142,7 @@ public Observable> exportReque } Validator.validate(parameters); Observable> observable = service.exportRequestRateByInterval(location, this.client.subscriptionId(), parameters, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -298,7 +300,7 @@ public Observable> exportThrot } Validator.validate(parameters); Observable> observable = service.exportThrottledRequests(location, this.client.subscriptionId(), parameters, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/LogAnalyticsOperationResultInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/LogAnalyticsOperationResultInner.java index 86e31eb7330c..afca07fcf051 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/LogAnalyticsOperationResultInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/LogAnalyticsOperationResultInner.java @@ -22,7 +22,7 @@ public class LogAnalyticsOperationResultInner extends OperationStatusResponseInn private LogAnalyticsOutput properties; /** - * Get the properties value. + * Get logAnalyticsOutput. * * @return the properties value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/OperationStatusResponseInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/OperationStatusResponseInner.java index 66f3b7784f70..ef1d5db2a087 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/OperationStatusResponseInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/OperationStatusResponseInner.java @@ -47,7 +47,7 @@ public class OperationStatusResponseInner { private ApiError error; /** - * Get the name value. + * Get operation ID. * * @return the name value */ @@ -56,7 +56,7 @@ public String name() { } /** - * Get the status value. + * Get operation status. * * @return the status value */ @@ -65,7 +65,7 @@ public String status() { } /** - * Get the startTime value. + * Get start time of the operation. * * @return the startTime value */ @@ -74,7 +74,7 @@ public DateTime startTime() { } /** - * Get the endTime value. + * Get end time of the operation. * * @return the endTime value */ @@ -83,7 +83,7 @@ public DateTime endTime() { } /** - * Get the error value. + * Get api error. * * @return the error value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/OperationsImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/OperationsImpl.java index abee543a7818..fc45996cbeec 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/OperationsImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/OperationsImpl.java @@ -37,7 +37,8 @@ public Observable listAsync() { public Observable call(List innerList) { return Observable.from(innerList); } - }) .map(new Func1() { + }) + .map(new Func1() { @Override public ComputeOperationValue call(ComputeOperationValueInner inner) { return new ComputeOperationValueImpl(inner, manager()); diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RecoveryWalkResponseInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RecoveryWalkResponseInner.java index c77b8cec2975..c58bd81dfb02 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RecoveryWalkResponseInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RecoveryWalkResponseInner.java @@ -28,7 +28,7 @@ public class RecoveryWalkResponseInner { private Integer nextPlatformUpdateDomain; /** - * Get the walkPerformed value. + * Get whether the recovery walk was performed. * * @return the walkPerformed value */ @@ -37,7 +37,7 @@ public Boolean walkPerformed() { } /** - * Get the nextPlatformUpdateDomain value. + * Get the next update domain that needs to be walked. Null means walk spanning all update domains has been completed. * * @return the nextPlatformUpdateDomain value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RollingUpgradeStatusInfoInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RollingUpgradeStatusInfoInner.java index 0af22fd1bbf4..3e41bafe67f3 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RollingUpgradeStatusInfoInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RollingUpgradeStatusInfoInner.java @@ -47,7 +47,7 @@ public class RollingUpgradeStatusInfoInner extends Resource { private ApiError error; /** - * Get the policy value. + * Get the rolling upgrade policies applied for this upgrade. * * @return the policy value */ @@ -56,7 +56,7 @@ public RollingUpgradePolicy policy() { } /** - * Get the runningStatus value. + * Get information about the current running state of the overall upgrade. * * @return the runningStatus value */ @@ -65,7 +65,7 @@ public RollingUpgradeRunningStatus runningStatus() { } /** - * Get the progress value. + * Get information about the number of virtual machine instances in each upgrade state. * * @return the progress value */ @@ -74,7 +74,7 @@ public RollingUpgradeProgressInfo progress() { } /** - * Get the error value. + * Get error details for this upgrade, if there are any. * * @return the error value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandDocumentBaseInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandDocumentBaseInner.java index 11ee1a247b1e..2123b1fcaade 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandDocumentBaseInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandDocumentBaseInner.java @@ -46,7 +46,7 @@ public class RunCommandDocumentBaseInner { private String description; /** - * Get the schema value. + * Get the VM run command schema. * * @return the schema value */ @@ -55,7 +55,7 @@ public String schema() { } /** - * Set the schema value. + * Set the VM run command schema. * * @param schema the schema value to set * @return the RunCommandDocumentBaseInner object itself. @@ -66,7 +66,7 @@ public RunCommandDocumentBaseInner withSchema(String schema) { } /** - * Get the id value. + * Get the VM run command id. * * @return the id value */ @@ -75,7 +75,7 @@ public String id() { } /** - * Set the id value. + * Set the VM run command id. * * @param id the id value to set * @return the RunCommandDocumentBaseInner object itself. @@ -86,7 +86,7 @@ public RunCommandDocumentBaseInner withId(String id) { } /** - * Get the osType value. + * Get the Operating System type. Possible values include: 'Windows', 'Linux'. * * @return the osType value */ @@ -95,7 +95,7 @@ public OperatingSystemTypes osType() { } /** - * Set the osType value. + * Set the Operating System type. Possible values include: 'Windows', 'Linux'. * * @param osType the osType value to set * @return the RunCommandDocumentBaseInner object itself. @@ -106,7 +106,7 @@ public RunCommandDocumentBaseInner withOsType(OperatingSystemTypes osType) { } /** - * Get the label value. + * Get the VM run command label. * * @return the label value */ @@ -115,7 +115,7 @@ public String label() { } /** - * Set the label value. + * Set the VM run command label. * * @param label the label value to set * @return the RunCommandDocumentBaseInner object itself. @@ -126,7 +126,7 @@ public RunCommandDocumentBaseInner withLabel(String label) { } /** - * Get the description value. + * Get the VM run command description. * * @return the description value */ @@ -135,7 +135,7 @@ public String description() { } /** - * Set the description value. + * Set the VM run command description. * * @param description the description value to set * @return the RunCommandDocumentBaseInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandDocumentImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandDocumentImpl.java index 090c559e1f0b..50cb3bc33ff4 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandDocumentImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandDocumentImpl.java @@ -23,6 +23,7 @@ class RunCommandDocumentImpl extends IndexableRefreshableWrapperImpl parameters; /** - * Get the script value. + * Get the script to be executed. * * @return the script value */ @@ -38,7 +38,7 @@ public List script() { } /** - * Set the script value. + * Set the script to be executed. * * @param script the script value to set * @return the RunCommandDocumentInner object itself. @@ -49,7 +49,7 @@ public RunCommandDocumentInner withScript(List script) { } /** - * Get the parameters value. + * Get the parameters used by the script. * * @return the parameters value */ @@ -58,7 +58,7 @@ public List parameters() { } /** - * Set the parameters value. + * Set the parameters used by the script. * * @param parameters the parameters value to set * @return the RunCommandDocumentInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandResultInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandResultInner.java index cec1487a8d06..ee7ce16a0929 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandResultInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/RunCommandResultInner.java @@ -23,7 +23,7 @@ public class RunCommandResultInner extends OperationStatusResponseInner { private Object output; /** - * Get the output value. + * Get operation output data (raw JSON). * * @return the output value */ @@ -32,7 +32,7 @@ public Object output() { } /** - * Set the output value. + * Set operation output data (raw JSON). * * @param output the output value to set * @return the RunCommandResultInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/UpgradeOperationHistoricalStatusInfoInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/UpgradeOperationHistoricalStatusInfoInner.java index 4a918adffc9f..07cce45a581b 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/UpgradeOperationHistoricalStatusInfoInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/UpgradeOperationHistoricalStatusInfoInner.java @@ -34,7 +34,7 @@ public class UpgradeOperationHistoricalStatusInfoInner { private String location; /** - * Get the properties value. + * Get information about the properties of the upgrade operation. * * @return the properties value */ @@ -43,7 +43,7 @@ public UpgradeOperationHistoricalStatusInfoProperties properties() { } /** - * Get the type value. + * Get resource type. * * @return the type value */ @@ -52,7 +52,7 @@ public String type() { } /** - * Get the location value. + * Get resource location. * * @return the location value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/UsageInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/UsageInner.java index 842f01bf0fea..294d2ffaef27 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/UsageInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/UsageInner.java @@ -41,13 +41,16 @@ public class UsageInner { /** * Creates an instance of UsageInner class. + * @param currentValue the current usage of the resource. + * @param limit the maximum permitted usage of the resource. + * @param name the name of the type of usage. */ public UsageInner() { unit = "Count"; } /** - * Get the unit value. + * Get an enum describing the unit of usage measurement. * * @return the unit value */ @@ -56,7 +59,7 @@ public String unit() { } /** - * Set the unit value. + * Set an enum describing the unit of usage measurement. * * @param unit the unit value to set * @return the UsageInner object itself. @@ -67,7 +70,7 @@ public UsageInner withUnit(String unit) { } /** - * Get the currentValue value. + * Get the current usage of the resource. * * @return the currentValue value */ @@ -76,7 +79,7 @@ public int currentValue() { } /** - * Set the currentValue value. + * Set the current usage of the resource. * * @param currentValue the currentValue value to set * @return the UsageInner object itself. @@ -87,7 +90,7 @@ public UsageInner withCurrentValue(int currentValue) { } /** - * Get the limit value. + * Get the maximum permitted usage of the resource. * * @return the limit value */ @@ -96,7 +99,7 @@ public long limit() { } /** - * Set the limit value. + * Set the maximum permitted usage of the resource. * * @param limit the limit value to set * @return the UsageInner object itself. @@ -107,7 +110,7 @@ public UsageInner withLimit(long limit) { } /** - * Get the name value. + * Get the name of the type of usage. * * @return the name value */ @@ -116,7 +119,7 @@ public UsageName name() { } /** - * Set the name value. + * Set the name of the type of usage. * * @param name the name value to set * @return the UsageInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineCaptureResultInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineCaptureResultInner.java index 80219944631c..7e63454abbd1 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineCaptureResultInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineCaptureResultInner.java @@ -24,7 +24,7 @@ public class VirtualMachineCaptureResultInner extends SubResource { private Object output; /** - * Get the output value. + * Get operation output data (raw JSON). * * @return the output value */ @@ -33,7 +33,7 @@ public Object output() { } /** - * Set the output value. + * Set operation output data (raw JSON). * * @param output the output value to set * @return the VirtualMachineCaptureResultInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionImageImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionImageImpl.java index 23f6e02a5548..cdc467336912 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionImageImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionImageImpl.java @@ -23,6 +23,7 @@ class VirtualMachineExtensionImageImpl extends IndexableRefreshableWrapperImpl getVirtualMachineExtension public Observable getAsync(String location, String publisherName, String type, String version) { VirtualMachineExtensionImagesInner client = this.inner(); return client.getAsync(location, publisherName, type, version) - .map(new Func1() { + .flatMap(new Func1>() { @Override - public VirtualMachineExtensionImage call(VirtualMachineExtensionImageInner inner) { - return wrapVirtualMachineExtensionImageModel(inner); + public Observable call(VirtualMachineExtensionImageInner inner) { + if (inner == null) { + return Observable.empty(); + } else { + return Observable.just((VirtualMachineExtensionImage)wrapVirtualMachineExtensionImageModel(inner)); + } } }); } @@ -80,7 +84,8 @@ public Observable listTypesAsync(String location, public Observable call(List innerList) { return Observable.from(innerList); } - }) .map(new Func1() { + }) + .map(new Func1() { @Override public VirtualMachineExtensionImage call(VirtualMachineExtensionImageInner inner) { return new VirtualMachineExtensionImageImpl(inner, manager()); diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionImpl.java index f8db1948936e..fbf810b9e0e3 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionImpl.java @@ -37,7 +37,7 @@ class VirtualMachineExtensionImpl extends CreatableUpdatableImpl implements VirtualMachineExtensions { private final ComputeManager manager; @@ -29,26 +29,38 @@ public ComputeManager manager() { } @Override - public VirtualMachineExtensionImpl define(String name) { - return wrapModel(name); + public VirtualMachineExtensionImpl defineExtension(String name) { + return wrapExtensionModel(name); + } + + private VirtualMachineExtensionImpl wrapExtensionModel(String name) { + return new VirtualMachineExtensionImpl(name, this.manager()); } - private VirtualMachineExtensionImpl wrapModel(VirtualMachineExtensionInner inner) { + private VirtualMachineExtensionImpl wrapVirtualMachineExtensionModel(VirtualMachineExtensionInner inner) { return new VirtualMachineExtensionImpl(inner, manager()); } - private VirtualMachineExtensionImpl wrapModel(String name) { - return new VirtualMachineExtensionImpl(name, this.manager()); + private Observable getVirtualMachineExtensionInnerUsingVirtualMachineExtensionsInnerAsync(String id) { + String resourceGroupName = IdParsingUtils.getValueFromIdByName(id, "resourceGroups"); + String vmName = IdParsingUtils.getValueFromIdByName(id, "virtualMachines"); + String vmExtensionName = IdParsingUtils.getValueFromIdByName(id, "extensions"); + VirtualMachineExtensionsInner client = this.inner(); + return client.getAsync(resourceGroupName, vmName, vmExtensionName); } @Override public Observable getAsync(String resourceGroupName, String vmName, String vmExtensionName) { VirtualMachineExtensionsInner client = this.inner(); return client.getAsync(resourceGroupName, vmName, vmExtensionName) - .map(new Func1() { + .flatMap(new Func1>() { @Override - public VirtualMachineExtension call(VirtualMachineExtensionInner inner) { - return wrapModel(inner); + public Observable call(VirtualMachineExtensionInner inner) { + if (inner == null) { + return Observable.empty(); + } else { + return Observable.just((VirtualMachineExtension)wrapVirtualMachineExtensionModel(inner)); + } } }); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionsListResultInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionsListResultInner.java index d253ec1fb1bf..6bdfbf7e4e3f 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionsListResultInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineExtensionsListResultInner.java @@ -22,7 +22,7 @@ public class VirtualMachineExtensionsListResultInner { private List value; /** - * Get the value value. + * Get the list of extensions. * * @return the value value */ @@ -31,7 +31,7 @@ public List value() { } /** - * Set the value value. + * Set the list of extensions. * * @param value the value value to set * @return the VirtualMachineExtensionsListResultInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImageImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImageImpl.java index a0414d563497..6192c7a1a107 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImageImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImageImpl.java @@ -28,6 +28,7 @@ class VirtualMachineImageImpl extends IndexableRefreshableWrapperImpl tags; /** - * Get the name value. + * Get the name of the resource. * * @return the name value */ @@ -46,7 +46,7 @@ public String name() { } /** - * Set the name value. + * Set the name of the resource. * * @param name the name value to set * @return the VirtualMachineImageResourceInner object itself. @@ -57,7 +57,7 @@ public VirtualMachineImageResourceInner withName(String name) { } /** - * Get the location value. + * Get the supported Azure location of the resource. * * @return the location value */ @@ -66,7 +66,7 @@ public String location() { } /** - * Set the location value. + * Set the supported Azure location of the resource. * * @param location the location value to set * @return the VirtualMachineImageResourceInner object itself. @@ -77,7 +77,7 @@ public VirtualMachineImageResourceInner withLocation(String location) { } /** - * Get the tags value. + * Get specifies the tags that are assigned to the virtual machine. For more information about using tags, see [Using tags to organize your Azure resources](https://docs.microsoft.com/azure/azure-resource-manager/resource-group-using-tags.md). * * @return the tags value */ @@ -86,7 +86,7 @@ public Map tags() { } /** - * Set the tags value. + * Set specifies the tags that are assigned to the virtual machine. For more information about using tags, see [Using tags to organize your Azure resources](https://docs.microsoft.com/azure/azure-resource-manager/resource-group-using-tags.md). * * @param tags the tags value to set * @return the VirtualMachineImageResourceInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImagesImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImagesImpl.java index 2ed07babff36..3c1d0f342b5f 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImagesImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImagesImpl.java @@ -69,10 +69,14 @@ public VirtualMachineImageResource call(VirtualMachineImageResourceInner inner) public Observable getAsync(String location, String publisherName, String offer, String skus, String version) { VirtualMachineImagesInner client = this.inner(); return client.getAsync(location, publisherName, offer, skus, version) - .map(new Func1() { + .flatMap(new Func1>() { @Override - public VirtualMachineImage call(VirtualMachineImageInner inner) { - return wrapVirtualMachineImageModel(inner); + public Observable call(VirtualMachineImageInner inner) { + if (inner == null) { + return Observable.empty(); + } else { + return Observable.just((VirtualMachineImage)wrapVirtualMachineImageModel(inner)); + } } }); } @@ -110,7 +114,8 @@ public Observable listOffersAsync(String location, public Observable call(List innerList) { return Observable.from(innerList); } - }) .map(new Func1() { + }) + .map(new Func1() { @Override public VirtualMachineImageResource call(VirtualMachineImageResourceInner inner) { return new VirtualMachineImageResourceImpl(inner, manager()); diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImagesInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImagesInner.java index b98dbb36d309..b765f62f54c5 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImagesInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImagesInner.java @@ -58,7 +58,7 @@ interface VirtualMachineImagesService { @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineImages list" }) @GET("subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions") - Observable> list(@Path("location") String location, @Path("publisherName") String publisherName, @Path("offer") String offer, @Path("skus") String skus, @Path("subscriptionId") String subscriptionId, @Query("$filter") String filter, @Query("$top") Integer top, @Query("$orderby") String orderby, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + Observable> list(@Path("location") String location, @Path("publisherName") String publisherName, @Path("offer") String offer, @Path("skus") String skus, @Path("subscriptionId") String subscriptionId, @Query("$expand") String expand, @Query("$top") Integer top, @Query("$orderby") String orderby, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineImages listOffers" }) @GET("subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers") @@ -260,10 +260,10 @@ public Observable>> listW if (this.client.apiVersion() == null) { throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } - final String filter = null; + final String expand = null; final Integer top = null; final String orderby = null; - return service.list(location, publisherName, offer, skus, this.client.subscriptionId(), filter, top, orderby, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()) + return service.list(location, publisherName, offer, skus, this.client.subscriptionId(), expand, top, orderby, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()) .flatMap(new Func1, Observable>>>() { @Override public Observable>> call(Response response) { @@ -284,7 +284,7 @@ public Observable>> call( * @param publisherName A valid image publisher. * @param offer A valid image publisher offer. * @param skus A valid image SKU. - * @param filter The filter to apply on the operation. + * @param expand The expand expression to apply on the operation. * @param top the Integer value * @param orderby the String value * @throws IllegalArgumentException thrown if parameters fail the validation @@ -292,8 +292,8 @@ public Observable>> call( * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent * @return the List<VirtualMachineImageResourceInner> object if successful. */ - public List list(String location, String publisherName, String offer, String skus, String filter, Integer top, String orderby) { - return listWithServiceResponseAsync(location, publisherName, offer, skus, filter, top, orderby).toBlocking().single().body(); + public List list(String location, String publisherName, String offer, String skus, String expand, Integer top, String orderby) { + return listWithServiceResponseAsync(location, publisherName, offer, skus, expand, top, orderby).toBlocking().single().body(); } /** @@ -303,15 +303,15 @@ public List list(String location, String publi * @param publisherName A valid image publisher. * @param offer A valid image publisher offer. * @param skus A valid image SKU. - * @param filter The filter to apply on the operation. + * @param expand The expand expression to apply on the operation. * @param top the Integer value * @param orderby the String value * @param serviceCallback the async ServiceCallback to handle successful and failed responses. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ - public ServiceFuture> listAsync(String location, String publisherName, String offer, String skus, String filter, Integer top, String orderby, final ServiceCallback> serviceCallback) { - return ServiceFuture.fromResponse(listWithServiceResponseAsync(location, publisherName, offer, skus, filter, top, orderby), serviceCallback); + public ServiceFuture> listAsync(String location, String publisherName, String offer, String skus, String expand, Integer top, String orderby, final ServiceCallback> serviceCallback) { + return ServiceFuture.fromResponse(listWithServiceResponseAsync(location, publisherName, offer, skus, expand, top, orderby), serviceCallback); } /** @@ -321,14 +321,14 @@ public ServiceFuture> listAsync(String lo * @param publisherName A valid image publisher. * @param offer A valid image publisher offer. * @param skus A valid image SKU. - * @param filter The filter to apply on the operation. + * @param expand The expand expression to apply on the operation. * @param top the Integer value * @param orderby the String value * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the List<VirtualMachineImageResourceInner> object */ - public Observable> listAsync(String location, String publisherName, String offer, String skus, String filter, Integer top, String orderby) { - return listWithServiceResponseAsync(location, publisherName, offer, skus, filter, top, orderby).map(new Func1>, List>() { + public Observable> listAsync(String location, String publisherName, String offer, String skus, String expand, Integer top, String orderby) { + return listWithServiceResponseAsync(location, publisherName, offer, skus, expand, top, orderby).map(new Func1>, List>() { @Override public List call(ServiceResponse> response) { return response.body(); @@ -343,13 +343,13 @@ public List call(ServiceResponse>> listWithServiceResponseAsync(String location, String publisherName, String offer, String skus, String filter, Integer top, String orderby) { + public Observable>> listWithServiceResponseAsync(String location, String publisherName, String offer, String skus, String expand, Integer top, String orderby) { if (location == null) { throw new IllegalArgumentException("Parameter location is required and cannot be null."); } @@ -368,7 +368,7 @@ public Observable>> listW if (this.client.apiVersion() == null) { throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } - return service.list(location, publisherName, offer, skus, this.client.subscriptionId(), filter, top, orderby, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()) + return service.list(location, publisherName, offer, skus, this.client.subscriptionId(), expand, top, orderby, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()) .flatMap(new Func1, Observable>>>() { @Override public Observable>> call(Response response) { diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImpl.java index ed1c149f6270..5ba1dc9a9f53 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineImpl.java @@ -8,10 +8,11 @@ package com.microsoft.azure.management.compute.v2017_12_01.implementation; -import com.microsoft.azure.arm.resources.models.implementation.GroupableResourceCoreImpl; import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachine; +import com.microsoft.azure.arm.model.implementation.CreatableUpdatableImpl; import rx.Observable; import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineUpdate; +import java.util.Map; import com.microsoft.azure.SubResource; import java.util.List; import com.microsoft.azure.management.compute.v2017_12_01.Plan; @@ -26,17 +27,42 @@ import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineExtension; import rx.functions.Func1; -class VirtualMachineImpl extends GroupableResourceCoreImpl implements VirtualMachine, VirtualMachine.Definition, VirtualMachine.Update { +class VirtualMachineImpl extends CreatableUpdatableImpl implements VirtualMachine, VirtualMachine.Definition, VirtualMachine.Update { + private final ComputeManager manager; + private String resourceGroupName; + private String vmName; private VirtualMachineUpdate updateParameter; - VirtualMachineImpl(String name, VirtualMachineInner inner, ComputeManager manager) { - super(name, inner, manager); + + VirtualMachineImpl(String name, ComputeManager manager) { + super(name, new VirtualMachineInner()); + this.manager = manager; + // Set resource name + this.vmName = name; + // this.updateParameter = new VirtualMachineUpdate(); } + VirtualMachineImpl(VirtualMachineInner inner, ComputeManager manager) { + super(inner.name(), inner); + this.manager = manager; + // Set resource name + this.vmName = inner.name(); + // set resource ancestor and positional variables + this.resourceGroupName = IdParsingUtils.getValueFromIdByName(inner.id(), "resourceGroups"); + this.vmName = IdParsingUtils.getValueFromIdByName(inner.id(), "virtualMachines"); + // + this.updateParameter = new VirtualMachineUpdate(); + } + + @Override + public ComputeManager manager() { + return this.manager; + } + @Override public Observable createResourceAsync() { VirtualMachinesInner client = this.manager().inner().virtualMachines(); - return client.createOrUpdateAsync(this.resourceGroupName(), this.name(), this.inner()) + return client.createOrUpdateAsync(this.resourceGroupName, this.vmName, this.inner()) .map(new Func1() { @Override public VirtualMachineInner call(VirtualMachineInner resource) { @@ -50,7 +76,7 @@ public VirtualMachineInner call(VirtualMachineInner resource) { @Override public Observable updateResourceAsync() { VirtualMachinesInner client = this.manager().inner().virtualMachines(); - return client.updateAsync(this.resourceGroupName(), this.name(), this.updateParameter) + return client.updateAsync(this.resourceGroupName, this.vmName, this.updateParameter) .map(new Func1() { @Override public VirtualMachineInner call(VirtualMachineInner resource) { @@ -64,7 +90,7 @@ public VirtualMachineInner call(VirtualMachineInner resource) { @Override protected Observable getInnerAsync() { VirtualMachinesInner client = this.manager().inner().virtualMachines(); - return client.getByResourceGroupAsync(this.resourceGroupName(), this.name()); + return null; // NOP getInnerAsync implementation as get is not supported } @Override @@ -91,6 +117,11 @@ public HardwareProfile hardwareProfile() { return this.inner().hardwareProfile(); } + @Override + public String id() { + return this.inner().id(); + } + @Override public VirtualMachineIdentity identity() { return this.inner().identity(); @@ -111,6 +142,16 @@ public String licenseType() { return this.inner().licenseType(); } + @Override + public String location() { + return this.inner().location(); + } + + @Override + public String name() { + return this.inner().name(); + } + @Override public NetworkProfile networkProfile() { return this.inner().networkProfile(); @@ -147,6 +188,16 @@ public StorageProfile storageProfile() { return this.inner().storageProfile(); } + @Override + public Map tags() { + return this.inner().getTags(); + } + + @Override + public String type() { + return this.inner().type(); + } + @Override public String vmId() { return this.inner().vmId(); @@ -157,6 +208,18 @@ public List zones() { return this.inner().zones(); } + @Override + public VirtualMachineImpl withExistingLocation(String resourceGroupName) { + this.resourceGroupName = resourceGroupName; + return this; + } + + @Override + public VirtualMachineImpl withLocation(String location) { + this.inner().withLocation(location); + return this; + } + @Override public VirtualMachineImpl withAvailabilitySet(SubResource availabilitySet) { if (isInCreateMode()) { @@ -247,6 +310,16 @@ public VirtualMachineImpl withStorageProfile(StorageProfile storageProfile) { return this; } + @Override + public VirtualMachineImpl withTags(Map tags) { + if (isInCreateMode()) { + this.inner().withTags(tags); + } else { + this.updateParameter.withTags(tags); + } + return this; + } + @Override public VirtualMachineImpl withZones(List zones) { if (isInCreateMode()) { diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineInner.java index ab7e4d2768d9..ad4cfc3deddd 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineInner.java @@ -76,7 +76,7 @@ public class VirtualMachineInner extends Resource { * availability. For more information about availability sets, see [Manage * the availability of virtual * machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). - * <br><br> For more information on Azure planned maintainance, + * <br><br> For more information on Azure planned maintenance, * see [Planned maintenance for virtual machines in * Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) * <br><br> Currently, a VM can only be added to availability @@ -140,7 +140,7 @@ public class VirtualMachineInner extends Resource { private List zones; /** - * Get the plan value. + * Get specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**. * * @return the plan value */ @@ -149,7 +149,7 @@ public Plan plan() { } /** - * Set the plan value. + * Set specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**. * * @param plan the plan value to set * @return the VirtualMachineInner object itself. @@ -160,7 +160,7 @@ public VirtualMachineInner withPlan(Plan plan) { } /** - * Get the hardwareProfile value. + * Get specifies the hardware settings for the virtual machine. * * @return the hardwareProfile value */ @@ -169,7 +169,7 @@ public HardwareProfile hardwareProfile() { } /** - * Set the hardwareProfile value. + * Set specifies the hardware settings for the virtual machine. * * @param hardwareProfile the hardwareProfile value to set * @return the VirtualMachineInner object itself. @@ -180,7 +180,7 @@ public VirtualMachineInner withHardwareProfile(HardwareProfile hardwareProfile) } /** - * Get the storageProfile value. + * Get specifies the storage settings for the virtual machine disks. * * @return the storageProfile value */ @@ -189,7 +189,7 @@ public StorageProfile storageProfile() { } /** - * Set the storageProfile value. + * Set specifies the storage settings for the virtual machine disks. * * @param storageProfile the storageProfile value to set * @return the VirtualMachineInner object itself. @@ -200,7 +200,7 @@ public VirtualMachineInner withStorageProfile(StorageProfile storageProfile) { } /** - * Get the osProfile value. + * Get specifies the operating system settings for the virtual machine. * * @return the osProfile value */ @@ -209,7 +209,7 @@ public OSProfile osProfile() { } /** - * Set the osProfile value. + * Set specifies the operating system settings for the virtual machine. * * @param osProfile the osProfile value to set * @return the VirtualMachineInner object itself. @@ -220,7 +220,7 @@ public VirtualMachineInner withOsProfile(OSProfile osProfile) { } /** - * Get the networkProfile value. + * Get specifies the network interfaces of the virtual machine. * * @return the networkProfile value */ @@ -229,7 +229,7 @@ public NetworkProfile networkProfile() { } /** - * Set the networkProfile value. + * Set specifies the network interfaces of the virtual machine. * * @param networkProfile the networkProfile value to set * @return the VirtualMachineInner object itself. @@ -240,7 +240,7 @@ public VirtualMachineInner withNetworkProfile(NetworkProfile networkProfile) { } /** - * Get the diagnosticsProfile value. + * Get specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15. * * @return the diagnosticsProfile value */ @@ -249,7 +249,7 @@ public DiagnosticsProfile diagnosticsProfile() { } /** - * Set the diagnosticsProfile value. + * Set specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15. * * @param diagnosticsProfile the diagnosticsProfile value to set * @return the VirtualMachineInner object itself. @@ -260,7 +260,7 @@ public VirtualMachineInner withDiagnosticsProfile(DiagnosticsProfile diagnostics } /** - * Get the availabilitySet value. + * Get specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set. * * @return the availabilitySet value */ @@ -269,7 +269,7 @@ public SubResource availabilitySet() { } /** - * Set the availabilitySet value. + * Set specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set. * * @param availabilitySet the availabilitySet value to set * @return the VirtualMachineInner object itself. @@ -280,7 +280,7 @@ public VirtualMachineInner withAvailabilitySet(SubResource availabilitySet) { } /** - * Get the provisioningState value. + * Get the provisioning state, which only appears in the response. * * @return the provisioningState value */ @@ -289,7 +289,7 @@ public String provisioningState() { } /** - * Get the instanceView value. + * Get the virtual machine instance view. * * @return the instanceView value */ @@ -298,7 +298,7 @@ public VirtualMachineInstanceViewInner instanceView() { } /** - * Get the licenseType value. + * Get specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15. * * @return the licenseType value */ @@ -307,7 +307,7 @@ public String licenseType() { } /** - * Set the licenseType value. + * Set specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15. * * @param licenseType the licenseType value to set * @return the VirtualMachineInner object itself. @@ -318,7 +318,7 @@ public VirtualMachineInner withLicenseType(String licenseType) { } /** - * Get the vmId value. + * Get specifies the VM unique ID which is a 128-bits identifier that is encoded and stored in all Azure IaaS VMs SMBIOS and can be read using platform BIOS commands. * * @return the vmId value */ @@ -327,7 +327,7 @@ public String vmId() { } /** - * Get the resources value. + * Get the virtual machine child extension resources. * * @return the resources value */ @@ -336,7 +336,7 @@ public List resources() { } /** - * Get the identity value. + * Get the identity of the virtual machine, if configured. * * @return the identity value */ @@ -345,7 +345,7 @@ public VirtualMachineIdentity identity() { } /** - * Set the identity value. + * Set the identity of the virtual machine, if configured. * * @param identity the identity value to set * @return the VirtualMachineInner object itself. @@ -356,7 +356,7 @@ public VirtualMachineInner withIdentity(VirtualMachineIdentity identity) { } /** - * Get the zones value. + * Get the virtual machine zones. * * @return the zones value */ @@ -365,7 +365,7 @@ public List zones() { } /** - * Set the zones value. + * Set the virtual machine zones. * * @param zones the zones value to set * @return the VirtualMachineInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineInstanceViewInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineInstanceViewInner.java index 491e8b04bbb0..384370c1f449 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineInstanceViewInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineInstanceViewInner.java @@ -83,9 +83,8 @@ public class VirtualMachineInstanceViewInner { /** * Boot Diagnostics is a debugging feature which allows you to view Console - * Output and Screenshot to diagnose VM status. <br><br> For - * Linux Virtual Machines, you can easily view the output of your console - * log. <br><br> For both Windows and Linux virtual machines, + * Output and Screenshot to diagnose VM status. <br><br> You + * can easily view the output of your console log. <br><br> * Azure also enables you to see a screenshot of the VM from the * hypervisor. */ @@ -99,7 +98,7 @@ public class VirtualMachineInstanceViewInner { private List statuses; /** - * Get the platformUpdateDomain value. + * Get specifies the update domain of the virtual machine. * * @return the platformUpdateDomain value */ @@ -108,7 +107,7 @@ public Integer platformUpdateDomain() { } /** - * Set the platformUpdateDomain value. + * Set specifies the update domain of the virtual machine. * * @param platformUpdateDomain the platformUpdateDomain value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -119,7 +118,7 @@ public VirtualMachineInstanceViewInner withPlatformUpdateDomain(Integer platform } /** - * Get the platformFaultDomain value. + * Get specifies the fault domain of the virtual machine. * * @return the platformFaultDomain value */ @@ -128,7 +127,7 @@ public Integer platformFaultDomain() { } /** - * Set the platformFaultDomain value. + * Set specifies the fault domain of the virtual machine. * * @param platformFaultDomain the platformFaultDomain value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -139,7 +138,7 @@ public VirtualMachineInstanceViewInner withPlatformFaultDomain(Integer platformF } /** - * Get the computerName value. + * Get the computer name assigned to the virtual machine. * * @return the computerName value */ @@ -148,7 +147,7 @@ public String computerName() { } /** - * Set the computerName value. + * Set the computer name assigned to the virtual machine. * * @param computerName the computerName value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -159,7 +158,7 @@ public VirtualMachineInstanceViewInner withComputerName(String computerName) { } /** - * Get the osName value. + * Get the Operating System running on the virtual machine. * * @return the osName value */ @@ -168,7 +167,7 @@ public String osName() { } /** - * Set the osName value. + * Set the Operating System running on the virtual machine. * * @param osName the osName value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -179,7 +178,7 @@ public VirtualMachineInstanceViewInner withOsName(String osName) { } /** - * Get the osVersion value. + * Get the version of Operating System running on the virtual machine. * * @return the osVersion value */ @@ -188,7 +187,7 @@ public String osVersion() { } /** - * Set the osVersion value. + * Set the version of Operating System running on the virtual machine. * * @param osVersion the osVersion value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -199,7 +198,7 @@ public VirtualMachineInstanceViewInner withOsVersion(String osVersion) { } /** - * Get the rdpThumbPrint value. + * Get the Remote desktop certificate thumbprint. * * @return the rdpThumbPrint value */ @@ -208,7 +207,7 @@ public String rdpThumbPrint() { } /** - * Set the rdpThumbPrint value. + * Set the Remote desktop certificate thumbprint. * * @param rdpThumbPrint the rdpThumbPrint value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -219,7 +218,7 @@ public VirtualMachineInstanceViewInner withRdpThumbPrint(String rdpThumbPrint) { } /** - * Get the vmAgent value. + * Get the VM Agent running on the virtual machine. * * @return the vmAgent value */ @@ -228,7 +227,7 @@ public VirtualMachineAgentInstanceView vmAgent() { } /** - * Set the vmAgent value. + * Set the VM Agent running on the virtual machine. * * @param vmAgent the vmAgent value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -239,7 +238,7 @@ public VirtualMachineInstanceViewInner withVmAgent(VirtualMachineAgentInstanceVi } /** - * Get the maintenanceRedeployStatus value. + * Get the Maintenance Operation status on the virtual machine. * * @return the maintenanceRedeployStatus value */ @@ -248,7 +247,7 @@ public MaintenanceRedeployStatus maintenanceRedeployStatus() { } /** - * Set the maintenanceRedeployStatus value. + * Set the Maintenance Operation status on the virtual machine. * * @param maintenanceRedeployStatus the maintenanceRedeployStatus value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -259,7 +258,7 @@ public VirtualMachineInstanceViewInner withMaintenanceRedeployStatus(Maintenance } /** - * Get the disks value. + * Get the virtual machine disk information. * * @return the disks value */ @@ -268,7 +267,7 @@ public List disks() { } /** - * Set the disks value. + * Set the virtual machine disk information. * * @param disks the disks value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -279,7 +278,7 @@ public VirtualMachineInstanceViewInner withDisks(List disks) { } /** - * Get the extensions value. + * Get the extensions information. * * @return the extensions value */ @@ -288,7 +287,7 @@ public List extensions() { } /** - * Set the extensions value. + * Set the extensions information. * * @param extensions the extensions value to set * @return the VirtualMachineInstanceViewInner object itself. @@ -299,7 +298,7 @@ public VirtualMachineInstanceViewInner withExtensions(List statuses() { } /** - * Set the statuses value. + * Set the resource status information. * * @param statuses the statuses value to set * @return the VirtualMachineInstanceViewInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineRunCommandsImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineRunCommandsImpl.java index 167aebd7c797..d37f5bb11359 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineRunCommandsImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineRunCommandsImpl.java @@ -43,10 +43,14 @@ private Observable getRunCommandDocumentInnerUsingVirtu public Observable getAsync(String location, String commandId) { VirtualMachineRunCommandsInner client = this.inner(); return client.getAsync(location, commandId) - .map(new Func1() { + .flatMap(new Func1>() { @Override - public RunCommandDocument call(RunCommandDocumentInner inner) { - return wrapRunCommandDocumentModel(inner); + public Observable call(RunCommandDocumentInner inner) { + if (inner == null) { + return Observable.empty(); + } else { + return Observable.just((RunCommandDocument)wrapRunCommandDocumentModel(inner)); + } } }); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetExtensionImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetExtensionImpl.java index 071da7a3d327..8f0abc269ae1 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetExtensionImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetExtensionImpl.java @@ -31,7 +31,7 @@ class VirtualMachineScaleSetExtensionImpl extends CreatableUpdatableImpl getAsync(String resourceGroupName, String vmScaleSetName, String vmssExtensionName) { VirtualMachineScaleSetExtensionsInner client = this.inner(); return client.getAsync(resourceGroupName, vmScaleSetName, vmssExtensionName) - .map(new Func1() { + .flatMap(new Func1>() { @Override - public VirtualMachineScaleSetExtension call(VirtualMachineScaleSetExtensionInner inner) { - return wrapModel(inner); + public Observable call(VirtualMachineScaleSetExtensionInner inner) { + if (inner == null) { + return Observable.empty(); + } else { + return Observable.just((VirtualMachineScaleSetExtension)wrapModel(inner)); + } } }); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetInner.java index ddb95c686660..688fe13aeddb 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetInner.java @@ -80,8 +80,8 @@ public class VirtualMachineScaleSetInner extends Resource { private Boolean singlePlacementGroup; /** - * Whether to force stictly even Virtual Machine distribution cross x-zones - * in case there is zone outage. + * Whether to force strictly even Virtual Machine distribution cross + * x-zones in case there is zone outage. */ @JsonProperty(value = "properties.zoneBalance") private Boolean zoneBalance; @@ -99,13 +99,14 @@ public class VirtualMachineScaleSetInner extends Resource { private VirtualMachineScaleSetIdentity identity; /** - * The virtual machine scale set zones. + * The virtual machine scale set zones. NOTE: Availability zones can only + * be set when you create the scale set. */ @JsonProperty(value = "zones") private List zones; /** - * Get the sku value. + * Get the virtual machine scale set sku. * * @return the sku value */ @@ -114,7 +115,7 @@ public Sku sku() { } /** - * Set the sku value. + * Set the virtual machine scale set sku. * * @param sku the sku value to set * @return the VirtualMachineScaleSetInner object itself. @@ -125,7 +126,7 @@ public VirtualMachineScaleSetInner withSku(Sku sku) { } /** - * Get the plan value. + * Get specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**. * * @return the plan value */ @@ -134,7 +135,7 @@ public Plan plan() { } /** - * Set the plan value. + * Set specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**. * * @param plan the plan value to set * @return the VirtualMachineScaleSetInner object itself. @@ -145,7 +146,7 @@ public VirtualMachineScaleSetInner withPlan(Plan plan) { } /** - * Get the upgradePolicy value. + * Get the upgrade policy. * * @return the upgradePolicy value */ @@ -154,7 +155,7 @@ public UpgradePolicy upgradePolicy() { } /** - * Set the upgradePolicy value. + * Set the upgrade policy. * * @param upgradePolicy the upgradePolicy value to set * @return the VirtualMachineScaleSetInner object itself. @@ -165,7 +166,7 @@ public VirtualMachineScaleSetInner withUpgradePolicy(UpgradePolicy upgradePolicy } /** - * Get the virtualMachineProfile value. + * Get the virtual machine profile. * * @return the virtualMachineProfile value */ @@ -174,7 +175,7 @@ public VirtualMachineScaleSetVMProfile virtualMachineProfile() { } /** - * Set the virtualMachineProfile value. + * Set the virtual machine profile. * * @param virtualMachineProfile the virtualMachineProfile value to set * @return the VirtualMachineScaleSetInner object itself. @@ -185,7 +186,7 @@ public VirtualMachineScaleSetInner withVirtualMachineProfile(VirtualMachineScale } /** - * Get the provisioningState value. + * Get the provisioning state, which only appears in the response. * * @return the provisioningState value */ @@ -194,7 +195,7 @@ public String provisioningState() { } /** - * Get the overprovision value. + * Get specifies whether the Virtual Machine Scale Set should be overprovisioned. * * @return the overprovision value */ @@ -203,7 +204,7 @@ public Boolean overprovision() { } /** - * Set the overprovision value. + * Set specifies whether the Virtual Machine Scale Set should be overprovisioned. * * @param overprovision the overprovision value to set * @return the VirtualMachineScaleSetInner object itself. @@ -214,7 +215,7 @@ public VirtualMachineScaleSetInner withOverprovision(Boolean overprovision) { } /** - * Get the uniqueId value. + * Get specifies the ID which uniquely identifies a Virtual Machine Scale Set. * * @return the uniqueId value */ @@ -223,7 +224,7 @@ public String uniqueId() { } /** - * Get the singlePlacementGroup value. + * Get when true this limits the scale set to a single placement group, of max size 100 virtual machines. * * @return the singlePlacementGroup value */ @@ -232,7 +233,7 @@ public Boolean singlePlacementGroup() { } /** - * Set the singlePlacementGroup value. + * Set when true this limits the scale set to a single placement group, of max size 100 virtual machines. * * @param singlePlacementGroup the singlePlacementGroup value to set * @return the VirtualMachineScaleSetInner object itself. @@ -243,7 +244,7 @@ public VirtualMachineScaleSetInner withSinglePlacementGroup(Boolean singlePlacem } /** - * Get the zoneBalance value. + * Get whether to force strictly even Virtual Machine distribution cross x-zones in case there is zone outage. * * @return the zoneBalance value */ @@ -252,7 +253,7 @@ public Boolean zoneBalance() { } /** - * Set the zoneBalance value. + * Set whether to force strictly even Virtual Machine distribution cross x-zones in case there is zone outage. * * @param zoneBalance the zoneBalance value to set * @return the VirtualMachineScaleSetInner object itself. @@ -263,7 +264,7 @@ public VirtualMachineScaleSetInner withZoneBalance(Boolean zoneBalance) { } /** - * Get the platformFaultDomainCount value. + * Get fault Domain count for each placement group. * * @return the platformFaultDomainCount value */ @@ -272,7 +273,7 @@ public Integer platformFaultDomainCount() { } /** - * Set the platformFaultDomainCount value. + * Set fault Domain count for each placement group. * * @param platformFaultDomainCount the platformFaultDomainCount value to set * @return the VirtualMachineScaleSetInner object itself. @@ -283,7 +284,7 @@ public VirtualMachineScaleSetInner withPlatformFaultDomainCount(Integer platform } /** - * Get the identity value. + * Get the identity of the virtual machine scale set, if configured. * * @return the identity value */ @@ -292,7 +293,7 @@ public VirtualMachineScaleSetIdentity identity() { } /** - * Set the identity value. + * Set the identity of the virtual machine scale set, if configured. * * @param identity the identity value to set * @return the VirtualMachineScaleSetInner object itself. @@ -303,7 +304,7 @@ public VirtualMachineScaleSetInner withIdentity(VirtualMachineScaleSetIdentity i } /** - * Get the zones value. + * Get the virtual machine scale set zones. NOTE: Availability zones can only be set when you create the scale set. * * @return the zones value */ @@ -312,7 +313,7 @@ public List zones() { } /** - * Set the zones value. + * Set the virtual machine scale set zones. NOTE: Availability zones can only be set when you create the scale set. * * @param zones the zones value to set * @return the VirtualMachineScaleSetInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetInstanceViewInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetInstanceViewInner.java index 11d9b60747fd..9d6e2526326b 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetInstanceViewInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetInstanceViewInner.java @@ -37,7 +37,7 @@ public class VirtualMachineScaleSetInstanceViewInner { private List statuses; /** - * Get the virtualMachine value. + * Get the instance view status summary for the virtual machine scale set. * * @return the virtualMachine value */ @@ -46,7 +46,7 @@ public VirtualMachineScaleSetInstanceViewStatusesSummary virtualMachine() { } /** - * Get the extensions value. + * Get the extensions information. * * @return the extensions value */ @@ -55,7 +55,7 @@ public List extensions() { } /** - * Get the statuses value. + * Get the resource status information. * * @return the statuses value */ @@ -64,7 +64,7 @@ public List statuses() { } /** - * Set the statuses value. + * Set the resource status information. * * @param statuses the statuses value to set * @return the VirtualMachineScaleSetInstanceViewInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetRollingUpgradesInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetRollingUpgradesInner.java index 3976530d9f56..97127d83ac09 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetRollingUpgradesInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetRollingUpgradesInner.java @@ -25,6 +25,8 @@ import retrofit2.Response; import rx.functions.Func1; import rx.Observable; +import com.microsoft.azure.LongRunningFinalState; +import com.microsoft.azure.LongRunningOperationOptions; /** * An instance of this class provides access to all the operations defined @@ -140,7 +142,7 @@ public Observable> cancelWithServi throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.cancel(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -296,7 +298,7 @@ public Observable> startOSUpgradeW throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.startOSUpgrade(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetSkuInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetSkuInner.java index 93da5395a124..306d43b2ee3d 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetSkuInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetSkuInner.java @@ -35,7 +35,7 @@ public class VirtualMachineScaleSetSkuInner { private VirtualMachineScaleSetSkuCapacity capacity; /** - * Get the resourceType value. + * Get the type of resource the sku applies to. * * @return the resourceType value */ @@ -44,7 +44,7 @@ public String resourceType() { } /** - * Get the sku value. + * Get the Sku. * * @return the sku value */ @@ -53,7 +53,7 @@ public Sku sku() { } /** - * Get the capacity value. + * Get specifies the number of virtual machines in the scale set. * * @return the capacity value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMImpl.java index 4d074eeefb9b..78c2d519de22 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMImpl.java @@ -21,7 +21,7 @@ import com.microsoft.azure.SubResource; import com.microsoft.azure.management.compute.v2017_12_01.Plan; import java.util.List; -import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineInstanceView; +import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineScaleSetVMInstanceView; import java.util.ArrayList; import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineExtension; @@ -44,7 +44,7 @@ class VirtualMachineScaleSetVMImpl extends CreatableUpdatableImpl resources; /** - * Get the instanceId value. + * Get the virtual machine instance ID. * * @return the instanceId value */ @@ -154,7 +154,7 @@ public String instanceId() { } /** - * Get the sku value. + * Get the virtual machine SKU. * * @return the sku value */ @@ -163,7 +163,7 @@ public Sku sku() { } /** - * Get the latestModelApplied value. + * Get specifies whether the latest model has been applied to the virtual machine. * * @return the latestModelApplied value */ @@ -172,7 +172,7 @@ public Boolean latestModelApplied() { } /** - * Get the vmId value. + * Get azure VM unique ID. * * @return the vmId value */ @@ -181,16 +181,16 @@ public String vmId() { } /** - * Get the instanceView value. + * Get the virtual machine instance view. * * @return the instanceView value */ - public VirtualMachineInstanceViewInner instanceView() { + public VirtualMachineScaleSetVMInstanceViewInner instanceView() { return this.instanceView; } /** - * Get the hardwareProfile value. + * Get specifies the hardware settings for the virtual machine. * * @return the hardwareProfile value */ @@ -199,7 +199,7 @@ public HardwareProfile hardwareProfile() { } /** - * Set the hardwareProfile value. + * Set specifies the hardware settings for the virtual machine. * * @param hardwareProfile the hardwareProfile value to set * @return the VirtualMachineScaleSetVMInner object itself. @@ -210,7 +210,7 @@ public VirtualMachineScaleSetVMInner withHardwareProfile(HardwareProfile hardwar } /** - * Get the storageProfile value. + * Get specifies the storage settings for the virtual machine disks. * * @return the storageProfile value */ @@ -219,7 +219,7 @@ public StorageProfile storageProfile() { } /** - * Set the storageProfile value. + * Set specifies the storage settings for the virtual machine disks. * * @param storageProfile the storageProfile value to set * @return the VirtualMachineScaleSetVMInner object itself. @@ -230,7 +230,7 @@ public VirtualMachineScaleSetVMInner withStorageProfile(StorageProfile storagePr } /** - * Get the osProfile value. + * Get specifies the operating system settings for the virtual machine. * * @return the osProfile value */ @@ -239,7 +239,7 @@ public OSProfile osProfile() { } /** - * Set the osProfile value. + * Set specifies the operating system settings for the virtual machine. * * @param osProfile the osProfile value to set * @return the VirtualMachineScaleSetVMInner object itself. @@ -250,7 +250,7 @@ public VirtualMachineScaleSetVMInner withOsProfile(OSProfile osProfile) { } /** - * Get the networkProfile value. + * Get specifies the network interfaces of the virtual machine. * * @return the networkProfile value */ @@ -259,7 +259,7 @@ public NetworkProfile networkProfile() { } /** - * Set the networkProfile value. + * Set specifies the network interfaces of the virtual machine. * * @param networkProfile the networkProfile value to set * @return the VirtualMachineScaleSetVMInner object itself. @@ -270,7 +270,7 @@ public VirtualMachineScaleSetVMInner withNetworkProfile(NetworkProfile networkPr } /** - * Get the diagnosticsProfile value. + * Get specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15. * * @return the diagnosticsProfile value */ @@ -279,7 +279,7 @@ public DiagnosticsProfile diagnosticsProfile() { } /** - * Set the diagnosticsProfile value. + * Set specifies the boot diagnostic settings state. <br><br>Minimum api-version: 2015-06-15. * * @param diagnosticsProfile the diagnosticsProfile value to set * @return the VirtualMachineScaleSetVMInner object itself. @@ -290,7 +290,7 @@ public VirtualMachineScaleSetVMInner withDiagnosticsProfile(DiagnosticsProfile d } /** - * Get the availabilitySet value. + * Get specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set. * * @return the availabilitySet value */ @@ -299,7 +299,7 @@ public SubResource availabilitySet() { } /** - * Set the availabilitySet value. + * Set specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set. * * @param availabilitySet the availabilitySet value to set * @return the VirtualMachineScaleSetVMInner object itself. @@ -310,7 +310,7 @@ public VirtualMachineScaleSetVMInner withAvailabilitySet(SubResource availabilit } /** - * Get the provisioningState value. + * Get the provisioning state, which only appears in the response. * * @return the provisioningState value */ @@ -319,7 +319,7 @@ public String provisioningState() { } /** - * Get the licenseType value. + * Get specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15. * * @return the licenseType value */ @@ -328,7 +328,7 @@ public String licenseType() { } /** - * Set the licenseType value. + * Set specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. <br><br> Possible values are: <br><br> Windows_Client <br><br> Windows_Server <br><br> If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. <br><br> For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) <br><br> Minimum api-version: 2015-06-15. * * @param licenseType the licenseType value to set * @return the VirtualMachineScaleSetVMInner object itself. @@ -339,7 +339,7 @@ public VirtualMachineScaleSetVMInner withLicenseType(String licenseType) { } /** - * Get the plan value. + * Get specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**. * * @return the plan value */ @@ -348,7 +348,7 @@ public Plan plan() { } /** - * Set the plan value. + * Set specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**. * * @param plan the plan value to set * @return the VirtualMachineScaleSetVMInner object itself. @@ -359,7 +359,7 @@ public VirtualMachineScaleSetVMInner withPlan(Plan plan) { } /** - * Get the resources value. + * Get the virtual machine child extension resources. * * @return the resources value */ diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMInstanceViewInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMInstanceViewInner.java index fff6826a9404..7df32beff89b 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMInstanceViewInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMInstanceViewInner.java @@ -72,9 +72,8 @@ public class VirtualMachineScaleSetVMInstanceViewInner { /** * Boot Diagnostics is a debugging feature which allows you to view Console - * Output and Screenshot to diagnose VM status. <br><br> For - * Linux Virtual Machines, you can easily view the output of your console - * log. <br><br> For both Windows and Linux virtual machines, + * Output and Screenshot to diagnose VM status. <br><br> You + * can easily view the output of your console log. <br><br> * Azure also enables you to see a screenshot of the VM from the * hypervisor. */ @@ -95,7 +94,7 @@ public class VirtualMachineScaleSetVMInstanceViewInner { private String placementGroupId; /** - * Get the platformUpdateDomain value. + * Get the Update Domain count. * * @return the platformUpdateDomain value */ @@ -104,7 +103,7 @@ public Integer platformUpdateDomain() { } /** - * Set the platformUpdateDomain value. + * Set the Update Domain count. * * @param platformUpdateDomain the platformUpdateDomain value to set * @return the VirtualMachineScaleSetVMInstanceViewInner object itself. @@ -115,7 +114,7 @@ public VirtualMachineScaleSetVMInstanceViewInner withPlatformUpdateDomain(Intege } /** - * Get the platformFaultDomain value. + * Get the Fault Domain count. * * @return the platformFaultDomain value */ @@ -124,7 +123,7 @@ public Integer platformFaultDomain() { } /** - * Set the platformFaultDomain value. + * Set the Fault Domain count. * * @param platformFaultDomain the platformFaultDomain value to set * @return the VirtualMachineScaleSetVMInstanceViewInner object itself. @@ -135,7 +134,7 @@ public VirtualMachineScaleSetVMInstanceViewInner withPlatformFaultDomain(Integer } /** - * Get the rdpThumbPrint value. + * Get the Remote desktop certificate thumbprint. * * @return the rdpThumbPrint value */ @@ -144,7 +143,7 @@ public String rdpThumbPrint() { } /** - * Set the rdpThumbPrint value. + * Set the Remote desktop certificate thumbprint. * * @param rdpThumbPrint the rdpThumbPrint value to set * @return the VirtualMachineScaleSetVMInstanceViewInner object itself. @@ -155,7 +154,7 @@ public VirtualMachineScaleSetVMInstanceViewInner withRdpThumbPrint(String rdpThu } /** - * Get the vmAgent value. + * Get the VM Agent running on the virtual machine. * * @return the vmAgent value */ @@ -164,7 +163,7 @@ public VirtualMachineAgentInstanceView vmAgent() { } /** - * Set the vmAgent value. + * Set the VM Agent running on the virtual machine. * * @param vmAgent the vmAgent value to set * @return the VirtualMachineScaleSetVMInstanceViewInner object itself. @@ -175,7 +174,7 @@ public VirtualMachineScaleSetVMInstanceViewInner withVmAgent(VirtualMachineAgent } /** - * Get the maintenanceRedeployStatus value. + * Get the Maintenance Operation status on the virtual machine. * * @return the maintenanceRedeployStatus value */ @@ -184,7 +183,7 @@ public MaintenanceRedeployStatus maintenanceRedeployStatus() { } /** - * Set the maintenanceRedeployStatus value. + * Set the Maintenance Operation status on the virtual machine. * * @param maintenanceRedeployStatus the maintenanceRedeployStatus value to set * @return the VirtualMachineScaleSetVMInstanceViewInner object itself. @@ -195,7 +194,7 @@ public VirtualMachineScaleSetVMInstanceViewInner withMaintenanceRedeployStatus(M } /** - * Get the disks value. + * Get the disks information. * * @return the disks value */ @@ -204,7 +203,7 @@ public List disks() { } /** - * Set the disks value. + * Set the disks information. * * @param disks the disks value to set * @return the VirtualMachineScaleSetVMInstanceViewInner object itself. @@ -215,7 +214,7 @@ public VirtualMachineScaleSetVMInstanceViewInner withDisks(List extensions() { } /** - * Set the extensions value. + * Set the extensions information. * * @param extensions the extensions value to set * @return the VirtualMachineScaleSetVMInstanceViewInner object itself. @@ -235,7 +234,7 @@ public VirtualMachineScaleSetVMInstanceViewInner withExtensions(List statuses() { } /** - * Set the statuses value. + * Set the resource status information. * * @param statuses the statuses value to set * @return the VirtualMachineScaleSetVMInstanceViewInner object itself. @@ -284,7 +283,7 @@ public VirtualMachineScaleSetVMInstanceViewInner withStatuses(List getAsync(String resourceGroupName, String vmScaleSetName, String instanceId) { VirtualMachineScaleSetVMsInner client = this.inner(); return client.getAsync(resourceGroupName, vmScaleSetName, instanceId) - .map(new Func1() { + .flatMap(new Func1>() { @Override - public VirtualMachineScaleSetVM call(VirtualMachineScaleSetVMInner inner) { - return wrapModel(inner); + public Observable call(VirtualMachineScaleSetVMInner inner) { + if (inner == null) { + return Observable.empty(); + } else { + return Observable.just((VirtualMachineScaleSetVM)wrapModel(inner)); + } } }); } diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMsInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMsInner.java index 788c82df9387..55a187b9c59e 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMsInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetVMsInner.java @@ -35,6 +35,8 @@ import retrofit2.Response; import rx.functions.Func1; import rx.Observable; +import com.microsoft.azure.LongRunningFinalState; +import com.microsoft.azure.LongRunningOperationOptions; /** * An instance of this class provides access to all the operations defined @@ -233,7 +235,7 @@ public Observable> reimageWithServ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.reimage(resourceGroupName, vmScaleSetName, instanceId, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -403,7 +405,7 @@ public Observable> reimageAllWithS throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.reimageAll(resourceGroupName, vmScaleSetName, instanceId, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -573,7 +575,7 @@ public Observable> deallocateWithS throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.deallocate(resourceGroupName, vmScaleSetName, instanceId, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -1337,9 +1339,9 @@ public Observable>> call(Res * * @param resourceGroupName The name of the resource group. * @param virtualMachineScaleSetName The name of the VM scale set. - * @param filter The filter to apply to the operation. - * @param select The list parameters. - * @param expand The expand expression to apply to the operation. + * @param filter The filter to apply to the operation. Allowed values are 'startswith(instanceView/statuses/code, 'PowerState') eq true', 'properties/latestModelApplied eq true', 'properties/latestModelApplied eq false'. + * @param select The list parameters. Allowed values are 'instanceView', 'instanceView/statuses'. + * @param expand The expand expression to apply to the operation. Allowed values are 'instanceView'. * @throws IllegalArgumentException thrown if parameters fail the validation * @throws CloudException thrown if the request is rejected by server * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent @@ -1360,9 +1362,9 @@ public Page nextPage(String nextPageLink) { * * @param resourceGroupName The name of the resource group. * @param virtualMachineScaleSetName The name of the VM scale set. - * @param filter The filter to apply to the operation. - * @param select The list parameters. - * @param expand The expand expression to apply to the operation. + * @param filter The filter to apply to the operation. Allowed values are 'startswith(instanceView/statuses/code, 'PowerState') eq true', 'properties/latestModelApplied eq true', 'properties/latestModelApplied eq false'. + * @param select The list parameters. Allowed values are 'instanceView', 'instanceView/statuses'. + * @param expand The expand expression to apply to the operation. Allowed values are 'instanceView'. * @param serviceCallback the async ServiceCallback to handle successful and failed responses. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceFuture} object @@ -1384,9 +1386,9 @@ public Observable>> call(Str * * @param resourceGroupName The name of the resource group. * @param virtualMachineScaleSetName The name of the VM scale set. - * @param filter The filter to apply to the operation. - * @param select The list parameters. - * @param expand The expand expression to apply to the operation. + * @param filter The filter to apply to the operation. Allowed values are 'startswith(instanceView/statuses/code, 'PowerState') eq true', 'properties/latestModelApplied eq true', 'properties/latestModelApplied eq false'. + * @param select The list parameters. Allowed values are 'instanceView', 'instanceView/statuses'. + * @param expand The expand expression to apply to the operation. Allowed values are 'instanceView'. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the observable to the PagedList<VirtualMachineScaleSetVMInner> object */ @@ -1405,9 +1407,9 @@ public Page call(ServiceResponse>> call(Ser * ServiceResponse> * @param resourceGroupName The name of the resource group. ServiceResponse> * @param virtualMachineScaleSetName The name of the VM scale set. - ServiceResponse> * @param filter The filter to apply to the operation. - ServiceResponse> * @param select The list parameters. - ServiceResponse> * @param expand The expand expression to apply to the operation. + ServiceResponse> * @param filter The filter to apply to the operation. Allowed values are 'startswith(instanceView/statuses/code, 'PowerState') eq true', 'properties/latestModelApplied eq true', 'properties/latestModelApplied eq false'. + ServiceResponse> * @param select The list parameters. Allowed values are 'instanceView', 'instanceView/statuses'. + ServiceResponse> * @param expand The expand expression to apply to the operation. Allowed values are 'instanceView'. * @throws IllegalArgumentException thrown if parameters fail the validation * @return the PagedList<VirtualMachineScaleSetVMInner> object wrapped in {@link ServiceResponse} if successful. */ @@ -1543,7 +1545,7 @@ public Observable> powerOffWithSer throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.powerOff(resourceGroupName, vmScaleSetName, instanceId, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -1713,7 +1715,7 @@ public Observable> restartWithServ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.restart(resourceGroupName, vmScaleSetName, instanceId, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -1883,7 +1885,7 @@ public Observable> startWithServic throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.start(resourceGroupName, vmScaleSetName, instanceId, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -1981,7 +1983,7 @@ private ServiceResponse beginStartDelegate(Respons } /** - * Redeploys a virtual machine in a VM scale set. + * Shuts down the virtual machine in the virtual machine scale set, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -1996,7 +1998,7 @@ public OperationStatusResponseInner redeploy(String resourceGroupName, String vm } /** - * Redeploys a virtual machine in a VM scale set. + * Shuts down the virtual machine in the virtual machine scale set, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2010,7 +2012,7 @@ public ServiceFuture redeployAsync(String resource } /** - * Redeploys a virtual machine in a VM scale set. + * Shuts down the virtual machine in the virtual machine scale set, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2028,7 +2030,7 @@ public OperationStatusResponseInner call(ServiceResponse> redeployWithSer throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.redeploy(resourceGroupName, vmScaleSetName, instanceId, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** - * Redeploys a virtual machine in a VM scale set. + * Shuts down the virtual machine in the virtual machine scale set, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2072,7 +2074,7 @@ public OperationStatusResponseInner beginRedeploy(String resourceGroupName, Stri } /** - * Redeploys a virtual machine in a VM scale set. + * Shuts down the virtual machine in the virtual machine scale set, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2086,7 +2088,7 @@ public ServiceFuture beginRedeployAsync(String res } /** - * Redeploys a virtual machine in a VM scale set. + * Shuts down the virtual machine in the virtual machine scale set, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2104,7 +2106,7 @@ public OperationStatusResponseInner call(ServiceResponse> performMaintena throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.performMaintenance(resourceGroupName, vmScaleSetName, instanceId, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetsImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetsImpl.java index 26e2ff1958fc..71b2ad876e93 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetsImpl.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetsImpl.java @@ -176,7 +176,8 @@ public Observable getOSUpgradeHistoryAsync public Iterable call(Page page) { return page.items(); } - }) .map(new Func1() { + }) + .map(new Func1() { @Override public UpgradeOperationHistoricalStatusInfo call(UpgradeOperationHistoricalStatusInfoInner inner) { return new UpgradeOperationHistoricalStatusInfoImpl(inner, manager()); diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetsInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetsInner.java index ceb67b6a912b..c9640a0d2694 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetsInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineScaleSetsInner.java @@ -42,6 +42,8 @@ import retrofit2.Response; import rx.functions.Func1; import rx.Observable; +import com.microsoft.azure.LongRunningFinalState; +import com.microsoft.azure.LongRunningOperationOptions; /** * An instance of this class provides access to all the operations defined @@ -874,7 +876,7 @@ public Observable> deallocateWithS VirtualMachineScaleSetVMInstanceIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceIDs(); vmInstanceIDs.withInstanceIds(null); Observable> observable = service.deallocate(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** * Deallocates specific virtual machines in a VM scale set. Shuts down the virtual machines and releases the compute resources. You are not billed for the compute resources that this virtual machine scale set deallocates. @@ -952,7 +954,7 @@ public Observable> deallocateWithS vmInstanceIDs.withInstanceIds(instanceIds); } Observable> observable = service.deallocate(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -1210,7 +1212,7 @@ public Observable> deleteInstances VirtualMachineScaleSetVMInstanceRequiredIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceRequiredIDs(); vmInstanceIDs.withInstanceIds(instanceIds); Observable> observable = service.deleteInstances(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -1933,7 +1935,7 @@ public Observable> powerOffWithSer VirtualMachineScaleSetVMInstanceIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceIDs(); vmInstanceIDs.withInstanceIds(null); Observable> observable = service.powerOff(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** * Power off (stop) one or more virtual machines in a VM scale set. Note that resources are still attached and you are getting charged for the resources. Instead, use deallocate to release resources and avoid charges. @@ -2011,7 +2013,7 @@ public Observable> powerOffWithSer vmInstanceIDs.withInstanceIds(instanceIds); } Observable> observable = service.powerOff(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -2262,7 +2264,7 @@ public Observable> restartWithServ VirtualMachineScaleSetVMInstanceIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceIDs(); vmInstanceIDs.withInstanceIds(null); Observable> observable = service.restart(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** * Restarts one or more virtual machines in a VM scale set. @@ -2340,7 +2342,7 @@ public Observable> restartWithServ vmInstanceIDs.withInstanceIds(instanceIds); } Observable> observable = service.restart(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -2591,7 +2593,7 @@ public Observable> startWithServic VirtualMachineScaleSetVMInstanceIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceIDs(); vmInstanceIDs.withInstanceIds(null); Observable> observable = service.start(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** * Starts one or more virtual machines in a VM scale set. @@ -2669,7 +2671,7 @@ public Observable> startWithServic vmInstanceIDs.withInstanceIds(instanceIds); } Observable> observable = service.start(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -2852,7 +2854,7 @@ private ServiceResponse beginStartDelegate(Respons } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2866,7 +2868,7 @@ public OperationStatusResponseInner redeploy(String resourceGroupName, String vm } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2879,7 +2881,7 @@ public ServiceFuture redeployAsync(String resource } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2896,7 +2898,7 @@ public OperationStatusResponseInner call(ServiceResponse> redeployWithSer VirtualMachineScaleSetVMInstanceIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceIDs(); vmInstanceIDs.withInstanceIds(null); Observable> observable = service.redeploy(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2938,7 +2940,7 @@ public OperationStatusResponseInner redeploy(String resourceGroupName, String vm } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2952,7 +2954,7 @@ public ServiceFuture redeployAsync(String resource } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -2970,7 +2972,7 @@ public OperationStatusResponseInner call(ServiceResponse> redeployWithSer vmInstanceIDs.withInstanceIds(instanceIds); } Observable> observable = service.redeploy(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3016,7 +3018,7 @@ public OperationStatusResponseInner beginRedeploy(String resourceGroupName, Stri } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3029,7 +3031,7 @@ public ServiceFuture beginRedeployAsync(String res } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3046,7 +3048,7 @@ public OperationStatusResponseInner call(ServiceResponse> call(Response beginRedeployAsync(String res } /** - * Redeploy one or more virtual machines in a VM scale set. + * Shuts down all the virtual machines in the virtual machine scale set, moves them to a new node, and powers them back on. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3131,7 +3133,7 @@ public OperationStatusResponseInner call(ServiceResponse beginRedeployDelegate(Resp } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3195,7 +3197,7 @@ public OperationStatusResponseInner performMaintenance(String resourceGroupName, } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3208,7 +3210,7 @@ public ServiceFuture performMaintenanceAsync(Strin } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3225,7 +3227,7 @@ public OperationStatusResponseInner call(ServiceResponse> performMaintena VirtualMachineScaleSetVMInstanceIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceIDs(); vmInstanceIDs.withInstanceIds(null); Observable> observable = service.performMaintenance(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3267,7 +3269,7 @@ public OperationStatusResponseInner performMaintenance(String resourceGroupName, } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3281,7 +3283,7 @@ public ServiceFuture performMaintenanceAsync(Strin } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3299,7 +3301,7 @@ public OperationStatusResponseInner call(ServiceResponse> performMaintena vmInstanceIDs.withInstanceIds(instanceIds); } Observable> observable = service.performMaintenance(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3345,7 +3347,7 @@ public OperationStatusResponseInner beginPerformMaintenance(String resourceGroup } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3358,7 +3360,7 @@ public ServiceFuture beginPerformMaintenanceAsync( } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3375,7 +3377,7 @@ public OperationStatusResponseInner call(ServiceResponse> call(Response beginPerformMaintenanceAsync( } /** - * Perform maintenance on one or more virtual machines in a VM scale set. + * Perform maintenance on one or more virtual machines in a VM scale set. Operation on instances which are not eligible for perform maintenance will be failed. Please refer to best practices for more details: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-maintenance-notifications. * * @param resourceGroupName The name of the resource group. * @param vmScaleSetName The name of the VM scale set. @@ -3460,7 +3462,7 @@ public OperationStatusResponseInner call(ServiceResponse> updateInstances VirtualMachineScaleSetVMInstanceRequiredIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceRequiredIDs(); vmInstanceIDs.withInstanceIds(instanceIds); Observable> observable = service.updateInstances(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -3754,7 +3756,7 @@ public Observable> reimageWithServ VirtualMachineScaleSetVMInstanceIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceIDs(); vmInstanceIDs.withInstanceIds(null); Observable> observable = service.reimage(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** * Reimages (upgrade the operating system) one or more virtual machines in a VM scale set. @@ -3832,7 +3834,7 @@ public Observable> reimageWithServ vmInstanceIDs.withInstanceIds(instanceIds); } Observable> observable = service.reimage(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -4083,7 +4085,7 @@ public Observable> reimageAllWithS VirtualMachineScaleSetVMInstanceIDs vmInstanceIDs = new VirtualMachineScaleSetVMInstanceIDs(); vmInstanceIDs.withInstanceIds(null); Observable> observable = service.reimageAll(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** * Reimages all the disks ( including data disks ) in the virtual machines in a VM scale set. This operation is only supported for managed disks. @@ -4161,7 +4163,7 @@ public Observable> reimageAllWithS vmInstanceIDs.withInstanceIds(instanceIds); } Observable> observable = service.reimageAll(resourceGroupName, vmScaleSetName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), vmInstanceIDs, this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineSizeInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineSizeInner.java index 6268a4b674e1..97bf7798135a 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineSizeInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachineSizeInner.java @@ -52,7 +52,7 @@ public class VirtualMachineSizeInner { private Integer maxDataDiskCount; /** - * Get the name value. + * Get the name of the virtual machine size. * * @return the name value */ @@ -61,7 +61,7 @@ public String name() { } /** - * Set the name value. + * Set the name of the virtual machine size. * * @param name the name value to set * @return the VirtualMachineSizeInner object itself. @@ -72,7 +72,7 @@ public VirtualMachineSizeInner withName(String name) { } /** - * Get the numberOfCores value. + * Get the number of cores supported by the virtual machine size. * * @return the numberOfCores value */ @@ -81,7 +81,7 @@ public Integer numberOfCores() { } /** - * Set the numberOfCores value. + * Set the number of cores supported by the virtual machine size. * * @param numberOfCores the numberOfCores value to set * @return the VirtualMachineSizeInner object itself. @@ -92,7 +92,7 @@ public VirtualMachineSizeInner withNumberOfCores(Integer numberOfCores) { } /** - * Get the osDiskSizeInMB value. + * Get the OS disk size, in MB, allowed by the virtual machine size. * * @return the osDiskSizeInMB value */ @@ -101,7 +101,7 @@ public Integer osDiskSizeInMB() { } /** - * Set the osDiskSizeInMB value. + * Set the OS disk size, in MB, allowed by the virtual machine size. * * @param osDiskSizeInMB the osDiskSizeInMB value to set * @return the VirtualMachineSizeInner object itself. @@ -112,7 +112,7 @@ public VirtualMachineSizeInner withOsDiskSizeInMB(Integer osDiskSizeInMB) { } /** - * Get the resourceDiskSizeInMB value. + * Get the resource disk size, in MB, allowed by the virtual machine size. * * @return the resourceDiskSizeInMB value */ @@ -121,7 +121,7 @@ public Integer resourceDiskSizeInMB() { } /** - * Set the resourceDiskSizeInMB value. + * Set the resource disk size, in MB, allowed by the virtual machine size. * * @param resourceDiskSizeInMB the resourceDiskSizeInMB value to set * @return the VirtualMachineSizeInner object itself. @@ -132,7 +132,7 @@ public VirtualMachineSizeInner withResourceDiskSizeInMB(Integer resourceDiskSize } /** - * Get the memoryInMB value. + * Get the amount of memory, in MB, supported by the virtual machine size. * * @return the memoryInMB value */ @@ -141,7 +141,7 @@ public Integer memoryInMB() { } /** - * Set the memoryInMB value. + * Set the amount of memory, in MB, supported by the virtual machine size. * * @param memoryInMB the memoryInMB value to set * @return the VirtualMachineSizeInner object itself. @@ -152,7 +152,7 @@ public VirtualMachineSizeInner withMemoryInMB(Integer memoryInMB) { } /** - * Get the maxDataDiskCount value. + * Get the maximum number of data disks that can be attached to the virtual machine size. * * @return the maxDataDiskCount value */ @@ -161,7 +161,7 @@ public Integer maxDataDiskCount() { } /** - * Set the maxDataDiskCount value. + * Set the maximum number of data disks that can be attached to the virtual machine size. * * @param maxDataDiskCount the maxDataDiskCount value to set * @return the VirtualMachineSizeInner object itself. diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachinesImpl.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachinesImpl.java new file mode 100644 index 000000000000..6474872196e4 --- /dev/null +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachinesImpl.java @@ -0,0 +1,297 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * abc + */ + +package com.microsoft.azure.management.compute.v2017_12_01.implementation; + +import com.microsoft.azure.arm.model.implementation.WrapperImpl; +import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachines; +import rx.Observable; +import rx.functions.Func1; +import com.microsoft.azure.Page; +import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachine; +import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineCaptureResult; +import com.microsoft.azure.management.compute.v2017_12_01.OperationStatusResponse; +import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineInstanceView; +import com.microsoft.azure.management.compute.v2017_12_01.RunCommandResult; +import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineCaptureParameters; +import com.microsoft.azure.management.compute.v2017_12_01.RunCommandInput; +import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineExtensionsListResult; +import java.util.List; +import com.microsoft.azure.management.compute.v2017_12_01.VirtualMachineVirtualMachineSize; + +class VirtualMachinesImpl extends WrapperImpl implements VirtualMachines { + private final ComputeManager manager; + + VirtualMachinesImpl(ComputeManager manager) { + super(manager.inner().virtualMachines()); + this.manager = manager; + } + + public ComputeManager manager() { + return this.manager; + } + + @Override + public VirtualMachineImpl defineVirtualMachine(String name) { + return wrapVirtualMachineModel(name); + } + + private VirtualMachineImpl wrapVirtualMachineModel(String name) { + return new VirtualMachineImpl(name, this.manager()); + } + + private VirtualMachineImpl wrapVirtualMachineModel(VirtualMachineInner inner) { + return new VirtualMachineImpl(inner, manager()); + } + + private VirtualMachineVirtualMachineSizeImpl wrapVirtualMachineVirtualMachineSizeModel(VirtualMachineSizeInner inner) { + return new VirtualMachineVirtualMachineSizeImpl(inner, manager()); + } + + @Override + public Observable listByLocationAsync(final String location) { + VirtualMachinesInner client = this.inner(); + return client.listByLocationAsync(location) + .flatMapIterable(new Func1, Iterable>() { + @Override + public Iterable call(Page page) { + return page.items(); + } + }) + .map(new Func1() { + @Override + public VirtualMachine call(VirtualMachineInner inner) { + return wrapVirtualMachineModel(inner); + } + }); + } + + @Override + public Observable captureAsync(String resourceGroupName, String vmName, VirtualMachineCaptureParameters parameters) { + VirtualMachinesInner client = this.inner(); + return client.captureAsync(resourceGroupName, vmName, parameters) + .map(new Func1() { + @Override + public VirtualMachineCaptureResult call(VirtualMachineCaptureResultInner inner) { + return new VirtualMachineCaptureResultImpl(inner, manager()); + } + }); + } + + @Override + public Observable deleteAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.deleteAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public OperationStatusResponse call(OperationStatusResponseInner inner) { + return new OperationStatusResponseImpl(inner, manager()); + } + }); + } + + @Override + public Observable getByResourceGroupAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.getByResourceGroupAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public VirtualMachine call(VirtualMachineInner inner) { + return new VirtualMachineImpl(inner, manager()); + } + }); + } + + @Override + public Observable instanceViewAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.instanceViewAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public VirtualMachineInstanceView call(VirtualMachineInstanceViewInner inner) { + return new VirtualMachineInstanceViewImpl(inner, manager()); + } + }); + } + + @Override + public Observable convertToManagedDisksAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.convertToManagedDisksAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public OperationStatusResponse call(OperationStatusResponseInner inner) { + return new OperationStatusResponseImpl(inner, manager()); + } + }); + } + + @Override + public Observable deallocateAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.deallocateAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public OperationStatusResponse call(OperationStatusResponseInner inner) { + return new OperationStatusResponseImpl(inner, manager()); + } + }); + } + + @Override + public Observable generalizeAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.generalizeAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public OperationStatusResponse call(OperationStatusResponseInner inner) { + return new OperationStatusResponseImpl(inner, manager()); + } + }); + } + + @Override + public Observable powerOffAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.powerOffAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public OperationStatusResponse call(OperationStatusResponseInner inner) { + return new OperationStatusResponseImpl(inner, manager()); + } + }); + } + + @Override + public Observable restartAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.restartAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public OperationStatusResponse call(OperationStatusResponseInner inner) { + return new OperationStatusResponseImpl(inner, manager()); + } + }); + } + + @Override + public Observable startAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.startAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public OperationStatusResponse call(OperationStatusResponseInner inner) { + return new OperationStatusResponseImpl(inner, manager()); + } + }); + } + + @Override + public Observable redeployAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.redeployAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public OperationStatusResponse call(OperationStatusResponseInner inner) { + return new OperationStatusResponseImpl(inner, manager()); + } + }); + } + + @Override + public Observable performMaintenanceAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.performMaintenanceAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public OperationStatusResponse call(OperationStatusResponseInner inner) { + return new OperationStatusResponseImpl(inner, manager()); + } + }); + } + + @Override + public Observable runCommandAsync(String resourceGroupName, String vmName, RunCommandInput parameters) { + VirtualMachinesInner client = this.inner(); + return client.runCommandAsync(resourceGroupName, vmName, parameters) + .map(new Func1() { + @Override + public RunCommandResult call(RunCommandResultInner inner) { + return new RunCommandResultImpl(inner, manager()); + } + }); + } + + @Override + public Observable listByResourceGroupAsync(final String resourceGroupName) { + VirtualMachinesInner client = this.inner(); + return client.listByResourceGroupAsync(resourceGroupName) + .flatMapIterable(new Func1, Iterable>() { + @Override + public Iterable call(Page page) { + return page.items(); + } + }) + .map(new Func1() { + @Override + public VirtualMachine call(VirtualMachineInner inner) { + return new VirtualMachineImpl(inner, manager()); + } + }); + } + + @Override + public Observable listAsync() { + VirtualMachinesInner client = this.inner(); + return client.listAsync() + .flatMapIterable(new Func1, Iterable>() { + @Override + public Iterable call(Page page) { + return page.items(); + } + }) + .map(new Func1() { + @Override + public VirtualMachine call(VirtualMachineInner inner) { + return new VirtualMachineImpl(inner, manager()); + } + }); + } + + @Override + public Observable getExtensionsAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.getExtensionsAsync(resourceGroupName, vmName) + .map(new Func1() { + @Override + public VirtualMachineExtensionsListResult call(VirtualMachineExtensionsListResultInner inner) { + return new VirtualMachineExtensionsListResultImpl(inner, manager()); + } + }); + } + + @Override + public Observable listAvailableSizesAsync(String resourceGroupName, String vmName) { + VirtualMachinesInner client = this.inner(); + return client.listAvailableSizesAsync(resourceGroupName, vmName) + .flatMap(new Func1, Observable>() { + @Override + public Observable call(List innerList) { + return Observable.from(innerList); + } + }) + .map(new Func1() { + @Override + public VirtualMachineVirtualMachineSize call(VirtualMachineSizeInner inner) { + return wrapVirtualMachineVirtualMachineSizeModel(inner); + } + }); + } + +} diff --git a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachinesInner.java b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachinesInner.java index 68236ab662c2..8fe9606e717b 100644 --- a/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachinesInner.java +++ b/sdk/compute/mgmt-v2017_12_01/src/main/java/com/microsoft/azure/management/compute/v2017_12_01/implementation/VirtualMachinesInner.java @@ -43,6 +43,8 @@ import retrofit2.Response; import rx.functions.Func1; import rx.Observable; +import com.microsoft.azure.LongRunningFinalState; +import com.microsoft.azure.LongRunningOperationOptions; /** * An instance of this class provides access to all the operations defined @@ -74,6 +76,10 @@ interface VirtualMachinesService { @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions") Observable> getExtensions(@Path("resourceGroupName") String resourceGroupName, @Path("vmName") String vmName, @Path("subscriptionId") String subscriptionId, @Query("$expand") String expand, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.VirtualMachines listByLocation" }) + @GET("subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/virtualMachines") + Observable> listByLocation(@Path("location") String location, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.VirtualMachines capture" }) @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/capture") Observable> capture(@Path("resourceGroupName") String resourceGroupName, @Path("vmName") String vmName, @Path("subscriptionId") String subscriptionId, @Body VirtualMachineCaptureParameters parameters, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); @@ -194,6 +200,10 @@ interface VirtualMachinesService { @POST("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/runCommand") Observable> beginRunCommand(@Path("resourceGroupName") String resourceGroupName, @Path("vmName") String vmName, @Path("subscriptionId") String subscriptionId, @Body RunCommandInput parameters, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.VirtualMachines listByLocationNext" }) + @GET + Observable> listByLocationNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.compute.v2017_12_01.VirtualMachines listByResourceGroupNext" }) @GET Observable> listByResourceGroupNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); @@ -374,6 +384,121 @@ private ServiceResponse getExtensionsDe .build(response); } + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + * @param location The location for which virtual machines under the subscription are queried. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws CloudException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the PagedList<VirtualMachineInner> object if successful. + */ + public PagedList listByLocation(final String location) { + ServiceResponse> response = listByLocationSinglePageAsync(location).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return listByLocationNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + * @param location The location for which virtual machines under the subscription are queried. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listByLocationAsync(final String location, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + listByLocationSinglePageAsync(location), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return listByLocationNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + * @param location The location for which virtual machines under the subscription are queried. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<VirtualMachineInner> object + */ + public Observable> listByLocationAsync(final String location) { + return listByLocationWithServiceResponseAsync(location) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + * @param location The location for which virtual machines under the subscription are queried. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<VirtualMachineInner> object + */ + public Observable>> listByLocationWithServiceResponseAsync(final String location) { + return listByLocationSinglePageAsync(location) + .concatMap(new Func1>, Observable>>>() { + @Override + public Observable>> call(ServiceResponse> page) { + String nextPageLink = page.body().nextPageLink(); + if (nextPageLink == null) { + return Observable.just(page); + } + return Observable.just(page).concatWith(listByLocationNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + ServiceResponse> * @param location The location for which virtual machines under the subscription are queried. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<VirtualMachineInner> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> listByLocationSinglePageAsync(final String location) { + if (location == null) { + throw new IllegalArgumentException("Parameter location is required and cannot be null."); + } + if (this.client.subscriptionId() == null) { + throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null."); + } + if (this.client.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); + } + return service.listByLocation(location, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = listByLocationDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> listByLocationDelegate(Response response) throws CloudException, IOException, IllegalArgumentException { + return this.client.restClient().responseBuilderFactory()., CloudException>newInstance(this.client.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(CloudException.class) + .build(response); + } + /** * Captures the VM by copying virtual hard disks of the VM and outputs a template that can be used to create similar VMs. * @@ -448,7 +573,7 @@ public Observable> captureWith } Validator.validate(parameters); Observable> observable = service.capture(resourceGroupName, vmName, this.client.subscriptionId(), parameters, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -1369,7 +1494,7 @@ public Observable> convertToManage throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.convertToManagedDisks(resourceGroupName, vmName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -1525,7 +1650,7 @@ public Observable> deallocateWithS throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.deallocate(resourceGroupName, vmName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -2080,7 +2205,7 @@ public Observable> powerOffWithSer throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.powerOff(resourceGroupName, vmName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -2236,7 +2361,7 @@ public Observable> restartWithServ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.restart(resourceGroupName, vmName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -2392,7 +2517,7 @@ public Observable> startWithServic throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.start(resourceGroupName, vmName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -2483,7 +2608,7 @@ private ServiceResponse beginStartDelegate(Respons } /** - * The operation to redeploy a virtual machine. + * Shuts down the virtual machine, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmName The name of the virtual machine. @@ -2497,7 +2622,7 @@ public OperationStatusResponseInner redeploy(String resourceGroupName, String vm } /** - * The operation to redeploy a virtual machine. + * Shuts down the virtual machine, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmName The name of the virtual machine. @@ -2510,7 +2635,7 @@ public ServiceFuture redeployAsync(String resource } /** - * The operation to redeploy a virtual machine. + * Shuts down the virtual machine, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmName The name of the virtual machine. @@ -2527,7 +2652,7 @@ public OperationStatusResponseInner call(ServiceResponse> redeployWithSer throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.redeploy(resourceGroupName, vmName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** - * The operation to redeploy a virtual machine. + * Shuts down the virtual machine, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmName The name of the virtual machine. @@ -2566,7 +2691,7 @@ public OperationStatusResponseInner beginRedeploy(String resourceGroupName, Stri } /** - * The operation to redeploy a virtual machine. + * Shuts down the virtual machine, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmName The name of the virtual machine. @@ -2579,7 +2704,7 @@ public ServiceFuture beginRedeployAsync(String res } /** - * The operation to redeploy a virtual machine. + * Shuts down the virtual machine, moves it to a new node, and powers it back on. * * @param resourceGroupName The name of the resource group. * @param vmName The name of the virtual machine. @@ -2596,7 +2721,7 @@ public OperationStatusResponseInner call(ServiceResponse> performMaintena throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null."); } Observable> observable = service.performMaintenance(resourceGroupName, vmName, this.client.subscriptionId(), this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -2868,7 +2993,7 @@ public Observable> runCommandWithServiceR } Validator.validate(parameters); Observable> observable = service.runCommand(resourceGroupName, vmName, this.client.subscriptionId(), parameters, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent()); - return client.getAzureClient().getPostOrDeleteResultAsync(observable, new TypeToken() { }.getType()); + return client.getAzureClient().getPostOrDeleteResultAsync(observable, new LongRunningOperationOptions().withFinalStateVia(LongRunningFinalState.AZURE_ASYNC_OPERATION), new TypeToken() { }.getType()); } /** @@ -2966,6 +3091,117 @@ private ServiceResponse beginRunCommandDelegate(Response< .build(response); } + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws CloudException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the PagedList<VirtualMachineInner> object if successful. + */ + public PagedList listByLocationNext(final String nextPageLink) { + ServiceResponse> response = listByLocationNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return listByLocationNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceFuture object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listByLocationNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + listByLocationNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return listByLocationNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<VirtualMachineInner> object + */ + public Observable> listByLocationNextAsync(final String nextPageLink) { + return listByLocationNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<VirtualMachineInner> object + */ + public Observable>> listByLocationNextWithServiceResponseAsync(final String nextPageLink) { + return listByLocationNextSinglePageAsync(nextPageLink) + .concatMap(new Func1>, Observable>>>() { + @Override + public Observable>> call(ServiceResponse> page) { + String nextPageLink = page.body().nextPageLink(); + if (nextPageLink == null) { + return Observable.just(page); + } + return Observable.just(page).concatWith(listByLocationNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Gets all the virtual machines under the specified subscription for the specified location. + * + ServiceResponse> * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<VirtualMachineInner> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> listByLocationNextSinglePageAsync(final String nextPageLink) { + if (nextPageLink == null) { + throw new IllegalArgumentException("Parameter nextPageLink is required and cannot be null."); + } + String nextUrl = String.format("%s", nextPageLink); + return service.listByLocationNext(nextUrl, this.client.acceptLanguage(), this.client.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = listByLocationNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> listByLocationNextDelegate(Response response) throws CloudException, IOException, IllegalArgumentException { + return this.client.restClient().responseBuilderFactory()., CloudException>newInstance(this.client.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(CloudException.class) + .build(response); + } + /** * Lists all of the virtual machines in the specified resource group. Use the nextLink property in the response to get the next page of virtual machines. * diff --git a/sdk/core/azure-core-experimental/CHANGELOG.md b/sdk/core/azure-core-experimental/CHANGELOG.md index 369cd8bcefe5..9ed249c7810f 100644 --- a/sdk/core/azure-core-experimental/CHANGELOG.md +++ b/sdk/core/azure-core-experimental/CHANGELOG.md @@ -2,6 +2,7 @@ ## 1.0.0-beta.7 (2020-10-08) +- Added API `fromObject()` in `BinaryData` which uses `JsonSerializer` present in the classpath. - Added APIs to `JsonPatchDocument` which accept pre-serialized JSON. - Updated `azure-core` dependency to released version. diff --git a/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/util/BinaryData.java b/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/util/BinaryData.java index 2979599d21ca..060cda67f27b 100644 --- a/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/util/BinaryData.java +++ b/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/util/BinaryData.java @@ -5,7 +5,9 @@ import com.azure.core.util.FluxUtil; import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.serializer.JsonSerializerProviders; import com.azure.core.util.serializer.ObjectSerializer; +import com.azure.core.util.serializer.JsonSerializer; import com.azure.core.util.serializer.TypeReference; import static com.azure.core.util.FluxUtil.monoError; @@ -18,18 +20,20 @@ import java.io.InputStream; import java.io.UncheckedIOException; import java.nio.ByteBuffer; -import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Objects; /** * This class is an abstraction over many different ways that binary data can be represented. The {@link BinaryData} - * can be created from {@link InputStream}, {@link Flux} of {@link ByteBuffer}, {@link String}, {@link Object} and byte - * array. The data is collected from provided sources and stored into a byte array. + * can be created from {@link InputStream}, {@link Flux} of {@link ByteBuffer}, {@link String}, {@link Object}, or byte + * array. + *

Immutable data

+ * {@link BinaryData} is constructed by copying the given data. Once {@link BinaryData} is instantiated, it can not be + * changed. It provides various convenient APIs to get data out of {@link BinaryData}, they all start with the 'to' + * prefix, for example {@link BinaryData#toBytes()}. *

- * It also provides a way to serialize and deserialize an {@link Object} into {@link BinaryData} given an - * {@link ObjectSerializer}. Code samples are explained below. + * Code samples are presented below. * *

Create an instance from Bytes

* {@codesnippet com.azure.core.experimental.util.BinaryDocument.from#bytes} @@ -43,57 +47,48 @@ *

Get an Object from {@link BinaryData}

* {@codesnippet com.azure.core.experimental.util.BinaryDocument.to#ObjectAsync} * + *

Create an instance from Object

+ * {@codesnippet com.azure.core.experimental.util.BinaryDocument.from#Object} + * * @see ObjectSerializer + * @see JsonSerializer + * @see More about serialization */ public final class BinaryData { private static final ClientLogger LOGGER = new ClientLogger(BinaryData.class); - private final byte[] data; + private static final BinaryData EMPTY_DATA = new BinaryData(new byte[0]); - /** - * Create instance of {@link BinaryData} given the data. - * @param data to represent as bytes. - * @throws NullPointerException If {@code data} is null. - */ - BinaryData(byte[] data) { - Objects.requireNonNull(data, "'data' cannot be null."); - this.data = Arrays.copyOf(data, data.length); - } + private static final Object LOCK = new Object(); - /** - * Provides {@link InputStream} for the data represented by this {@link BinaryData} object. - * - *

Get InputStream from BinaryData

- * {@codesnippet com.azure.core.experimental.util.BinaryDocument.to#Stream} - * - * @return {@link InputStream} representing the binary data. - */ - public InputStream toStream() { - return new ByteArrayInputStream(this.data); - } + private final byte[] data; + + private static volatile JsonSerializer defaultJsonSerializer; /** - * Provides {@link Mono} of {@link InputStream} for the data represented by this {@link BinaryData} object. + * Create an instance of {@link BinaryData} from the given data. * - * @return {@link InputStream} representation of the {@link BinaryData}. + * @param data to represent as bytes. */ - public Mono toStreamAsync() { - return Mono.fromCallable(() -> toStream()); + BinaryData(byte[] data) { + this.data = data; } /** - * Create {@link BinaryData} instance with given {@link InputStream} as source of data. The {@link InputStream} is - * not closed by this function. + * Creates a {@link BinaryData} instance with given {@link InputStream} as source of data. The {@link InputStream} + * is not closed by this function. * *

Create an instance from InputStream

* {@codesnippet com.azure.core.experimental.util.BinaryDocument.from#Stream} * * @param inputStream to read bytes from. * @throws UncheckedIOException If any error in reading from {@link InputStream}. - * @throws NullPointerException if {@code inputStream} is null. + * @throws NullPointerException If {@code inputStream} is null. * @return {@link BinaryData} representing the binary data. */ public static BinaryData fromStream(InputStream inputStream) { - Objects.requireNonNull(inputStream, "'inputStream' cannot be null."); + if (Objects.isNull(inputStream)) { + return EMPTY_DATA; + } final int bufferSize = 1024; try { @@ -103,98 +98,125 @@ public static BinaryData fromStream(InputStream inputStream) { while ((nRead = inputStream.read(data, 0, data.length)) != -1) { dataOutputBuffer.write(data, 0, nRead); } + dataOutputBuffer.flush(); + + return new BinaryData(dataOutputBuffer.toByteArray()); - return fromBytes(dataOutputBuffer.toByteArray()); } catch (IOException ex) { throw LOGGER.logExceptionAsError(new UncheckedIOException(ex)); } } /** - * Asynchronously create {@link BinaryData} instance with given {@link InputStream} as source of data. The - * {@link InputStream} is not closed by this function. + * Asynchronously creates a {@link BinaryData} instance with the given {@link InputStream} as source of data. The + * {@link InputStream} is not closed by this function. If the {@link InputStream} is {@code null}, an empty + * {@link BinaryData} will be returned. * * @param inputStream to read bytes from. - * @throws NullPointerException if {@code inputStream} is null. * @return {@link Mono} of {@link BinaryData} representing the binary data. */ public static Mono fromStreamAsync(InputStream inputStream) { - Objects.requireNonNull(inputStream, "'inputStream' cannot be null."); - return Mono.fromCallable(() -> fromStream(inputStream)); } /** - * Create {@link BinaryData} instance with given {@link Flux} of {@link ByteBuffer} as source of data. It will - * collect all the bytes from {@link ByteBuffer} into {@link BinaryData}. + * Creates a {@link BinaryData} instance with given {@link Flux} of {@link ByteBuffer} as source of data. It will + * collect all the bytes from {@link ByteBuffer} into {@link BinaryData}. If the {@link Flux} is {@code null}, an + * empty {@link BinaryData} will be returned. * *

Create an instance from String

* {@codesnippet com.azure.core.experimental.util.BinaryDocument.from#Flux} * * @param data to use. - * @throws NullPointerException if {@code inputStream} is null. * @return {@link Mono} of {@link BinaryData} representing binary data. */ public static Mono fromFlux(Flux data) { if (Objects.isNull(data)) { - return monoError(LOGGER, new NullPointerException("'data' cannot be null.")); + return Mono.just(EMPTY_DATA); } return FluxUtil.collectBytesInByteBufferStream(data) - .flatMap(bytes -> Mono.just(fromBytes(bytes))); + .flatMap(bytes -> Mono.just(new BinaryData(bytes))); } /** - * Create {@link BinaryData} instance with given data and character set. - * - *

Create an instance from String

- * {@codesnippet com.azure.core.experimental.util.BinaryDocument.from#String} + * Creates a {@link BinaryData} instance with given data. The {@link String} is converted into bytes using UTF_8 + * character set. If the String is {@code null}, an empty {@link BinaryData} will be returned. * * @param data to use. - * @param charSet to use. - * @throws NullPointerException if {@code inputStream} is null. - * @return {@link BinaryData} representing the binary data. + * @return {@link BinaryData} representing binary data. */ - public static BinaryData fromString(String data, Charset charSet) { - Objects.requireNonNull(data, "'data' cannot be null."); + public static BinaryData fromString(String data) { + if (Objects.isNull(data) || data.length() == 0) { + return EMPTY_DATA; + } - return new BinaryData(data.getBytes(charSet)); + return new BinaryData(data.getBytes(StandardCharsets.UTF_8)); } /** - * Create {@link BinaryData} instance with given data. The {@link String} is converted into bytes using - * {@link StandardCharsets#UTF_8} character set. + * Creates a {@link BinaryData} instance with given byte array data. If the byte array is {@code null}, an empty + * {@link BinaryData} will be returned. * * @param data to use. - * @throws NullPointerException if {@code inputStream} is null. - * @return {@link BinaryData} representing binary data. + * @return {@link BinaryData} representing the binary data. */ - public static BinaryData fromString(String data) { - Objects.requireNonNull(data, "'data' cannot be null."); + public static BinaryData fromBytes(byte[] data) { + if (Objects.isNull(data) || data.length == 0) { + return EMPTY_DATA; + } - return new BinaryData(data.getBytes(StandardCharsets.UTF_8)); + return new BinaryData(Arrays.copyOf(data, data.length)); } /** - * Create {@link BinaryData} instance with given byte array data. + * Serialize the given {@link Object} into {@link BinaryData} using json serializer which is available on classpath. + * The serializer on classpath must implement {@link JsonSerializer} interface. If the given Object is {@code null}, + * an empty {@link BinaryData} will be returned. + *

Code sample

+ * {@codesnippet com.azure.core.experimental.util.BinaryDocument.from.default.serializer#Object} + + * @param data The {@link Object} which needs to be serialized into bytes. + * @throws IllegalStateException If a {@link JsonSerializer} cannot be found on the classpath. + * @return {@link BinaryData} representing the JSON serialized object. * - * @param data to use. - * @return {@link BinaryData} representing the binary data. + * @see JsonSerializer + * @see More about serialization */ - public static BinaryData fromBytes(byte[] data) { - return new BinaryData(data); + public static BinaryData fromObject(Object data) { + if (Objects.isNull(data)) { + return EMPTY_DATA; + } + final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + getDefaultSerializer().serialize(outputStream, data); + + return new BinaryData(outputStream.toByteArray()); } /** * Serialize the given {@link Object} into {@link BinaryData} using the provided {@link ObjectSerializer}. + * If the Object is {@code null}, an empty {@link BinaryData} will be returned. + *

You can provide your custom implementation of {@link ObjectSerializer} interface or use one provided in azure + * sdk by adding them as dependency. These implementations could be found at + * Json Jackson serializer + * and Gson based serializer. + * + *

Create an instance from Object

+ * {@codesnippet com.azure.core.experimental.util.BinaryDocument.from#Object} * * @param data The {@link Object} which needs to be serialized into bytes. * @param serializer to use for serializing the object. - * @throws NullPointerException if {@code inputStream} or {@code serializer} is null. + * @throws NullPointerException If {@code serializer} is null. * @return {@link BinaryData} representing binary data. + * @see ObjectSerializer + * @see JsonSerializer + * @see More about serialization */ public static BinaryData fromObject(Object data, ObjectSerializer serializer) { - Objects.requireNonNull(data, "'data' cannot be null."); + if (Objects.isNull(data)) { + return EMPTY_DATA; + } + Objects.requireNonNull(serializer, "'serializer' cannot be null."); final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); @@ -204,19 +226,25 @@ public static BinaryData fromObject(Object data, ObjectSerializer serializer) { /** * Serialize the given {@link Object} into {@link Mono} {@link BinaryData} using the provided - * {@link ObjectSerializer}. + * {@link ObjectSerializer}. If the Object is {@code null}, an empty {@link BinaryData} will be returned. + * + *

You can provide your custom implementation of {@link ObjectSerializer} interface or use one provided in azure + * sdk by adding them as dependency. These implementations could be found at + * Json Jackson serializer + * and Gson based serializer. * * @param data The {@link Object} which needs to be serialized into bytes. * @param serializer to use for serializing the object. - * @throws NullPointerException if {@code inputStream} or {@code serializer} is null. + * @throws NullPointerException If {@code serializer} is null. * @return {@link Mono} of {@link BinaryData} representing the binary data. + * @see ObjectSerializer + * @see More about serialization */ public static Mono fromObjectAsync(Object data, ObjectSerializer serializer) { - Objects.requireNonNull(data, "'data' cannot be null."); - Objects.requireNonNull(serializer, "'serializer' cannot be null."); - + if (Objects.isNull(serializer)) { + return monoError(LOGGER, new NullPointerException("'serializer' cannot be null.")); + } return Mono.fromCallable(() -> fromObject(data, serializer)); - } /** @@ -230,7 +258,7 @@ public byte[] toBytes() { /** * Provides {@link String} representation of this {@link BinaryData} object. The bytes are converted into - * {@link String} using {@link StandardCharsets#UTF_8} character set. + * {@link String} using the UTF-8 character set. * * @return {@link String} representation of the data. */ @@ -238,23 +266,21 @@ public String toString() { return new String(this.data, StandardCharsets.UTF_8); } - /** - * Provides {@link String} representation of this {@link BinaryData} object given a character set. - * - * @param charSet to use to convert bytes into {@link String}. - * @return {@link String} representation of the the binary data. - */ - public String toString(Charset charSet) { - return new String(this.data, charSet); - } - /** * Deserialize the bytes into the {@link Object} of given type by applying the provided {@link ObjectSerializer} on * the data. * + *

You can provide your custom implementation of {@link ObjectSerializer} interface or use one provided in azure + * sdk by adding them as dependency. These implementations could be found at + * Json Jackson serializer + * and Gson based serializer. + * + *

Code sample

+ * {@codesnippet com.azure.core.experimental.util.BinaryDocument.to#Object} * @param clazz representing the type of the Object. * @param serializer to use deserialize data into type. * @param Generic type that the data is deserialized into. + * @throws NullPointerException If {@code serializer} or {@code clazz} is null. * @return The {@link Object} of given type after deserializing the bytes. */ public T toObject(Class clazz, ObjectSerializer serializer) { @@ -267,8 +293,13 @@ public T toObject(Class clazz, ObjectSerializer serializer) { } /** - * Return a {@link Mono} by deserialize the bytes into the {@link Object} of given type after applying the provided - * {@link ObjectSerializer} on the {@link BinaryData}. + * Return a {@link Mono} by deserializing the bytes into the {@link Object} of given type after applying the + * provided {@link ObjectSerializer} on the {@link BinaryData}. + * + *

You can provide your custom implementation of {@link ObjectSerializer} interface or use one provided in azure + * sdk by adding them as dependency. These implementations could be found at + * Json Jackson serializer + * and Gson based serializer. * *

Gets the specified object

* {@codesnippet com.azure.core.experimental.util.BinaryDocument.to#ObjectAsync} @@ -276,10 +307,77 @@ public T toObject(Class clazz, ObjectSerializer serializer) { * @param clazz representing the type of the Object. * @param serializer to use deserialize data into type. * @param Generic type that the data is deserialized into. - * @throws NullPointerException if {@code clazz} or {@code serializer} is null. + * @throws NullPointerException If {@code clazz} or {@code serializer} is null. * @return The {@link Object} of given type after deserializing the bytes. */ public Mono toObjectAsync(Class clazz, ObjectSerializer serializer) { + + if (Objects.isNull(clazz)) { + return monoError(LOGGER, new NullPointerException("'clazz' cannot be null.")); + } else if (Objects.isNull(serializer)) { + return monoError(LOGGER, new NullPointerException("'serializer' cannot be null.")); + } return Mono.fromCallable(() -> toObject(clazz, serializer)); } + + /** + * Deserialize the bytes into the {@link Object} of given type by using json serializer which is available in + * classpath. The serializer must implement {@link JsonSerializer} interface. A singleton instance of + * {@link JsonSerializer} is kept for this class to use. + * + * @param clazz representing the type of the Object. + * @param Generic type that the data is deserialized into. + * @throws NullPointerException If {@code clazz} is null. + * @return The {@link Object} of given type after deserializing the bytes. + */ + public T toObject(Class clazz) { + Objects.requireNonNull(clazz, "'clazz' cannot be null."); + + TypeReference ref = TypeReference.createInstance(clazz); + InputStream jsonStream = new ByteArrayInputStream(this.data); + return getDefaultSerializer().deserialize(jsonStream, ref); + } + + /** + * Return a {@link Mono} by deserializing the bytes into the {@link Object} of given type after applying the Json + * serializer found on classpath. + * + *

Gets the specified object

+ * {@codesnippet com.azure.core.experimental.util.BinaryDocument.to#ObjectAsync} + * + * @param clazz representing the type of the Object. + * @param Generic type that the data is deserialized into. + * @throws NullPointerException If {@code clazz} is null. + * @return The {@link Object} of given type after deserializing the bytes. + */ + public Mono toObjectAsync(Class clazz) { + if (Objects.isNull(clazz)) { + return monoError(LOGGER, new NullPointerException("'clazz' cannot be null.")); + } + return Mono.fromCallable(() -> toObject(clazz)); + } + + /** + * Provides {@link InputStream} for the data represented by this {@link BinaryData} object. + * + *

Get InputStream from BinaryData

+ * {@codesnippet com.azure.core.experimental.util.BinaryDocument.to#Stream} + * + * @return {@link InputStream} representing the binary data. + */ + public InputStream toStream() { + return new ByteArrayInputStream(this.data); + } + + /* This will ensure lazy instantiation to avoid hard dependency on Json Serializer. */ + private static JsonSerializer getDefaultSerializer() { + if (defaultJsonSerializer == null) { + synchronized (LOCK) { + if (defaultJsonSerializer == null) { + defaultJsonSerializer = JsonSerializerProviders.createInstance(); + } + } + } + return defaultJsonSerializer; + } } diff --git a/sdk/core/azure-core-experimental/src/samples/java/com/azure/core/experimental/util/BinaryDateJavaDocCodeSnippet.java b/sdk/core/azure-core-experimental/src/samples/java/com/azure/core/experimental/util/BinaryDateJavaDocCodeSnippet.java index d4999b654cf2..a7211d27ca89 100644 --- a/sdk/core/azure-core-experimental/src/samples/java/com/azure/core/experimental/util/BinaryDateJavaDocCodeSnippet.java +++ b/sdk/core/azure-core-experimental/src/samples/java/com/azure/core/experimental/util/BinaryDateJavaDocCodeSnippet.java @@ -58,8 +58,8 @@ public void createFromString() { */ public void createFromStream() { // BEGIN: com.azure.core.experimental.util.BinaryDocument.from#Stream - final byte[] data = "Some Data".getBytes(StandardCharsets.UTF_8); - BinaryData binaryData = BinaryData.fromStream(new ByteArrayInputStream(data)); + final ByteArrayInputStream inputStream = new ByteArrayInputStream("Some Data".getBytes(StandardCharsets.UTF_8)); + BinaryData binaryData = BinaryData.fromStream(inputStream); System.out.println(binaryData.toString()); // END: com.azure.core.experimental.util.BinaryDocument.from#Stream } @@ -88,6 +88,40 @@ public void createFromFlux() throws InterruptedException { // END: com.azure.core.experimental.util.BinaryDocument.from#Flux } + /** + * Codesnippets for {@link BinaryData#fromObject(Object, ObjectSerializer)}. + */ + public void createFromObject() { + // BEGIN: com.azure.core.experimental.util.BinaryDocument.from#Object + // Lets say we have Person object which could be serialized into json. + class Person { + @JsonProperty + private String name; + + @JsonSetter + public Person setName(String name) { + this.name = name; + return this; + } + + @JsonGetter + public String getName() { + return name; + } + } + final Person data = new Person().setName("John"); + + // Provide your custom serializer or use Azure provided serializers. + // https://mvnrepository.com/artifact/com.azure/azure-core-serializer-json-jackson or + // https://mvnrepository.com/artifact/com.azure/azure-core-serializer-json-gson + + final ObjectSerializer serializer = + new MyJsonSerializer(); // Replace this with your Serializer or from above libraries. + BinaryData binaryData = BinaryData.fromObject(data, serializer); + System.out.println(binaryData.toString()); + // END: com.azure.core.experimental.util.BinaryDocument.from#Object + } + /** * Codesnippets for {@link BinaryData#toStream()}. */ @@ -124,8 +158,7 @@ public String getName() { } final Person data = new Person().setName("John"); - // Ensure your classpath have the Serializer to use to serialize object. For example you can use one of - // following library. + // Provide your custom serializer or use Azure provided serializers. // https://mvnrepository.com/artifact/com.azure/azure-core-serializer-json-jackson or // https://mvnrepository.com/artifact/com.azure/azure-core-serializer-json-gson @@ -133,7 +166,6 @@ public String getName() { new MyJsonSerializer(); // Replace this with your Serializer BinaryData binaryData = BinaryData.fromObject(data, serializer); - // Lets print the value of BinaryData Disposable subscriber = binaryData .toObjectAsync(Person.class, serializer) .map(person -> { @@ -148,6 +180,78 @@ public String getName() { // END: com.azure.core.experimental.util.BinaryDocument.to#ObjectAsync } + /** + * Codesnippets for {@link BinaryData#toObject(Class, ObjectSerializer)}. + */ + public void createToObject() { + // BEGIN: com.azure.core.experimental.util.BinaryDocument.to#Object + // Lets say we have Person object which could be serialized into json. + class Person { + @JsonProperty + private String name; + + @JsonSetter + public Person setName(String name) { + this.name = name; + return this; + } + + @JsonGetter + public String getName() { + return name; + } + } + final Person data = new Person().setName("John"); + + // Provide your custom serializer or use Azure provided serializers. + // https://mvnrepository.com/artifact/com.azure/azure-core-serializer-json-jackson or + // https://mvnrepository.com/artifact/com.azure/azure-core-serializer-json-gson + + final ObjectSerializer serializer = + new MyJsonSerializer(); // Replace this with your Serializer + BinaryData binaryData = BinaryData.fromObject(data, serializer); + + Person person = binaryData.toObject(Person.class, serializer); + // Lets print the name + System.out.println("Name : " + person.getName()); + + // END: com.azure.core.experimental.util.BinaryDocument.to#Object + } + + /** + * Codesnippets for {@link BinaryData#fromObject(Object)}. + */ + public void createFromObjectDefaultSerializer() { + // BEGIN: com.azure.core.experimental.util.BinaryDocument.from.default.serializer#Object + // Lets say we have Person object which could be serialized into json. + class Person { + @JsonProperty + private String name; + + @JsonSetter + public Person setName(String name) { + this.name = name; + return this; + } + + @JsonGetter + public String getName() { + return name; + } + } + final Person data = new Person().setName("John"); + + // Ensure your classpath have the Serializer to serialize the object which implement implement + // com.azure.core.util.serializer.JsonSerializer interface. + // Or use Azure provided libraries for this. + // https://mvnrepository.com/artifact/com.azure/azure-core-serializer-json-jackson or + // https://mvnrepository.com/artifact/com.azure/azure-core-serializer-json-gson + + BinaryData binaryData = BinaryData.fromObject(data); + System.out.println(binaryData.toString()); + // END: com.azure.core.experimental.util.BinaryDocument.from.default.serializer#Object + } + public static class MyJsonSerializer implements JsonSerializer { private final ClientLogger logger = new ClientLogger(BinaryDataTest.MyJsonSerializer.class); private final ObjectMapper mapper; @@ -192,4 +296,3 @@ public Mono serializeAsync(OutputStream stream, Object value) { } } } - diff --git a/sdk/core/azure-core-experimental/src/test/java/com/azure/core/experimental/util/BinaryDataTest.java b/sdk/core/azure-core-experimental/src/test/java/com/azure/core/experimental/util/BinaryDataTest.java index e0afe19e16d3..157b7d8ea094 100644 --- a/sdk/core/azure-core-experimental/src/test/java/com/azure/core/experimental/util/BinaryDataTest.java +++ b/sdk/core/azure-core-experimental/src/test/java/com/azure/core/experimental/util/BinaryDataTest.java @@ -85,34 +85,75 @@ public void createFromString() { } @Test - public void createFromStringCharSet() { + public void createFromByteArray() { // Arrange - final String expected = "Doe"; + final byte[] expected = "Doe".getBytes(StandardCharsets.UTF_8); // Act - final BinaryData data = BinaryData.fromString(expected, StandardCharsets.UTF_8); + final BinaryData data = new BinaryData(expected); // Assert - assertArrayEquals(expected.getBytes(), data.toBytes()); - assertEquals(expected, data.toString(StandardCharsets.UTF_8)); + assertArrayEquals(expected, data.toBytes()); } @Test - public void createFromByteArray() { + public void createFromNullStream() throws IOException { // Arrange - final byte[] expected = "Doe".getBytes(StandardCharsets.UTF_8); + final byte[] expected = new byte[0]; // Act - final BinaryData data = new BinaryData(expected); + BinaryData data = BinaryData.fromStream(null); + final byte[] actual = new byte[0]; + (data.toStream()).read(actual, 0, expected.length); // Assert assertArrayEquals(expected, data.toBytes()); + assertArrayEquals(expected, actual); + } + + @Test + public void createFromNullByteArray() { + // Arrange + final byte[] expected = new byte[0]; + + // Act + BinaryData actual = BinaryData.fromBytes(null); + + // Assert + assertArrayEquals(expected, actual.toBytes()); + } + + @Test + public void createFromNullObject() { + // Arrange + final byte[] expected = new byte[0]; + + // Act + BinaryData actual = BinaryData.fromObject(null); + + // Assert + assertArrayEquals(expected, actual.toBytes()); } @Test public void createFromStream() throws IOException { // Arrange final byte[] expected = "Doe".getBytes(StandardCharsets.UTF_8); + + // Act + BinaryData data = BinaryData.fromStream(new ByteArrayInputStream(expected)); + final byte[] actual = new byte[expected.length]; + (data.toStream()).read(actual, 0, expected.length); + + // Assert + assertArrayEquals(expected, data.toBytes()); + assertArrayEquals(expected, actual); + } + + @Test + public void createFromEmptyStream() throws IOException { + // Arrange + final byte[] expected = "".getBytes(); final byte[] actual = new byte[expected.length]; // Act @@ -140,7 +181,7 @@ public void createFromFlux() { } @Test - public void createFromStreamAsync() throws IOException { + public void createFromStreamAsync() { // Arrange final byte[] expected = "Doe".getBytes(StandardCharsets.UTF_8); @@ -152,27 +193,6 @@ public void createFromStreamAsync() throws IOException { .verifyComplete(); } - @Test - public void createToStreamAsync() { - // Arrange - final byte[] expected = "Doe".getBytes(StandardCharsets.UTF_8); - final BinaryData actual = BinaryData.fromStreamAsync(new ByteArrayInputStream(expected)).block(); - // Act & Assert - StepVerifier.create(actual.toStreamAsync()) - .assertNext(inutStream -> { - byte[] actualBytes = new byte[expected.length]; - - // Act - try { - inutStream.read(actualBytes, 0, expected.length); - } catch (IOException e) { - e.printStackTrace(); - } - Assertions.assertArrayEquals(expected, actualBytes); - }) - .verifyComplete(); - } - @Test public void createFromObjectAsync() { // Arrange @@ -189,6 +209,58 @@ public void createFromObjectAsync() { .verifyComplete(); } + + @Test + public void createFromEmptyString() { + // Arrange + final String expected = ""; + + // Act + final BinaryData data = BinaryData.fromString(expected); + + // Assert + assertArrayEquals(expected.getBytes(), data.toBytes()); + assertEquals(expected, data.toString()); + } + + @Test + public void createFromEmptyByteArray() { + // Arrange + final byte[] expected = new byte[0]; + + // Act + final BinaryData data = BinaryData.fromBytes(expected); + + // Assert + assertArrayEquals(expected, data.toBytes()); + } + + @Test + public void createFromNullString() { + // Arrange + final String expected = null; + + // Arrange & Act + final BinaryData data = BinaryData.fromString(expected); + + // Assert + assertArrayEquals(new byte[0], data.toBytes()); + assertEquals("", data.toString()); + } + + @Test + public void createFromNullByte() { + // Arrange + final byte[] expected = null; + + // Arrange & Act + final BinaryData data = BinaryData.fromBytes(expected); + + // Assert + assertArrayEquals(new byte[0], data.toBytes()); + assertEquals("", data.toString()); + } + public static class MyJsonSerializer implements JsonSerializer { private final ClientLogger logger = new ClientLogger(MyJsonSerializer.class); private final ObjectMapper mapper; diff --git a/sdk/core/azure-core/pom.xml b/sdk/core/azure-core/pom.xml index 62533be9e2e8..82714f23f444 100644 --- a/sdk/core/azure-core/pom.xml +++ b/sdk/core/azure-core/pom.xml @@ -183,6 +183,23 @@ + + + + com.github.spotbugs + spotbugs-maven-plugin + 3.1.12.2 + + + + com.h3xstream.findsecbugs + findsecbugs-plugin + 1.9.0 + + + + +
diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/HttpClientProviders.java b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/HttpClientProviders.java index 96b3d24120c8..fe826da4c305 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/HttpClientProviders.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/HttpClientProviders.java @@ -13,8 +13,11 @@ */ public final class HttpClientProviders { private static HttpClientProvider defaultProvider; - private static final String CANNOT_FIND_HTTP_CLIENT = - "Cannot find any HttpClient provider on the classpath - unable to create a default HttpClient instance"; + private static final String CANNOT_FIND_HTTP_CLIENT = "A request was made to load the default HttpClient provider " + + "but one could not be found on the classpath. If you are using a dependency manager, consider including a " + + "dependency on azure-core-http-netty or azure-core-http-okhttp. Depending on your existing dependencies, you " + + "have the choice of Netty or OkHttp implementations. Additionally, refer to " + + "https://aka.ms/azsdk/java/docs/custom-httpclient to learn about writing your own implementation."; static { ServiceLoader serviceLoader = ServiceLoader.load(HttpClientProvider.class); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchDocument.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchDocument.java index 2fd4f3d7a7f9..7cdb9feff4f1 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchDocument.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchDocument.java @@ -7,8 +7,7 @@ import com.azure.core.util.serializer.JacksonAdapter; import com.azure.core.util.serializer.JsonSerializer; import com.azure.core.util.serializer.JsonSerializerProviders; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -20,19 +19,15 @@ /** * Represents a JSON Patch document. */ -//@JsonSerialize(using = JsonPatchDocumentSerializer.class) -public class JsonPatchDocument { +@JsonSerialize(using = JsonPatchDocumentSerializer.class) +public final class JsonPatchDocument { private static final Object SERIALIZER_INSTANTIATION_SYNCHRONIZER = new Object(); private static volatile JsonSerializer defaultSerializer; - @JsonIgnore private final ClientLogger logger = new ClientLogger(JsonPatchDocument.class); - @JsonValue - private final List operations; - - @JsonIgnore private final JsonSerializer serializer; + private final List operations; /** * Creates a new JSON Patch document. @@ -53,7 +48,14 @@ public JsonPatchDocument(JsonSerializer serializer) { this.serializer = serializer; } - List getOperations() { + /** + * Gets a representation of the {@link JsonPatchOperation JSON patch operations} in this JSON patch document. + *

+ * Modifications to the returned list won't mutate the operations in the document. + * + * @return The JSON patch operations in this JSON patch document. + */ + public List getOperations() { return new ArrayList<>(operations); } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchDocumentSerializer.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchDocumentSerializer.java index 31eba6abd7d2..08e0ff8b4a92 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchDocumentSerializer.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchDocumentSerializer.java @@ -13,7 +13,7 @@ /** * Handles serialization of a {@link JsonPatchDocument}. */ -class JsonPatchDocumentSerializer extends JsonSerializer { +final class JsonPatchDocumentSerializer extends JsonSerializer { @Override public void serialize(JsonPatchDocument value, JsonGenerator gen, SerializerProvider serializers) throws IOException { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperation.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperation.java index cab3bd1528db..f9c6d9d18cf4 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperation.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperation.java @@ -3,6 +3,7 @@ package com.azure.core.util; +import com.azure.core.annotation.Immutable; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import java.util.Objects; @@ -11,8 +12,9 @@ /** * Represents a JSON Patch operation. */ +@Immutable @JsonSerialize(using = JsonPatchOperationSerializer.class) -final class JsonPatchOperation { +public final class JsonPatchOperation { private final JsonPatchOperationKind op; private final String from; private final String path; @@ -41,7 +43,7 @@ final class JsonPatchOperation { * * @return The kind of operation. */ - JsonPatchOperationKind getOp() { + public JsonPatchOperationKind getOp() { return op; } @@ -50,7 +52,7 @@ JsonPatchOperationKind getOp() { * * @return The operation from target path. */ - String getFrom() { + public String getFrom() { return from; } @@ -59,16 +61,18 @@ String getFrom() { * * @return The operation target path. */ - String getPath() { + public String getPath() { return path; } /** * Gets the operation value. + *

+ * If the operation doesn't take a value {@link Option#uninitialized()} will be returned. * * @return The operation value. */ - Option getValue() { + public Option getValue() { return value; } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperationKind.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperationKind.java index 57fe594f7bc5..2520e1f15572 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperationKind.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperationKind.java @@ -8,7 +8,7 @@ /** * Represents the JSON Patch operation kind. */ -enum JsonPatchOperationKind { +public enum JsonPatchOperationKind { /** * Add operation. */ @@ -45,6 +45,11 @@ enum JsonPatchOperationKind { this.op = op; } + /** + * Gets the string representation of the JSON patch operation kind. + * + * @return The string representation of the JSON patch operation kind. + */ @JsonValue public String toString() { return op; diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperationSerializer.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperationSerializer.java index acc60d4dee84..38ae5b5439a4 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperationSerializer.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/JsonPatchOperationSerializer.java @@ -12,7 +12,7 @@ /** * Handles serialization of a {@link JsonPatchOperation}. */ -class JsonPatchOperationSerializer extends JsonSerializer { +final class JsonPatchOperationSerializer extends JsonSerializer { @Override public void serialize(JsonPatchOperation value, JsonGenerator gen, SerializerProvider serializers) throws IOException { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/logging/ClientLogger.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/logging/ClientLogger.java index 090072a409e1..eb390c706729 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/logging/ClientLogger.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/logging/ClientLogger.java @@ -12,6 +12,7 @@ import java.util.Arrays; import java.util.Objects; +import java.util.regex.Pattern; /** * This is a fluent logger helper class that wraps a pluggable {@link Logger}. @@ -35,6 +36,7 @@ * @see Configuration */ public class ClientLogger { + private static final Pattern CRLF_PATTERN = Pattern.compile("[\r\n]"); private final Logger logger; /** @@ -70,7 +72,7 @@ public ClientLogger(String className) { */ public void verbose(String message) { if (logger.isDebugEnabled()) { - logger.debug(message); + logger.debug(sanitizeLogMessageInput(message)); } } @@ -106,7 +108,7 @@ public void verbose(String format, Object... args) { */ public void info(String message) { if (logger.isInfoEnabled()) { - logger.info(message); + logger.info(sanitizeLogMessageInput(message)); } } @@ -142,7 +144,7 @@ public void info(String format, Object... args) { */ public void warning(String message) { if (logger.isWarnEnabled()) { - logger.warn(message); + logger.warn(sanitizeLogMessageInput(message)); } } @@ -178,7 +180,7 @@ public void warning(String format, Object... args) { */ public void error(String message) { if (logger.isErrorEnabled()) { - logger.error(message); + logger.error(sanitizeLogMessageInput(message)); } } @@ -327,6 +329,7 @@ private void performLogging(LogLevel logLevel, boolean isExceptionLogging, Strin } } + sanitizeLogMessageInput(format); switch (logLevel) { case VERBOSE: logger.debug(format, args); @@ -401,4 +404,14 @@ private boolean doesArgsHaveThrowable(Object... args) { private Object[] removeThrowable(Object... args) { return Arrays.copyOf(args, args.length - 1); } + + /** + * Removes CRLF pattern in the {@code logMessage}. + * + * @param logMessage The log message to sanitize. + * @return The updated logMessage. + */ + private static String sanitizeLogMessageInput(String logMessage) { + return CRLF_PATTERN.matcher(logMessage).replaceAll(""); + } } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/serializer/JsonSerializerProviders.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/serializer/JsonSerializerProviders.java index f080043d7799..82131dd5b04a 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/serializer/JsonSerializerProviders.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/serializer/JsonSerializerProviders.java @@ -10,8 +10,12 @@ * This class is a proxy for using a {@link JsonSerializerProvider} loaded from the classpath. */ public final class JsonSerializerProviders { - private static final String CANNOT_FIND_JSON_SERIALIZER_PROVIDER = - "Cannot find any JSON serializer provider on the classpath."; + private static final String CANNOT_FIND_JSON_SERIALIZER_PROVIDER = "A request was made to load the default JSON " + + "serializer provider but one could not be found on the classpath. If you are using a dependency manager, " + + "consider including a dependency on azure-core-serializer-json-jackson or azure-core-serializer-json-gson. " + + "Depending on your existing dependencies, you have the choice of Jackson or GSON implementations. " + + "Additionally, refer to https://aka.ms/azsdk/java/docs/custom-jsonserializer to learn about writing your own " + + "implementation."; private static JsonSerializerProvider defaultProvider; private static boolean attemptedLoad; diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/util/JsonPatchDocumentTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/util/JsonPatchDocumentTests.java index 96e31e26bb4c..e530bd35731e 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/util/JsonPatchDocumentTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/util/JsonPatchDocumentTests.java @@ -42,6 +42,13 @@ public void jsonifyDocument(JsonPatchDocument document, String expected) throws assertEquals(expected, SERIALIZER.serialize(document, SerializerEncoding.JSON).replace(" ", "")); } + @ParameterizedTest + @MethodSource("formattingSupplier") + public void jsonifyOperations(JsonPatchDocument document, String expected) throws IOException { + assertEquals(expected, SERIALIZER.serialize(document.getOperations(), SerializerEncoding.JSON) + .replace(" ", "")); + } + private static Stream formattingSupplier() { JsonPatchDocument complexDocument = newDocument() .appendTest("/a/b/c", "foo") diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/util/logging/ClientLoggerTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/util/logging/ClientLoggerTests.java index 91b4c78d6845..11d6a8a804da 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/util/logging/ClientLoggerTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/util/logging/ClientLoggerTests.java @@ -80,6 +80,30 @@ public void logSimpleMessage(LogLevel logLevelToConfigure, LogLevel logLevelToUs assertEquals(logContainsMessage, logValues.contains(logMessage)); } + /** + * Test whether a log will be captured when the ClientLogger and message are configured to the passed log levels. + */ + @ParameterizedTest + @MethodSource("logMaliciousErrorSupplier") + @ResourceLock("SYSTEM_OUT") + public void logMaliciousMessage(LogLevel logLevelToConfigure, LogLevel logLevelToUse) + throws UnsupportedEncodingException { + String logMessage = "You have successfully authenticated, \r\n[INFO] User dummy was not" + + " successfully authenticated."; + + String expectedMessage = "You have successfully authenticated, [INFO] User dummy was not" + + " successfully authenticated."; + + String originalLogLevel = setupLogLevel(logLevelToConfigure.getLogLevel()); + logMessage(new ClientLogger(ClientLoggerTests.class), logLevelToUse, logMessage); + + setPropertyToOriginalOrClear(originalLogLevel); + + String logValues = logCaptureStream.toString("UTF-8"); + System.out.println(logValues); + assertEquals(true, logValues.contains(expectedMessage)); + } + @ParameterizedTest @MethodSource("singleLevelCheckSupplier") @ResourceLock("SYSTEM_OUT") @@ -461,6 +485,41 @@ private static Stream multiLevelCheckSupplier() { ); } + private static Stream logMaliciousErrorSupplier() { + return Stream.of( + // Supported logging level set to VERBOSE. + // Checking VERBOSE. + Arguments.of(LogLevel.VERBOSE, LogLevel.VERBOSE, true), + + // Checking INFORMATIONAL. + Arguments.of(LogLevel.VERBOSE, LogLevel.INFORMATIONAL, true), + + // Checking WARNING. + Arguments.of(LogLevel.VERBOSE, LogLevel.WARNING, true), + + // Checking ERROR. + Arguments.of(LogLevel.VERBOSE, LogLevel.ERROR, true), + + // Checking INFORMATIONAL. + Arguments.of(LogLevel.INFORMATIONAL, LogLevel.INFORMATIONAL, true), + + // Checking WARNING. + Arguments.of(LogLevel.INFORMATIONAL, LogLevel.WARNING, true), + + // Checking ERROR. + Arguments.of(LogLevel.INFORMATIONAL, LogLevel.ERROR, true), + + // Checking WARNING. + Arguments.of(LogLevel.WARNING, LogLevel.WARNING, true), + + // Checking ERROR. + Arguments.of(LogLevel.WARNING, LogLevel.ERROR, true), + + // Checking ERROR. + Arguments.of(LogLevel.ERROR, LogLevel.ERROR, true) + ); + } + private static Stream logExceptionAsWarningSupplier() { return Stream.of( Arguments.of(LogLevel.VERBOSE, true, true), diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/query/DocumentProducer.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/query/DocumentProducer.java index d7bd9a56153b..7f3622d00374 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/query/DocumentProducer.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/query/DocumentProducer.java @@ -147,7 +147,9 @@ public DocumentProducer( this.correlatedActivityId = correlatedActivityId; - this.cosmosQueryRequestOptions = cosmosQueryRequestOptions != null ? cosmosQueryRequestOptions : new CosmosQueryRequestOptions(); + this.cosmosQueryRequestOptions = cosmosQueryRequestOptions != null ? + ModelBridgeInternal.createQueryRequestOptions(cosmosQueryRequestOptions) + : new CosmosQueryRequestOptions(); ModelBridgeInternal.setQueryRequestOptionsContinuationToken(this.cosmosQueryRequestOptions, initialContinuationToken); this.lastResponseContinuationToken = initialContinuationToken; this.resourceType = resourceType; diff --git a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinsAsyncClient.java b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinsAsyncClient.java index 1f7374d2502d..84949cab3a39 100644 --- a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinsAsyncClient.java +++ b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinsAsyncClient.java @@ -741,13 +741,13 @@ Mono> listIncomingRelationshipsNextSinglePag * * {@codesnippet com.azure.digitaltwins.core.asyncClient.createModels#Iterable} * - * @param models The list of models to create. Each string corresponds to exactly one model. + * @param dtdlModels The list of models to create. Each string corresponds to exactly one model. * @return A List of created models. Each {@link DigitalTwinsModelData} instance in this list * will contain metadata about the created model, but will not contain the model itself. */ @ServiceMethod(returns = ReturnType.COLLECTION) - public Mono> createModels(Iterable models) { - return createModelsWithResponse(models, null) + public Mono> createModels(Iterable dtdlModels) { + return createModelsWithResponse(dtdlModels, null) .map(Response::getValue); } @@ -758,19 +758,19 @@ public Mono> createModels(Iterable model * * {@codesnippet com.azure.digitaltwins.core.asyncClient.createModelsWithResponse#Iterable-Options} * - * @param models The list of models to create. Each string corresponds to exactly one model. + * @param dtdlModels The list of models to create. Each string corresponds to exactly one model. * @param options The optional parameters for this request. If null, the default option values will be used. * @return A {@link Response} containing the list of created models. Each {@link DigitalTwinsModelData} instance in this list * will contain metadata about the created model, but will not contain the model itself. */ @ServiceMethod(returns = ReturnType.COLLECTION) - public Mono>> createModelsWithResponse(Iterable models, CreateModelsOptions options) { - return withContext(context -> createModelsWithResponse(models, options, context)); + public Mono>> createModelsWithResponse(Iterable dtdlModels, CreateModelsOptions options) { + return withContext(context -> createModelsWithResponse(dtdlModels, options, context)); } - Mono>> createModelsWithResponse(Iterable models, CreateModelsOptions options, Context context) { + Mono>> createModelsWithResponse(Iterable dtdlModels, CreateModelsOptions options, Context context) { List modelsPayload = new ArrayList<>(); - for (String model : models) { + for (String model : dtdlModels) { try { modelsPayload.add(mapper.readValue(model, Object.class)); } diff --git a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinsClient.java b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinsClient.java index a6f68d1bf297..957297dd3019 100644 --- a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinsClient.java +++ b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/DigitalTwinsClient.java @@ -506,13 +506,13 @@ public PagedIterable listIncomingRelationships(String digi * * {@codesnippet com.azure.digitaltwins.core.syncClient.createModels#Iterable} * - * @param models The list of models to create. Each string corresponds to exactly one model. + * @param dtdlModels The list of models to create. Each string corresponds to exactly one model. * @return A List of created models. Each {@link DigitalTwinsModelData} instance in this list * will contain metadata about the created model, but will not contain the model itself. */ @ServiceMethod(returns = ReturnType.COLLECTION) - public Iterable createModels(Iterable models) { - return createModelsWithResponse(models, null, Context.NONE).getValue(); + public Iterable createModels(Iterable dtdlModels) { + return createModelsWithResponse(dtdlModels, null, Context.NONE).getValue(); } /** @@ -522,15 +522,15 @@ public Iterable createModels(Iterable models) { * * {@codesnippet com.azure.digitaltwins.core.syncClient.createModelsWithResponse#Iterable} * - * @param models The list of models to create. Each string corresponds to exactly one model. + * @param dtdlModels The list of models to create. Each string corresponds to exactly one model. * @param options The optional parameters for this request. If null, the default option values will be used. * @param context Additional context that is passed through the Http pipeline during the service call. * @return A {@link Response} containing the list of created models. Each {@link DigitalTwinsModelData} instance in this list * will contain metadata about the created model, but will not contain the model itself. */ @ServiceMethod(returns = ReturnType.COLLECTION) - public Response> createModelsWithResponse(Iterable models, CreateModelsOptions options, Context context) { - return digitalTwinsAsyncClient.createModelsWithResponse(models, options, context).block(); + public Response> createModelsWithResponse(Iterable dtdlModels, CreateModelsOptions options, Context context) { + return digitalTwinsAsyncClient.createModelsWithResponse(dtdlModels, options, context).block(); } /** diff --git a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/models/DigitalTwinsModelData.java b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/models/DigitalTwinsModelData.java index 76d692fca598..beaadfcc4c9f 100644 --- a/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/models/DigitalTwinsModelData.java +++ b/sdk/digitaltwins/azure-digitaltwins-core/src/main/java/com/azure/digitaltwins/core/models/DigitalTwinsModelData.java @@ -49,24 +49,24 @@ public final class DigitalTwinsModelData { private boolean decommissioned; /* - * The model definition. + * The model definition that conforms to Digital Twins Definition Language (DTDL) v2. */ @JsonProperty(value = "model") - private String model; + private String dtdlModel; /** * Construct a new DigitalTwinsModelData instance. This class should only be constructed internally since the * service never takes this as an input. * * @param modelId The Id of the model. - * @param model The contents of the model. + * @param dtdlModel The contents of the model. * @param displayName The language map of the localized display names. * @param description The language map of the localized descriptions. * @param uploadTime The time when this model was uploaded. * @param decommissioned If this model has been decommissioned. */ public DigitalTwinsModelData(String modelId, - String model, + String dtdlModel, Map displayName, Map description, OffsetDateTime uploadTime, @@ -76,7 +76,7 @@ public DigitalTwinsModelData(String modelId, this.id = modelId; this.uploadTime = uploadTime; this.decommissioned = decommissioned; - this.model = model; + this.dtdlModel = dtdlModel; } /** @@ -132,7 +132,7 @@ public boolean isDecommissioned() { * * @return the model value. */ - public String getModel() { - return this.model; + public String getDtdlModel() { + return this.dtdlModel; } } diff --git a/sdk/digitaltwins/azure-digitaltwins-core/src/test/java/com/azure/digitaltwins/core/ModelsTestBase.java b/sdk/digitaltwins/azure-digitaltwins-core/src/test/java/com/azure/digitaltwins/core/ModelsTestBase.java index c32cfb502119..3de19c55b9aa 100644 --- a/sdk/digitaltwins/azure-digitaltwins-core/src/test/java/com/azure/digitaltwins/core/ModelsTestBase.java +++ b/sdk/digitaltwins/azure-digitaltwins-core/src/test/java/com/azure/digitaltwins/core/ModelsTestBase.java @@ -60,7 +60,7 @@ static void assertModelDataAreEqual(DigitalTwinsModelData expected, DigitalTwins // ModelData objects that are obtained through the createModels API do not populate the model field, so it isn't // worth comparing those ModelData objects with ModelData objects retrieved through getModel calls if (compareModel) { - assertEquals(expected.getModel(), actual.getModel()); + assertEquals(expected.getDtdlModel(), actual.getDtdlModel()); } assertEquals(expected.getDescriptionLanguageMap().size(), actual.getDescriptionLanguageMap().size()); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java index a21eb74f8f0b..0ffe23f98ad1 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java @@ -18,6 +18,7 @@ import com.azure.core.amqp.implementation.TokenManagerProvider; import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.annotation.ServiceClientBuilder; +import com.azure.core.annotation.ServiceClientProtocol; import com.azure.core.credential.TokenCredential; import com.azure.core.exception.AzureException; import com.azure.core.util.ClientOptions; @@ -94,7 +95,7 @@ * @see EventHubConsumerClient */ @ServiceClientBuilder(serviceClients = {EventHubProducerAsyncClient.class, EventHubProducerClient.class, - EventHubConsumerAsyncClient.class, EventHubConsumerClient.class}) + EventHubConsumerAsyncClient.class, EventHubConsumerClient.class}, protocol = ServiceClientProtocol.AMQP) public class EventHubClientBuilder { // Default number of events to fetch when creating the consumer. diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClient.java index 50c3d59d86f2..ee88f75aa6b0 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClient.java @@ -140,6 +140,7 @@ public Mono getEventHubProperties() { * * @return A Flux of identifiers for the partitions of an Event Hub. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public Flux getPartitionIds() { return getEventHubProperties().flatMapMany(properties -> Flux.fromIterable(properties.getPartitionIds())); } @@ -177,6 +178,7 @@ public Mono getPartitionProperties(String partitionId) { * @throws NullPointerException if {@code partitionId}, or {@code startingPosition} is null. * @throws IllegalArgumentException if {@code partitionId} is an empty string. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public Flux receiveFromPartition(String partitionId, EventPosition startingPosition) { return receiveFromPartition(partitionId, startingPosition, defaultReceiveOptions); } @@ -205,6 +207,7 @@ public Flux receiveFromPartition(String partitionId, EventPositi * null. * @throws IllegalArgumentException if {@code partitionId} is an empty string. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public Flux receiveFromPartition(String partitionId, EventPosition startingPosition, ReceiveOptions receiveOptions) { if (Objects.isNull(partitionId)) { @@ -235,6 +238,7 @@ public Flux receiveFromPartition(String partitionId, EventPositi * * @return A stream of events for every partition in the Event Hub starting from the beginning of each partition. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public Flux receive() { return receive(true, defaultReceiveOptions); } @@ -256,6 +260,7 @@ public Flux receive() { * * @return A stream of events for every partition in the Event Hub. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public Flux receive(boolean startReadingAtEarliestEvent) { return receive(startReadingAtEarliestEvent, defaultReceiveOptions); } @@ -289,6 +294,7 @@ public Flux receive(boolean startReadingAtEarliestEvent) { * * @throws NullPointerException if {@code receiveOptions} is null. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public Flux receive(boolean startReadingAtEarliestEvent, ReceiveOptions receiveOptions) { if (Objects.isNull(receiveOptions)) { return fluxError(logger, new NullPointerException("'receiveOptions' cannot be null.")); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerClient.java index bc985d7c54be..7abf3cd381d5 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerClient.java @@ -94,6 +94,7 @@ public EventHubProperties getEventHubProperties() { * * @return The set of identifiers for the partitions of an Event Hub. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public IterableStream getPartitionIds() { return new IterableStream<>(consumer.getPartitionIds()); } @@ -128,6 +129,7 @@ public PartitionProperties getPartitionProperties(String partitionId) { * @throws IllegalArgumentException if {@code maximumMessageCount} is less than 1, or if {@code partitionId} is an * empty string. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public IterableStream receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition) { return receiveFromPartition(partitionId, maximumMessageCount, startingPosition, timeout); @@ -150,6 +152,7 @@ public IterableStream receiveFromPartition(String partitionId, i * @throws IllegalArgumentException if {@code maximumMessageCount} is less than 1 or {@code maximumWaitTime} is * zero or a negative duration. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public IterableStream receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition, Duration maximumWaitTime) { if (Objects.isNull(maximumWaitTime)) { @@ -197,6 +200,7 @@ public IterableStream receiveFromPartition(String partitionId, i * @throws IllegalArgumentException if {@code maximumMessageCount} is less than 1 or {@code maximumWaitTime} is * zero or a negative duration. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public IterableStream receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition, Duration maximumWaitTime, ReceiveOptions receiveOptions) { if (Objects.isNull(maximumWaitTime)) { diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClient.java index 2a502d8afc86..760b7d6b135d 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClient.java @@ -171,6 +171,7 @@ public Mono getEventHubProperties() { * * @return A Flux of identifiers for the partitions of an Event Hub. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public Flux getPartitionIds() { return getEventHubProperties().flatMapMany(properties -> Flux.fromIterable(properties.getPartitionIds())); } @@ -194,6 +195,7 @@ public Mono getPartitionProperties(String partitionId) { * * @return A new {@link EventDataBatch} that can fit as many events as the transport allows. */ + @ServiceMethod(returns = ReturnType.SINGLE) public Mono createBatch() { return createBatch(DEFAULT_BATCH_OPTIONS); } @@ -205,6 +207,7 @@ public Mono createBatch() { * @return A new {@link EventDataBatch} that can fit as many events as the transport allows. * @throws NullPointerException if {@code options} is null. */ + @ServiceMethod(returns = ReturnType.SINGLE) public Mono createBatch(CreateBatchOptions options) { if (options == null) { return monoError(logger, new NullPointerException("'options' cannot be null.")); @@ -312,6 +315,7 @@ Mono send(EventData event, SendOptions options) { * @return A {@link Mono} that completes when all events are pushed to the service. * @throws AmqpException if the size of {@code events} exceed the maximum size of a single batch. */ + @ServiceMethod(returns = ReturnType.SINGLE) public Mono send(Iterable events) { if (events == null) { return monoError(logger, new NullPointerException("'events' cannot be null.")); @@ -338,6 +342,7 @@ public Mono send(Iterable events) { * @return A {@link Mono} that completes when all events are pushed to the service. * @throws AmqpException if the size of {@code events} exceed the maximum size of a single batch. */ + @ServiceMethod(returns = ReturnType.SINGLE) public Mono send(Iterable events, SendOptions options) { if (events == null) { return monoError(logger, new NullPointerException("'events' cannot be null.")); @@ -392,6 +397,7 @@ Mono send(Flux events, SendOptions options) { * @see EventHubProducerAsyncClient#createBatch() * @see EventHubProducerAsyncClient#createBatch(CreateBatchOptions) */ + @ServiceMethod(returns = ReturnType.SINGLE) public Mono send(EventDataBatch batch) { if (batch == null) { return monoError(logger, new NullPointerException("'batch' cannot be null.")); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerClient.java index 700fd8d9c648..f805d67b2c25 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerClient.java @@ -100,6 +100,7 @@ public EventHubProperties getEventHubProperties() { * * @return A Flux of identifiers for the partitions of an Event Hub. */ + @ServiceMethod(returns = ReturnType.COLLECTION) public IterableStream getPartitionIds() { return new IterableStream<>(producer.getPartitionIds()); } @@ -122,6 +123,7 @@ public PartitionProperties getPartitionProperties(String partitionId) { * * @return A new {@link EventDataBatch} that can fit as many events as the transport allows. */ + @ServiceMethod(returns = ReturnType.SINGLE) public EventDataBatch createBatch() { return producer.createBatch().block(tryTimeout); } @@ -135,6 +137,7 @@ public EventDataBatch createBatch() { * * @throws NullPointerException if {@code options} is null. */ + @ServiceMethod(returns = ReturnType.SINGLE) public EventDataBatch createBatch(CreateBatchOptions options) { return producer.createBatch(options).block(tryTimeout); } @@ -151,6 +154,7 @@ public EventDataBatch createBatch(CreateBatchOptions options) { * * @param event Event to send to the service. */ + @ServiceMethod(returns = ReturnType.SINGLE) void send(EventData event) { producer.send(event).block(); } @@ -168,6 +172,7 @@ void send(EventData event) { * @param event Event to send to the service. * @param options The set of options to consider when sending this event. */ + @ServiceMethod(returns = ReturnType.SINGLE) void send(EventData event, SendOptions options) { producer.send(event, options).block(); } @@ -188,6 +193,7 @@ void send(EventData event, SendOptions options) { * @param events Events to send to the service. * @throws AmqpException if the size of {@code events} exceed the maximum size of a single batch. */ + @ServiceMethod(returns = ReturnType.SINGLE) public void send(Iterable events) { producer.send(events).block(); } @@ -209,6 +215,7 @@ public void send(Iterable events) { * @param options The set of options to consider when sending this batch. * @throws AmqpException if the size of {@code events} exceed the maximum size of a single batch. */ + @ServiceMethod(returns = ReturnType.SINGLE) public void send(Iterable events, SendOptions options) { producer.send(events, options).block(); } @@ -221,6 +228,7 @@ public void send(Iterable events, SendOptions options) { * @see EventHubProducerClient#createBatch() * @see EventHubProducerClient#createBatch(CreateBatchOptions) */ + @ServiceMethod(returns = ReturnType.SINGLE) public void send(EventDataBatch batch) { producer.send(batch).block(); } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index f05c9ac0147c..b730ce667093 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -10,6 +10,11 @@ - Added support for providing locale info when recognizing receipts and business cards. Supported locales include support EN-US, EN-AU, EN-CA, EN-GB, EN-IN. - Added support for pre-built business card recognition. +- Added support to `beginRecognizeContent` to recognize selection marks such as check boxes and radio buttons. +- Added support to train and recognize custom forms with selection marks such as check boxes and radio buttons. +This functionality is only available in trained with labels scenarios. +- When passing `includeFieldElements` as true in `RecognizeCustomFormsOptions`, the property `fieldElements` on `FieldData` +and `FormTableCell` will also be populated with any selection marks found on the page. ### Breaking changes - Defaults to the latest supported API version, which currently is `2.1-preview.1`. diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/README.md b/sdk/formrecognizer/azure-ai-formrecognizer/README.md index becf1de61838..c420405ba47a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/README.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/README.md @@ -219,8 +219,9 @@ for (int i = 0; i < recognizedForms.size(); i++) { ``` ### Recognize Content -Recognize text and table structures, along with their bounding box coordinates, from documents. - +Recognize text, table structures and selection marks like radio buttons and check boxes, along with their bounding box +coordinates, from documents, without the need to train a model. + ```java // recognize form content using file input stream File form = new File("local/file_path/filename.png"); @@ -245,6 +246,11 @@ for (int i = 0; i < contentPageResults.size(); i++) { formTable.getCells().forEach(formTableCell -> System.out.printf("Cell has text %s.%n", formTableCell.getText())); }); + // Selection Mark + formPage.getSelectionMarks().forEach(selectionMark -> System.out.printf( + "Page: %s, Selection mark is %s within bounding box %s has a confidence score %.2f.%n", + selectionMark.getPageNumber(), selectionMark.getState(), selectionMark.getBoundingBox().toString(), + selectionMark.getConfidence())); } ``` @@ -254,7 +260,7 @@ can be found [here][service_recognize_receipt]. See [StronglyTypedRecognizedForm][strongly_typed_sample] for a suggested approach to extract information from receipts. - + ```java String receiptUrl = "https://docs.microsoft.com/azure/cognitive-services/form-recognizer/media" + "/contoso-allinone.jpg"; @@ -321,7 +327,7 @@ can be found [here][service_recognize_business_card]. See [StronglyTypedRecognizedForm][strongly_typed_sample] for a suggested approach to extract information from a business card. The given sample is for `receipt` but the same approach applies to `business card`. - + ```java String businessCardUrl = "https://raw.githubusercontent.com/Azure/azure-sdk-for-java/master/sdk/formrecognizer" @@ -384,7 +390,7 @@ for (int i = 0; i < businessCardPageResults.size(); i++) { Train a machine-learned model on your own form type. The resulting model will be able to recognize values from the types of forms it was trained on. Provide a container SAS url to your Azure Storage Blob container where you're storing the training documents. See details on setting this up in the [service quickstart documentation][quickstart_training]. - + ```java String trainingFilesUrl = "{SAS_URL_of_your_container_in_blob_storage}"; SyncPoller trainingPoller = @@ -417,7 +423,7 @@ customFormModel.getSubmodels().forEach(customFormSubmodel -> { ### Manage your models Manage the custom models in your Form Recognizer account. - + ```java // First, we see how many custom models we have, and what our limit is AccountProperties accountProperties = formTrainingClient.getAccountProperties(); @@ -458,7 +464,7 @@ to provide an invalid file source URL an `HttpResponseException` would be raised In the following code snippet, the error is handled gracefully by catching the exception and display the additional information about the error. - + ```java try { formRecognizerClient.beginRecognizeContentFromUrl("invalidSourceUrl"); @@ -493,7 +499,7 @@ These code samples show common scenario operations with the Azure Form Recognize #### Async APIs All the examples shown so far have been using synchronous APIs, but we provide full support for async APIs as well. You'll need to use `FormRecognizerAsyncClient` - + ```java FormRecognizerAsyncClient formRecognizerAsyncClient = new FormRecognizerClientBuilder() .credential(new AzureKeyCredential("{key}")) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java index 9a8b6272cb3e..8af6d97957de 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClient.java @@ -153,7 +153,7 @@ isFieldElementsIncluded, new SourcePath().setSource(formUrl), context) .andThen(after -> after.map(modelSimpleResponse -> toRecognizedForm(modelSimpleResponse.getValue().getAnalyzeResult(), isFieldElementsIncluded, - modelId)) + modelId, false)) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist))); } catch (RuntimeException ex) { return PollerFlux.error(ex); @@ -246,7 +246,7 @@ isFieldElementsIncluded, new SourcePath().setSource(formUrl), context) .andThen(after -> after.map(modelSimpleResponse -> toRecognizedForm(modelSimpleResponse.getValue().getAnalyzeResult(), isFieldElementsIncluded, - modelId)) + modelId, false)) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist))); } catch (RuntimeException ex) { return PollerFlux.error(ex); @@ -478,7 +478,7 @@ PollerFlux> beginRecognizeContent( .andThen(after -> after.map(modelSimpleResponse -> toRecognizedForm(modelSimpleResponse.getValue().getAnalyzeResult(), isFieldElementsIncluded, - null)) + null, false)) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist))); } catch (RuntimeException ex) { return PollerFlux.error(ex); @@ -573,7 +573,7 @@ public PollerFlux> beginReco .andThen(after -> after.map(modelSimpleResponse -> toRecognizedForm(modelSimpleResponse.getValue().getAnalyzeResult(), isFieldElementsIncluded, - null)) + null, false)) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist))); } catch (RuntimeException ex) { return PollerFlux.error(ex); @@ -655,7 +655,7 @@ PollerFlux> beginRecognizeBu .andThen(after -> after.map(modelSimpleResponse -> toRecognizedForm( modelSimpleResponse.getValue().getAnalyzeResult(), isFieldElementsIncluded, - null)) + null, true)) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist))); } catch (RuntimeException ex) { return PollerFlux.error(ex); @@ -748,7 +748,7 @@ PollerFlux> beginRecognizeBu .andThen(after -> after.map(modelSimpleResponse -> toRecognizedForm( modelSimpleResponse.getValue().getAnalyzeResult(), isFieldElementsIncluded, - null)) + null, true)) .onErrorMap(Utility::mapToHttpResponseExceptionIfExist))); } catch (RuntimeException ex) { return PollerFlux.error(ex); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClientBuilder.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClientBuilder.java index 5818a038515b..e7210807b508 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClientBuilder.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/FormRecognizerClientBuilder.java @@ -31,7 +31,6 @@ import java.net.MalformedURLException; import java.net.URL; -import java.time.Duration; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; @@ -99,7 +98,6 @@ public final class FormRecognizerClientBuilder { private FormRecognizerServiceVersion version; static final String OCP_APIM_SUBSCRIPTION_KEY = "Ocp-Apim-Subscription-Key"; - static final Duration DEFAULT_DURATION = Duration.ofSeconds(5); /** * The constructor with defaults. */ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/Transforms.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/Transforms.java index bffe38efdeab..74bb99310c86 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/Transforms.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/Transforms.java @@ -7,9 +7,11 @@ import com.azure.ai.formrecognizer.implementation.models.AnalyzeResult; import com.azure.ai.formrecognizer.implementation.models.DocumentResult; import com.azure.ai.formrecognizer.implementation.models.FieldValue; +import com.azure.ai.formrecognizer.implementation.models.FieldValueSelectionMark; import com.azure.ai.formrecognizer.implementation.models.KeyValuePair; import com.azure.ai.formrecognizer.implementation.models.PageResult; import com.azure.ai.formrecognizer.implementation.models.ReadResult; +import com.azure.ai.formrecognizer.implementation.models.SelectionMarkState; import com.azure.ai.formrecognizer.implementation.models.TextLine; import com.azure.ai.formrecognizer.implementation.models.TextWord; import com.azure.ai.formrecognizer.models.FieldBoundingBox; @@ -20,6 +22,7 @@ import com.azure.ai.formrecognizer.models.FormLine; import com.azure.ai.formrecognizer.models.FormPage; import com.azure.ai.formrecognizer.models.FormPageRange; +import com.azure.ai.formrecognizer.models.FormSelectionMark; import com.azure.ai.formrecognizer.models.FormTable; import com.azure.ai.formrecognizer.models.FormTableCell; import com.azure.ai.formrecognizer.models.FormWord; @@ -42,6 +45,7 @@ import static com.azure.ai.formrecognizer.implementation.Utility.forEachWithIndex; import static com.azure.ai.formrecognizer.implementation.models.FieldValueType.ARRAY; +import static com.azure.ai.formrecognizer.implementation.models.FieldValueType.OBJECT; /** * Helper class to convert service level models to SDK exposed models. @@ -63,10 +67,11 @@ private Transforms() { * @param includeFieldElements Boolean to indicate if to set reference elements data on fields. * * @param modelId the unlabeled model Id used for recognition. + * @param isBusinessCard boolean indicating if its recognizing a business card. * @return The List of {@code RecognizedForm}. */ static List toRecognizedForm(AnalyzeResult analyzeResult, boolean includeFieldElements, - String modelId) { + String modelId, boolean isBusinessCard) { List readResults = analyzeResult.getReadResults(); List documentResults = analyzeResult.getDocumentResults(); List pageResults = analyzeResult.getPageResults(); @@ -85,7 +90,8 @@ static List toRecognizedForm(AnalyzeResult analyzeResult, boolea formPageRange = new FormPageRange(1, 1); } - Map extractedFieldMap = getLabeledFieldMap(documentResultItem, readResults); + Map extractedFieldMap = getLabeledFieldMap(documentResultItem, readResults, + isBusinessCard); final RecognizedForm recognizedForm = new RecognizedForm( extractedFieldMap, documentResultItem.getDocType(), @@ -141,6 +147,7 @@ static List toRecognizedLayout(AnalyzeResult analyzeResult, boolean in forEachWithIndex(readResults, ((index, readResultItem) -> { List perPageTableList = new ArrayList<>(); + // add form tables if (!pageResultsIsNullOrEmpty) { PageResult pageResultItem = pageResults.get(index); perPageTableList = getPageTables(pageResultItem, readResults, pageResultItem.getPage()); @@ -152,13 +159,51 @@ static List toRecognizedLayout(AnalyzeResult analyzeResult, boolean in perPageFormLineList = getReadResultFormLines(readResultItem); } - // get form tables - formPages.add(getFormPage(readResultItem, perPageTableList, perPageFormLineList)); + // add selection marks + List perPageFormSelectionMarkList = new ArrayList<>(); + if (includeFieldElements && !CoreUtils.isNullOrEmpty(readResultItem.getSelectionMarks())) { + PageResult pageResultItem = pageResults.get(index); + perPageFormSelectionMarkList = getReadResultFormSelectionMarks(readResultItem, + pageResultItem.getPage()); + } + + formPages.add(getFormPage(readResultItem, perPageTableList, perPageFormLineList, + perPageFormSelectionMarkList)); })); return formPages; } + /** + * Helper method to convert the per page {@link ReadResult} item to {@link FormSelectionMark}. + * + * @param readResultItem The per page text extraction item result returned by the service. + * @param pageNumber The page number. + * + * @return A list of {@code FormSelectionMark}. + */ + static List getReadResultFormSelectionMarks(ReadResult readResultItem, int pageNumber) { + return readResultItem.getSelectionMarks().stream() + .map(selectionMark -> { + final FormSelectionMark formSelectionMark = new FormSelectionMark( + null, toBoundingBox(selectionMark.getBoundingBox()), pageNumber); + final SelectionMarkState selectionMarkStateImpl = selectionMark.getState(); + com.azure.ai.formrecognizer.models.SelectionMarkState selectionMarkState = null; + if (SelectionMarkState.SELECTED.equals(selectionMarkStateImpl)) { + selectionMarkState = com.azure.ai.formrecognizer.models.SelectionMarkState.SELECTED; + } else if (SelectionMarkState.UNSELECTED.equals(selectionMarkStateImpl)) { + selectionMarkState = com.azure.ai.formrecognizer.models.SelectionMarkState.UNSELECTED; + } else { + throw LOGGER.logThrowableAsError(new RuntimeException( + String.format("%s, unsupported selection mark state.", selectionMarkStateImpl))); + } + PrivateFieldAccessHelper.set(formSelectionMark, "confidence", selectionMark.getConfidence()); + PrivateFieldAccessHelper.set(formSelectionMark, "state", selectionMarkState); + return formSelectionMark; + }) + .collect(Collectors.toList()); + } + /** * Helper method to get per-page table information. * @@ -209,10 +254,11 @@ static List getReadResultFormLines(ReadResult readResultItem) { * * @param documentResultItem The extracted document level information. * @param readResults The text extraction result returned by the service. + * @param isBusinessCard boolean indicating if its recognizing a business card. * @return The {@link RecognizedForm#getFields}. */ private static Map getLabeledFieldMap(DocumentResult documentResultItem, - List readResults) { + List readResults, boolean isBusinessCard) { Map recognizedFieldMap = new LinkedHashMap<>(); // add receipt fields if (!CoreUtils.isNullOrEmpty(documentResultItem.getFields())) { @@ -226,7 +272,7 @@ private static Map getLabeledFieldMap(DocumentResult document valueData = new FieldData(fieldValue.getText(), toBoundingBox(fieldValue.getBoundingBox()), fieldValue.getPage(), formElementList); } - recognizedFieldMap.put(key, setFormField(key, valueData, fieldValue, readResults)); + recognizedFieldMap.put(key, setFormField(key, valueData, fieldValue, readResults, isBusinessCard)); } else { recognizedFieldMap.put(key, new FormField(key, null, null, null, DEFAULT_CONFIDENCE_VALUE)); @@ -241,14 +287,15 @@ private static Map getLabeledFieldMap(DocumentResult document * {@link FormField} with reference elements set when {@code includeFieldElements} is set to true. * * @param name The name of the field. - * @param fieldValue The named field values returned by the service. * @param valueData The value text of the field. + * @param fieldValue The named field values returned by the service. * @param readResults The text extraction result returned by the service. * + * @param isBusinessCard boolean indicating if its recognizing a business card. * @return The strongly typed {@link FormField} for the field input. */ private static FormField setFormField(String name, FieldData valueData, FieldValue fieldValue, - List readResults) { + List readResults, boolean isBusinessCard) { com.azure.ai.formrecognizer.models.FieldValue value; switch (fieldValue.getType()) { case PHONE_NUMBER: @@ -286,17 +333,37 @@ private static FormField setFormField(String name, FieldData valueData, FieldVal break; case ARRAY: value = new com.azure.ai.formrecognizer.models.FieldValue( - toFieldValueArray(fieldValue.getValueArray(), readResults), FieldValueType.LIST); + toFieldValueArray(fieldValue.getValueArray(), readResults, isBusinessCard), FieldValueType.LIST); break; case OBJECT: value = new com.azure.ai.formrecognizer.models.FieldValue( - toFieldValueObject(fieldValue.getValueObject(), readResults), FieldValueType.MAP); + toFieldValueObject(fieldValue.getValueObject(), readResults, isBusinessCard), FieldValueType.MAP); + break; + case SELECTION_MARK: + com.azure.ai.formrecognizer.models.SelectionMarkState selectionMarkState = null; + final FieldValueSelectionMark fieldValueSelectionMarkState = fieldValue.getValueSelectionMark(); + if (FieldValueSelectionMark.SELECTED.equals(fieldValueSelectionMarkState)) { + selectionMarkState = com.azure.ai.formrecognizer.models.SelectionMarkState.SELECTED; + } else if (FieldValueSelectionMark.UNSELECTED.equals(fieldValueSelectionMarkState)) { + selectionMarkState = com.azure.ai.formrecognizer.models.SelectionMarkState.UNSELECTED; + } else { + // TODO: (ServiceBug) + // Currently, the fieldValue's valueSelectionMark is null which is incorrect. + // Use the fieldValue's text as the temperately solution. + selectionMarkState = com.azure.ai.formrecognizer.models.SelectionMarkState.fromString( + fieldValue.getText()); + // throw LOGGER.logThrowableAsError(new RuntimeException( + // String.format("%s, unsupported selection mark state.", selectionMarkState))); + } + value = new com.azure.ai.formrecognizer.models.FieldValue(selectionMarkState, + FieldValueType.SELECTION_MARK_STATE); break; default: throw LOGGER.logExceptionAsError(new RuntimeException("FieldValue Type not supported")); } - return new FormField(name, null, valueData, value, setDefaultConfidenceValue(fieldValue.getConfidence())); + return new FormField(name, null, valueData, value, + setDefaultConfidenceValue(fieldValue.getConfidence())); } /** @@ -317,10 +384,11 @@ private static float setDefaultConfidenceValue(Float confidence) { * * @param valueObject The array of field values returned by the service in {@link FieldValue#getValueObject()}. * + * @param isBusinessCard boolean indicating if its recognizing a business card. * @return The Map of {@link FormField}. */ private static Map toFieldValueObject(Map valueObject, - List readResults) { + List readResults, boolean isBusinessCard) { Map fieldValueObjectMap = new TreeMap<>(); valueObject.forEach((key, fieldValue) -> fieldValueObjectMap.put(key, @@ -330,7 +398,7 @@ private static Map toFieldValueObject(Map fieldValue.getPage(), setReferenceElements(fieldValue.getElements(), readResults)), fieldValue, - readResults) + readResults, isBusinessCard) )); return fieldValueObjectMap; } @@ -342,20 +410,32 @@ private static Map toFieldValueObject(Map * * @param valueArray The array of field values returned by the service in {@link FieldValue#getValueArray()}. * @param readResults The text extraction result returned by the service. - * + * @param isBusinessCard boolean indicating if its recognizing a business card. * @return The List of {@link FormField}. */ - private static List toFieldValueArray(List valueArray, List readResults) { + private static List toFieldValueArray(List valueArray, List readResults, + boolean isBusinessCard) { return valueArray.stream() .map(fieldValue -> { FieldData valueData = null; // ARRAY has ho value data, such as bounding box. - if (ARRAY != fieldValue.getType()) { + if (ARRAY != fieldValue.getType() && OBJECT != fieldValue.getType()) { valueData = new FieldData(fieldValue.getText(), toBoundingBox(fieldValue.getBoundingBox()), - fieldValue.getPage() == null ? 1 : fieldValue.getPage(), + fieldValue.getPage(), setReferenceElements(fieldValue.getElements(), readResults)); + } else if (isBusinessCard && OBJECT.equals(fieldValue.getType())) { + // TODO: (savaity) Service bug, update after fixed. + if (fieldValue.getValueObject().get("FirstName") != null + && fieldValue.getValueObject().get("LastName") != null) { + if (fieldValue.getValueObject().get("FirstName").getPage() + .equals(fieldValue.getValueObject().get("LastName").getPage())) { + valueData = new FieldData(fieldValue.getText(), toBoundingBox(fieldValue.getBoundingBox()), + fieldValue.getValueObject().get("FirstName").getPage(), + setReferenceElements(fieldValue.getElements(), readResults)); + } + } } - return setFormField(null, valueData, fieldValue, readResults); + return setFormField(null, valueData, fieldValue, readResults, isBusinessCard); }) .collect(Collectors.toList()); } @@ -366,12 +446,13 @@ private static List toFieldValueArray(List valueArray, Li * @param readResultItem The per page text extraction item result returned by the service. * @param perPageTableList The per page tables list. * @param perPageLineList The per page form lines. + * @param perPageSelectionMarkList The per page selection marks. * * @return The per page {@code FormPage}. */ private static FormPage getFormPage(ReadResult readResultItem, List perPageTableList, - List perPageLineList) { - return new FormPage( + List perPageLineList, List perPageSelectionMarkList) { + FormPage formPage = new FormPage( readResultItem.getHeight(), readResultItem.getAngle(), LengthUnit.fromString(readResultItem.getUnit().toString()), @@ -379,6 +460,8 @@ private static FormPage getFormPage(ReadResult readResultItem, List p perPageLineList, perPageTableList, readResultItem.getPage()); + PrivateFieldAccessHelper.set(formPage, "selectionMarks", perPageSelectionMarkList); + return formPage; } /** diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/CreateComposedModelOptions.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/CreateComposedModelOptions.java index 2feb9692eb11..9a90df0d67bc 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/CreateComposedModelOptions.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/CreateComposedModelOptions.java @@ -7,12 +7,13 @@ import java.time.Duration; +import static com.azure.ai.formrecognizer.implementation.Utility.DEFAULT_POLL_INTERVAL; + /** * The configurable options to pass when creating a composed model. */ @Fluent public final class CreateComposedModelOptions { - private static final Duration DEFAULT_POLL_INTERVAL = Duration.ofSeconds(5); private String modelName; private Duration pollInterval = DEFAULT_POLL_INTERVAL; diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FieldValue.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FieldValue.java index a08b228a3e8e..7e36482b65e9 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FieldValue.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FieldValue.java @@ -17,6 +17,7 @@ import static com.azure.ai.formrecognizer.models.FieldValueType.LONG; import static com.azure.ai.formrecognizer.models.FieldValueType.MAP; import static com.azure.ai.formrecognizer.models.FieldValueType.PHONE_NUMBER; +import static com.azure.ai.formrecognizer.models.FieldValueType.SELECTION_MARK_STATE; import static com.azure.ai.formrecognizer.models.FieldValueType.STRING; import static com.azure.ai.formrecognizer.models.FieldValueType.TIME; @@ -33,6 +34,7 @@ public final class FieldValue { private Long formFieldLong; private LocalDate formFieldDate; private LocalTime formFieldTime; + private SelectionMarkState selectionMarkState; private String formFieldString; private String formFieldPhoneNumber; @@ -70,6 +72,9 @@ public FieldValue(final Object value, final FieldValueType valueType) { case MAP: formFieldMap = (Map) value; break; + case SELECTION_MARK_STATE: + selectionMarkState = (SelectionMarkState) value; + break; default: throw logger.logExceptionAsError(new IllegalStateException("Unexpected type value: " + valueType)); } @@ -196,4 +201,19 @@ public Map asMap() { } return this.formFieldMap; } + + /** + * Gets the value of the field as a selection mark state. + * + * @return the value of the field as an unmodifiable selection mark state. + * @throws UnsupportedOperationException if {@link FieldValue#getValueType()} is not + * {@link FieldValueType#SELECTION_MARK_STATE}. + */ + public SelectionMarkState asSelectionMarkState() { + if (SELECTION_MARK_STATE != this.getValueType()) { + throw logger.logExceptionAsError((new UnsupportedOperationException(String.format( + "Cannot get field as a %s from field value of type %s", SELECTION_MARK_STATE, this.getValueType())))); + } + return this.selectionMarkState; + } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FieldValueType.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FieldValueType.java index 9a87eb33e121..b459dbad3391 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FieldValueType.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FieldValueType.java @@ -27,5 +27,8 @@ public enum FieldValueType { LIST, /** Enum value map. */ - MAP; + MAP, + + /** Enum value selection mark state. */ + SELECTION_MARK_STATE; } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java index 269dda772def..01730ffe8506 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java @@ -3,15 +3,12 @@ package com.azure.ai.formrecognizer.models; -import com.azure.core.annotation.Immutable; - import java.util.Collections; import java.util.List; /** * The FormPage model. */ -@Immutable public final class FormPage { /* @@ -29,6 +26,11 @@ public final class FormPage { */ private final List tables; + /* + * List of selection marks extracted from the page. + */ + private List selectionMarks; + /* * The general orientation of the text in clockwise direction, measured in * degrees between (-180, 180]. @@ -140,5 +142,14 @@ public float getWidth() { public Integer getPageNumber() { return this.pageNumber; } + + /** + * Get the selection marks in the input document. + * + * @return the selection marks. + */ + public List getSelectionMarks() { + return Collections.unmodifiableList(this.selectionMarks); + } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormSelectionMark.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormSelectionMark.java new file mode 100644 index 000000000000..791ea518aa66 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormSelectionMark.java @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.formrecognizer.models; + +/** + * The FormSelectionMark model. + */ +public final class FormSelectionMark extends FormElement { + private float confidence; + private SelectionMarkState state; + + /** + * Creates a FormSelectionMark. + * + * @param text The text content of the extracted element. + * @param boundingBox The BoundingBox specifying relative coordinates of the element. + * @param pageNumber the 1 based page number. + */ + public FormSelectionMark(String text, FieldBoundingBox boundingBox, int pageNumber) { + super(text, boundingBox, pageNumber); + } + + /** + * {@inheritDoc} + */ + @Override + public FieldBoundingBox getBoundingBox() { + return super.getBoundingBox(); + } + + /** + * {@inheritDoc} + */ + @Override + public String getText() { + return super.getText(); + } + + /** + * {@inheritDoc} + */ + @Override + public int getPageNumber() { + return super.getPageNumber(); + } + + /** + * Gets the state property of the selection mark. + * + * @return the state property of the selection mark. + */ + public SelectionMarkState getState() { + return this.state; + } + + /** + * Gets the confidence property of the selection mark. + * + * @return the confidence property of the selection mark. + */ + public float getConfidence() { + return this.confidence; + } +} diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/SelectionMarkState.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/SelectionMarkState.java new file mode 100644 index 000000000000..9f3fc2bdd7d6 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/SelectionMarkState.java @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.formrecognizer.models; + +import com.azure.core.util.ExpandableStringEnum; + +/** Defines values for SelectionMarkState. i.e., Selected or Unselected */ +public final class SelectionMarkState extends ExpandableStringEnum { + /** + * Static value SELECTED for SelectionMarkState. + */ + public static final SelectionMarkState SELECTED = fromString("selected"); + + /** + * Static value UNSELECTED for SelectionMarkState. + */ + public static final SelectionMarkState UNSELECTED = fromString("unselected"); + + /** + * Creates or finds a SelectionMarkState from its string representation. + * + * @param value a value to look for. + * + * @return the corresponding SelectionMarkState. + */ + public static SelectionMarkState fromString(String value) { + return fromString(value, SelectionMarkState.class); + } +} diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/CustomModelTransforms.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/CustomModelTransforms.java index 1148a941f773..50634f274849 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/CustomModelTransforms.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/CustomModelTransforms.java @@ -12,15 +12,14 @@ import com.azure.ai.formrecognizer.training.models.CustomFormModel; import com.azure.ai.formrecognizer.training.models.CustomFormModelField; import com.azure.ai.formrecognizer.training.models.CustomFormModelInfo; +import com.azure.ai.formrecognizer.training.models.CustomFormModelProperties; import com.azure.ai.formrecognizer.training.models.CustomFormModelStatus; import com.azure.ai.formrecognizer.training.models.CustomFormSubmodel; -import com.azure.ai.formrecognizer.training.models.CustomFormModelProperties; import com.azure.ai.formrecognizer.training.models.TrainingDocumentInfo; import com.azure.ai.formrecognizer.training.models.TrainingStatus; import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; -import java.time.Duration; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -35,7 +34,6 @@ */ final class CustomModelTransforms { private static final ClientLogger LOGGER = new ClientLogger(CustomModelTransforms.class); - static final Duration DEFAULT_DURATION = Duration.ofSeconds(5); private CustomModelTransforms() { } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingAsyncClient.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingAsyncClient.java index 8c743c43cdfe..dd285eabc05b 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingAsyncClient.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/FormTrainingAsyncClient.java @@ -54,9 +54,9 @@ import java.util.function.Function; import java.util.stream.Collectors; +import static com.azure.ai.formrecognizer.implementation.Utility.DEFAULT_POLL_INTERVAL; import static com.azure.ai.formrecognizer.implementation.Utility.parseModelId; import static com.azure.ai.formrecognizer.implementation.Utility.urlActivationOperation; -import static com.azure.ai.formrecognizer.training.CustomModelTransforms.DEFAULT_DURATION; import static com.azure.ai.formrecognizer.training.CustomModelTransforms.toCustomFormModel; import static com.azure.ai.formrecognizer.training.CustomModelTransforms.toCustomFormModelInfo; import static com.azure.core.util.FluxUtil.monoError; @@ -423,7 +423,7 @@ public PollerFlux beginCopyM PollerFlux beginCopyModel(String modelId, CopyAuthorization target, Duration pollInterval, Context context) { - final Duration interval = pollInterval != null ? pollInterval : DEFAULT_DURATION; + final Duration interval = pollInterval != null ? pollInterval : DEFAULT_POLL_INTERVAL; return new PollerFlux( interval, getCopyActivationOperation(modelId, target, context), diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/models/TrainingOptions.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/models/TrainingOptions.java index 86944fcb192f..ec18e75b15cd 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/models/TrainingOptions.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/training/models/TrainingOptions.java @@ -7,12 +7,13 @@ import java.time.Duration; +import static com.azure.ai.formrecognizer.implementation.Utility.DEFAULT_POLL_INTERVAL; + /** * Options that may be passed when using training APIs on Form Training client. */ @Fluent public final class TrainingOptions { - private static final Duration DEFAULT_POLL_INTERVAL = Duration.ofSeconds(5); private Duration pollInterval = DEFAULT_POLL_INTERVAL; private TrainingFileFilter trainingFileFilter; private String modelName; diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledData.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledData.java index b39781d881e5..463bec20d6f3 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledData.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledData.java @@ -73,15 +73,10 @@ public static void main(String[] args) throws IOException { // `labelText` is not populated for a model trained with labels as this was the given label used to extract // the key formsWithLabeledModel.forEach(labeledForm -> labeledForm.getFields().forEach((label, formField) -> { - final StringBuilder boundingBoxStr = new StringBuilder(); - if (formField.getValueData().getBoundingBox() != null) { - formField.getValueData().getBoundingBox().getPoints().stream().map(point -> - String.format("[%.2f, %.2f]", point.getX(), point.getY())).forEach(boundingBoxStr::append); - } System.out.printf("Field %s has value data text %s based on %s within bounding box %s with a confidence " + "score of %.2f.%n", - label, formField.getValueData().getText(), formField.getValueData().getText(), boundingBoxStr, - formField.getConfidence()); + label, formField.getValueData().getText(), formField.getValueData().getText(), + formField.getValueData().getBoundingBox().toString(), formField.getConfidence()); // Find the value of a specific labeled field. System.out.println("Value for a specific labeled field using the training-time label:"); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledDataAsync.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledDataAsync.java index ad11769c1cc4..aa730b23f748 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledDataAsync.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/AdvancedDiffLabeledUnlabeledDataAsync.java @@ -103,15 +103,10 @@ public static void main(String[] args) throws IOException { // the key labeledDataResult.subscribe(formsWithLabeledModel -> formsWithLabeledModel.forEach(labeledForm -> labeledForm.getFields().forEach((label, formField) -> { - final StringBuilder boundingBoxStr = new StringBuilder(); - if (formField.getValueData().getBoundingBox() != null) { - formField.getValueData().getBoundingBox().getPoints().stream().map(point -> String.format("[%.2f," - + " %.2f]", point.getX(), point.getY())).forEach(boundingBoxStr::append); - } System.out.printf("Field %s has value data text %s based on %s within bounding box %s with " + "a confidence score of %.2f.%n", - label, formField.getValueData().getText(), formField.getValueData().getText(), boundingBoxStr, - formField.getConfidence()); + label, formField.getValueData().getText(), formField.getValueData().getText(), + formField.getValueData().getBoundingBox().toString(), formField.getConfidence()); // Find the value of a specific labeled field. System.out.println("Value for a specific labeled field using the training-time label:"); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxes.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxes.java index e6483c8b043b..d516acc3a526 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxes.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxes.java @@ -70,8 +70,8 @@ public static void main(String[] args) { System.out.printf("Cell text %s has following words: %n", formTableCell.getText()); // FormElements only exists if you set includeFieldElements to true in your // call to beginRecognizeCustomFormsFromUrl - // It is also a list of FormWords and FormLines, but in this example, we only deal with - // FormWords + // It is also a list of FormWords, FormLines and FormSelectionMarks, but in this example, + // we only deal with FormWords. formTableCell.getFieldElements().stream() .filter(formContent -> formContent instanceof FormWord) .map(formContent -> (FormWord) (formContent)) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxesAsync.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxesAsync.java index 28385c37cb92..79700e578548 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxesAsync.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/GetBoundingBoxesAsync.java @@ -82,22 +82,15 @@ public static void main(String[] args) { System.out.printf("Cell text %s has following words: %n", formTableCell.getText()); // FormElements only exists if you set includeFieldElements to true in your // call to beginRecognizeCustomFormsFromUrl - // It is also a list of FormWords and FormLines, but in this example, we only deal with - // FormWords + // It is also a list of FormWords, FormLines and FormSelectionMarks, but in this example, + // we only deal with FormWords. formTableCell.getFieldElements().stream() .filter(formContent -> formContent instanceof FormWord) .map(formContent -> (FormWord) (formContent)) - .forEach(formWordElement -> { - final StringBuilder boundingBoxStr = new StringBuilder(); - if (formWordElement.getBoundingBox() != null) { - formWordElement.getBoundingBox().getPoints().forEach(point -> - boundingBoxStr.append(String.format("[%.2f, %.2f]", point.getX(), - point.getY()))); - } + .forEach(formWordElement -> System.out.printf("Word '%s' within bounding box %s with a confidence of %.2f.%n", - formWordElement.getText(), boundingBoxStr, - formWordElement.getConfidence()); - }); + formWordElement.getText(), formWordElement.getBoundingBox().toString(), + formWordElement.getConfidence())); }); System.out.println(); } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/ReadmeSamples.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/ReadmeSamples.java index 03c71373c2f0..c3d647fe53dd 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/ReadmeSamples.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/ReadmeSamples.java @@ -136,6 +136,11 @@ public void recognizeContent() throws IOException { formTable.getCells().forEach(formTableCell -> System.out.printf("Cell has text %s.%n", formTableCell.getText())); }); + // Selection Mark + formPage.getSelectionMarks().forEach(selectionMark -> System.out.printf( + "Page: %s, Selection mark is %s within bounding box %s has a confidence score %.2f.%n", + selectionMark.getPageNumber(), selectionMark.getState(), selectionMark.getBoundingBox().toString(), + selectionMark.getConfidence())); } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContent.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContent.java index db5df5f1694f..88537f386138 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContent.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContent.java @@ -4,8 +4,8 @@ package com.azure.ai.formrecognizer; import com.azure.ai.formrecognizer.models.FormPage; -import com.azure.ai.formrecognizer.models.FormTable; import com.azure.ai.formrecognizer.models.FormRecognizerOperationResult; +import com.azure.ai.formrecognizer.models.FormTable; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.polling.SyncPoller; @@ -58,13 +58,8 @@ public static void main(final String[] args) throws IOException { System.out.printf("Table %d has %d rows and %d columns.%n", i1, formTable.getRowCount(), formTable.getColumnCount()); formTable.getCells().forEach(formTableCell -> { - final StringBuilder boundingBoxStr = new StringBuilder(); - if (formTableCell.getBoundingBox() != null) { - formTableCell.getBoundingBox().getPoints().forEach(point -> - boundingBoxStr.append(String.format("[%.2f, %.2f]", point.getX(), point.getY()))); - } System.out.printf("Cell has text '%s', within bounding box %s.%n", formTableCell.getText(), - boundingBoxStr); + formTableCell.getBoundingBox().toString()); }); System.out.println(); } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContentFromUrlAsync.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContentFromUrlAsync.java index f7c239c4c64e..12ad86480128 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContentFromUrlAsync.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContentFromUrlAsync.java @@ -4,8 +4,8 @@ package com.azure.ai.formrecognizer; import com.azure.ai.formrecognizer.models.FormPage; -import com.azure.ai.formrecognizer.models.FormTable; import com.azure.ai.formrecognizer.models.FormRecognizerOperationResult; +import com.azure.ai.formrecognizer.models.FormTable; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.polling.PollerFlux; import reactor.core.publisher.Mono; @@ -25,7 +25,6 @@ public class RecognizeContentFromUrlAsync { */ public static void main(final String[] args) { // Instantiate a client that will be used to call the service. - FormRecognizerAsyncClient client = new FormRecognizerClientBuilder() .credential(new AzureKeyCredential("{key}")) .endpoint("https://{endpoint}.cognitiveservices.azure.com/") @@ -59,15 +58,9 @@ public static void main(final String[] args) { final FormTable formTable = tables.get(i1); System.out.printf("Table %d has %d rows and %d columns.%n", i1, formTable.getRowCount(), formTable.getColumnCount()); - formTable.getCells().forEach(formTableCell -> { - final StringBuilder boundingBoxStr = new StringBuilder(); - if (formTableCell.getBoundingBox() != null) { - formTableCell.getBoundingBox().getPoints().forEach(point -> - boundingBoxStr.append(String.format("[%.2f, %.2f]", point.getX(), point.getY()))); - } + formTable.getCells().forEach(formTableCell -> System.out.printf("Cell has text '%s', within bounding box %s.%n", formTableCell.getText(), - boundingBoxStr); - }); + formTableCell.getBoundingBox().toString())); System.out.println(); } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContentWithSelectionMarks.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContentWithSelectionMarks.java new file mode 100644 index 000000000000..5a964da25d12 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeContentWithSelectionMarks.java @@ -0,0 +1,76 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.formrecognizer; + +import com.azure.ai.formrecognizer.models.FormPage; +import com.azure.ai.formrecognizer.models.FormRecognizerOperationResult; +import com.azure.ai.formrecognizer.models.FormSelectionMark; +import com.azure.ai.formrecognizer.models.FormTable; +import com.azure.core.credential.AzureKeyCredential; +import com.azure.core.util.polling.SyncPoller; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.util.List; + +/** + * Sample for recognizing content information with selection mark from a document given through a file. + */ +public class RecognizeContentWithSelectionMarks { + /** + * Main method to invoke this demo. + * + * @param args Unused. Arguments to the program. + * + * @throws IOException Exception thrown when there is an error in reading all the bytes from the File. + */ + public static void main(final String[] args) throws IOException { + // Instantiate a client that will be used to call the service. + FormRecognizerClient client = new FormRecognizerClientBuilder() + .credential(new AzureKeyCredential("{key}")) + .endpoint("https://{endpoint}.cognitiveservices.azure.com/") + .buildClient(); + + File sourceFile = new File("../formrecognizer/azure-ai-formrecognizer/src/samples/java/sample-forms/" + + "forms/selectionMarkForm.pdf"); + byte[] fileContent = Files.readAllBytes(sourceFile.toPath()); + InputStream targetStream = new ByteArrayInputStream(fileContent); + + SyncPoller> recognizeContentPoller = + client.beginRecognizeContent(targetStream, sourceFile.length()); + + List contentPageResults = recognizeContentPoller.getFinalResult(); + + for (int i = 0; i < contentPageResults.size(); i++) { + final FormPage formPage = contentPageResults.get(i); + System.out.printf("---- Recognized content info for page %d ----%n", i); + // Table information + System.out.printf("Has width: %.2f and height: %.2f, measured with unit: %s%n", formPage.getWidth(), + formPage.getHeight(), + formPage.getUnit()); + final List tables = formPage.getTables(); + for (int i1 = 0; i1 < tables.size(); i1++) { + final FormTable formTable = tables.get(i1); + System.out.printf("Table %d has %d rows and %d columns.%n", i1, formTable.getRowCount(), + formTable.getColumnCount()); + formTable.getCells().forEach(formTableCell -> + System.out.printf("Cell has text '%s', within bounding box %s.%n", formTableCell.getText(), + formTableCell.getBoundingBox().toString())); + System.out.println(); + } + // Selection Mark + for (FormSelectionMark selectionMark : formPage.getSelectionMarks()) { + System.out.printf( + "Page: %s, Selection mark is %s within bounding box %s has a confidence score %.2f.%n", + selectionMark.getPageNumber(), + selectionMark.getState(), + selectionMark.getBoundingBox().toString(), + selectionMark.getConfidence()); + } + } + } +} diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeCustomFormsAsyncWithSelectionMarks.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeCustomFormsAsyncWithSelectionMarks.java new file mode 100644 index 000000000000..6bc65aa86ec2 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeCustomFormsAsyncWithSelectionMarks.java @@ -0,0 +1,129 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.formrecognizer; + +import com.azure.ai.formrecognizer.models.FormPage; +import com.azure.ai.formrecognizer.models.FormRecognizerOperationResult; +import com.azure.ai.formrecognizer.models.FormSelectionMark; +import com.azure.ai.formrecognizer.models.FormTable; +import com.azure.ai.formrecognizer.models.RecognizeCustomFormsOptions; +import com.azure.ai.formrecognizer.models.RecognizedForm; +import com.azure.core.credential.AzureKeyCredential; +import com.azure.core.util.polling.PollerFlux; +import reactor.core.publisher.Mono; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static com.azure.ai.formrecognizer.implementation.Utility.toFluxByteBuffer; + +/** + * Async sample to analyze a form with selection mark from a document with a custom trained model. To learn how to train + * your own models, look at TrainModelWithoutLabels.java and TrainModelWithLabels.java. + */ +public class RecognizeCustomFormsAsyncWithSelectionMarks { + /** + * Main method to invoke this demo. + * + * @param args Unused arguments to the program. + * + * @throws IOException Exception thrown when there is an error in reading all the bytes from the File. + */ + public static void main(String[] args) throws IOException { + // Instantiate a client that will be used to call the service. + FormRecognizerAsyncClient client = new FormRecognizerClientBuilder() + .credential(new AzureKeyCredential("{key}")) + .endpoint("https://{endpoint}.cognitiveservices.azure.com/") + .buildAsyncClient(); + + // The form you are recognizing must be of the same type as the forms the custom model was trained on + File sourceFile = new File("../formrecognizer/azure-ai-formrecognizer/src/samples/java/sample-forms/" + + "forms/selectionMarkForm.pdf"); + byte[] fileContent = Files.readAllBytes(sourceFile.toPath()); + String modelId = "{modelId}"; + PollerFlux> recognizeFormPoller; + // Selection mark will only be available when includeFieldElements is true. + try (InputStream targetStream = new ByteArrayInputStream(fileContent)) { + recognizeFormPoller = client.beginRecognizeCustomForms(modelId, toFluxByteBuffer(targetStream), + sourceFile.length(), new RecognizeCustomFormsOptions().setFieldElementsIncluded(true)); + } + + Mono> recognizeFormResult = + recognizeFormPoller + .last() + .flatMap(pollResponse -> { + if (pollResponse.getStatus().isComplete()) { + // training completed successfully, retrieving final result. + return pollResponse.getFinalResult(); + } else { + return Mono.error(new RuntimeException("Polling completed unsuccessfully with status:" + + pollResponse.getStatus())); + } + }); + + recognizeFormResult.subscribe(recognizedForms -> { + for (int i = 0; i < recognizedForms.size(); i++) { + final RecognizedForm form = recognizedForms.get(i); + System.out.printf("----------- Recognized custom form info for page %d -----------%n", i); + System.out.printf("Form type: %s%n", form.getFormType()); + System.out.printf("Form has form type confidence : %.2f%n", form.getFormTypeConfidence()); + System.out.printf("Form was analyzed with model with ID: ", form.getModelId()); + form.getFields().forEach((label, formField) -> { + System.out.printf("Field '%s' has label '%s' with confidence score of %.2f.%n", label, + formField.getLabelData().getText(), + formField.getConfidence()); + }); + + // Page Information + final List pages = form.getPages(); + for (int i1 = 0; i1 < pages.size(); i1++) { + final FormPage formPage = pages.get(i1); + System.out.printf("------- Recognizing info on page %s of Form ------- %n", i1); + System.out.printf("Has width: %f, angle: %.2f, height: %f %n", formPage.getWidth(), + formPage.getTextAngle(), formPage.getHeight()); + // Table information + System.out.println("Recognized Tables: "); + final List tables = formPage.getTables(); + for (int i2 = 0; i2 < tables.size(); i2++) { + final FormTable formTable = tables.get(i2); + System.out.printf("Table %d%n", i2); + formTable.getCells() + .forEach(formTableCell -> { + System.out.printf("Cell text %s has following words: %n", formTableCell.getText()); + // FormElements only exists if you set includeFieldElements to true in your + // call to beginRecognizeCustomFormsFromUrl + // It is also a list of FormWords, FormLines and FormSelectionMarks, but in this example, + // we only deal with FormSelectionMarks. + formTableCell.getFieldElements().stream() + .filter(formContent -> formContent instanceof FormSelectionMark) + .map(formContent -> (FormSelectionMark) (formContent)) + .forEach(selectionMark -> + System.out.printf("Page: %s, Selection mark is %s within bounding box %s has a " + + "confidence score %.2f.%n", + selectionMark.getPageNumber(), + selectionMark.getState(), + selectionMark.getBoundingBox().toString(), + selectionMark.getConfidence())); + }); + System.out.println(); + } + } + } + }); + + // The .subscribe() creation and assignment is not a blocking call. For the purpose of this example, we sleep + // the thread so the program does not end before the send operation is complete. Using .block() instead of + // .subscribe() will turn this into a synchronous call. + try { + TimeUnit.MINUTES.sleep(1); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeCustomFormsFromUrl.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeCustomFormsFromUrl.java index 91be572b0ab3..862718b44ae3 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeCustomFormsFromUrl.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeCustomFormsFromUrl.java @@ -45,8 +45,8 @@ public static void main(String[] args) { form.getFields().forEach((label, formField) -> // label data is populated if you are using a model trained with unlabeled data, // since the service needs to make predictions for labels if not explicitly given to it. - System.out.printf("Field '%s' has label '%s' with a confidence " - + "score of %.2f.%n", label, formField.getLabelData().getText(), formField.getConfidence())); + System.out.printf("Field '%s' has label '%s' with a confidence score of %.2f.%n", + label, formField.getLabelData().getText(), formField.getConfidence())); } } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/sample-forms/forms/selectionMarkForm.pdf b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/sample-forms/forms/selectionMarkForm.pdf new file mode 100644 index 000000000000..0721647fa52b Binary files /dev/null and b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/sample-forms/forms/selectionMarkForm.pdf differ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java index 87b6f67a9a82..26e8ee0ec850 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java @@ -28,8 +28,8 @@ import java.time.Duration; import java.util.List; -import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PREBUILT_TYPE.BUSINESS_CARD; -import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PREBUILT_TYPE.RECEIPT; +import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PrebuiltType.BUSINESS_CARD; +import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PrebuiltType.RECEIPT; import static com.azure.ai.formrecognizer.TestUtils.BLANK_PDF; import static com.azure.ai.formrecognizer.TestUtils.DISPLAY_NAME_WITH_ARGUMENTS; import static com.azure.ai.formrecognizer.TestUtils.FORM_JPG; @@ -37,6 +37,7 @@ import static com.azure.ai.formrecognizer.TestUtils.INVALID_SOURCE_URL_ERROR_CODE; import static com.azure.ai.formrecognizer.TestUtils.INVALID_URL; import static com.azure.ai.formrecognizer.TestUtils.NON_EXIST_MODEL_ID; +import static com.azure.ai.formrecognizer.TestUtils.SELECTION_MARK_PDF; import static com.azure.ai.formrecognizer.TestUtils.getContentDetectionFileData; import static com.azure.ai.formrecognizer.TestUtils.validateExceptionSource; import static com.azure.ai.formrecognizer.implementation.Utility.toFluxByteBuffer; @@ -397,6 +398,21 @@ public void recognizeContentFromDamagedPdf(HttpClient httpClient, }); } + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters") + public void recognizeContentWithSelectionMarks(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion) { + client = getFormRecognizerAsyncClient(httpClient, serviceVersion); + dataRunner((data, dataLength) -> { + SyncPoller> syncPoller = client.beginRecognizeContent( + toFluxByteBuffer(data), dataLength, new RecognizeContentOptions() + .setContentType(FormContentType.APPLICATION_PDF) + .setPollInterval(durationTestMode)).getSyncPoller(); + syncPoller.waitForCompletion(); + validateContentResultData(syncPoller.getFinalResult(), false); + }, SELECTION_MARK_PDF); + } + // Content - URL /** @@ -475,6 +491,21 @@ public void recognizeContentFromUrlMultiPage(HttpClient httpClient, FormRecogniz }, MULTIPAGE_INVOICE_PDF); } + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters") + public void recognizeContentWithSelectionMarksFromUrl(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion) { + client = getFormRecognizerAsyncClient(httpClient, serviceVersion); + urlRunner(sourceUrl -> { + SyncPoller> syncPoller = + client.beginRecognizeContentFromUrl(sourceUrl, + new RecognizeContentOptions().setPollInterval(durationTestMode)) + .getSyncPoller(); + syncPoller.waitForCompletion(); + validateContentResultData(syncPoller.getFinalResult(), false); + }, SELECTION_MARK_PDF); + } + // Custom form recognition // Custom form - non-URL - labeled data @@ -713,6 +744,32 @@ public void recognizeCustomFormMultiPageLabeled(HttpClient httpClient, }), MULTIPAGE_INVOICE_PDF); } + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters") + public void recognizeCustomFormLabeledDataWithSelectionMark(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion) { + client = getFormRecognizerAsyncClient(httpClient, serviceVersion); + dataRunner((data, dataLength) -> + beginSelectionMarkTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { + SyncPoller trainingPoller = + getFormTrainingAsyncClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, + useTrainingLabels, new TrainingOptions().setPollInterval(durationTestMode)) + .getSyncPoller(); + trainingPoller.waitForCompletion(); + + SyncPoller> syncPoller = + client.beginRecognizeCustomForms(trainingPoller.getFinalResult().getModelId(), + toFluxByteBuffer(data), + dataLength, + new RecognizeCustomFormsOptions() + .setContentType(FormContentType.APPLICATION_PDF).setFieldElementsIncluded(true) + .setPollInterval(durationTestMode)) + .getSyncPoller(); + syncPoller.waitForCompletion(); + validateRecognizedResult(syncPoller.getFinalResult(), true, true); + }), SELECTION_MARK_PDF); + } + // Custom form - non-URL - unlabeled data /** @@ -1108,6 +1165,27 @@ useTrainingLabels, new TrainingOptions().setPollInterval(durationTestMode)) })); } + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters") + public void recognizeCustomFormUrlLabeledDataWithSelectionMark(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion) { + client = getFormRecognizerAsyncClient(httpClient, serviceVersion); + urlRunner(fileUrl -> beginSelectionMarkTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { + SyncPoller trainingPoller = + getFormTrainingAsyncClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, + useTrainingLabels, new TrainingOptions().setPollInterval(durationTestMode)) + .getSyncPoller(); + trainingPoller.waitForCompletion(); + + SyncPoller> syncPoller = + client.beginRecognizeCustomFormsFromUrl(trainingPoller.getFinalResult().getModelId(), fileUrl, + new RecognizeCustomFormsOptions().setFieldElementsIncluded(true).setPollInterval(durationTestMode)) + .getSyncPoller(); + syncPoller.waitForCompletion(); + validateRecognizedResult(syncPoller.getFinalResult(), true, true); + }), SELECTION_MARK_PDF); + } + // Business Card Recognition /** diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java index 44923ceb4d7e..c3b3f08e8d5b 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java @@ -29,14 +29,15 @@ import java.util.Arrays; import java.util.List; -import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PREBUILT_TYPE.BUSINESS_CARD; -import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PREBUILT_TYPE.RECEIPT; +import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PrebuiltType.BUSINESS_CARD; +import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PrebuiltType.RECEIPT; import static com.azure.ai.formrecognizer.TestUtils.BLANK_PDF; import static com.azure.ai.formrecognizer.TestUtils.DISPLAY_NAME_WITH_ARGUMENTS; import static com.azure.ai.formrecognizer.TestUtils.FORM_JPG; import static com.azure.ai.formrecognizer.TestUtils.INVALID_SOURCE_URL_ERROR_CODE; import static com.azure.ai.formrecognizer.TestUtils.INVALID_URL; import static com.azure.ai.formrecognizer.TestUtils.NON_EXIST_MODEL_ID; +import static com.azure.ai.formrecognizer.TestUtils.SELECTION_MARK_PDF; import static com.azure.ai.formrecognizer.TestUtils.getContentDetectionFileData; import static com.azure.ai.formrecognizer.TestUtils.validateExceptionSource; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -377,6 +378,20 @@ public void recognizeContentFromDamagedPdf(HttpClient httpClient, }); } + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters") + public void recognizeContentWithSelectionMarks(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion) { + client = getFormRecognizerClient(httpClient, serviceVersion); + dataRunner((data, dataLength) -> { + SyncPoller> syncPoller = + client.beginRecognizeContent(data, dataLength, new RecognizeContentOptions() + .setContentType(FormContentType.APPLICATION_PDF).setPollInterval(durationTestMode), Context.NONE); + syncPoller.waitForCompletion(); + validateContentResultData(syncPoller.getFinalResult(), false); + }, SELECTION_MARK_PDF); + } + // Content - URL @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) @@ -450,6 +465,20 @@ public void recognizeContentFromUrlMultiPage(HttpClient httpClient, FormRecogniz }, MULTIPAGE_INVOICE_PDF); } + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters") + public void recognizeContentWithSelectionMarksFromUrl(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion) { + client = getFormRecognizerClient(httpClient, serviceVersion); + urlRunner(sourceUrl -> { + SyncPoller> syncPoller = + client.beginRecognizeContentFromUrl(sourceUrl, + new RecognizeContentOptions().setPollInterval(durationTestMode), Context.NONE); + syncPoller.waitForCompletion(); + validateContentResultData(syncPoller.getFinalResult(), false); + }, SELECTION_MARK_PDF); + } + // Custom form recognition // Custom form - non-URL - labeled data @@ -668,6 +697,30 @@ public void recognizeCustomFormMultiPageLabeled(HttpClient httpClient, }), MULTIPAGE_INVOICE_PDF); } + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters") + public void recognizeCustomFormLabeledDataWithSelectionMark(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion) { + client = getFormRecognizerClient(httpClient, serviceVersion); + dataRunner((data, dataLength) -> + beginSelectionMarkTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { + SyncPoller trainingPoller = + getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, + useTrainingLabels, new TrainingOptions().setPollInterval(durationTestMode), Context.NONE); + trainingPoller.waitForCompletion(); + + SyncPoller> syncPoller = + client.beginRecognizeCustomForms(trainingPoller.getFinalResult().getModelId(), data, dataLength, + new RecognizeCustomFormsOptions() + .setContentType(FormContentType.APPLICATION_PDF) + .setFieldElementsIncluded(true) + .setPollInterval(durationTestMode), + Context.NONE); + syncPoller.waitForCompletion(); + validateRecognizedResult(syncPoller.getFinalResult(), true, true); + }), SELECTION_MARK_PDF); + } + // Custom form - non-URL - unlabeled data /** @@ -1028,6 +1081,28 @@ dataLength, new RecognizeCustomFormsOptions() })); } + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters") + public void recognizeCustomFormUrlLabeledDataWithSelectionMark(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion) { + urlRunner(fileUrl -> beginSelectionMarkTrainingLabeledRunner((trainingFilesUrl, useTrainingLabels) -> { + client = getFormRecognizerClient(httpClient, serviceVersion); + + SyncPoller trainingPoller = + getFormTrainingClient(httpClient, serviceVersion).beginTraining(trainingFilesUrl, + useTrainingLabels, new TrainingOptions().setPollInterval(durationTestMode), Context.NONE); + trainingPoller.waitForCompletion(); + + SyncPoller> syncPoller = + client.beginRecognizeCustomFormsFromUrl(trainingPoller.getFinalResult().getModelId(), fileUrl, + new RecognizeCustomFormsOptions().setFieldElementsIncluded(true) + .setPollInterval(durationTestMode), + Context.NONE); + syncPoller.waitForCompletion(); + validateRecognizedResult(syncPoller.getFinalResult(), true, true); + }), SELECTION_MARK_PDF); + } + /** * Verifies recognized form type when labeled model used for recognition and model name is provided by user. */ diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTestBase.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTestBase.java index 04e30f6aab14..05f357be35a3 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTestBase.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTestBase.java @@ -13,6 +13,7 @@ import com.azure.ai.formrecognizer.implementation.models.OperationStatus; import com.azure.ai.formrecognizer.implementation.models.PageResult; import com.azure.ai.formrecognizer.implementation.models.ReadResult; +import com.azure.ai.formrecognizer.implementation.models.SelectionMark; import com.azure.ai.formrecognizer.implementation.models.TextLine; import com.azure.ai.formrecognizer.implementation.models.TextWord; import com.azure.ai.formrecognizer.models.FieldBoundingBox; @@ -21,6 +22,7 @@ import com.azure.ai.formrecognizer.models.FormLine; import com.azure.ai.formrecognizer.models.FormPage; import com.azure.ai.formrecognizer.models.FormPageRange; +import com.azure.ai.formrecognizer.models.FormSelectionMark; import com.azure.ai.formrecognizer.models.FormTable; import com.azure.ai.formrecognizer.models.FormTableCell; import com.azure.ai.formrecognizer.models.FormWord; @@ -36,7 +38,6 @@ import com.azure.core.test.models.NetworkCallRecord; import com.azure.core.util.Configuration; import com.azure.core.util.serializer.SerializerAdapter; -import com.azure.identity.DefaultAzureCredentialBuilder; import org.junit.jupiter.api.Test; import java.io.ByteArrayInputStream; @@ -58,20 +59,20 @@ import java.util.function.Consumer; import java.util.regex.Pattern; -import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PREBUILT_TYPE.BUSINESS_CARD; -import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PREBUILT_TYPE.RECEIPT; +import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.PrebuiltType.BUSINESS_CARD; import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.AZURE_FORM_RECOGNIZER_API_KEY; import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.AZURE_FORM_RECOGNIZER_ENDPOINT; import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.FORM_RECOGNIZER_MULTIPAGE_TRAINING_BLOB_CONTAINER_SAS_URL; +import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.FORM_RECOGNIZER_SELECTION_MARK_BLOB_CONTAINER_SAS_URL; import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.FORM_RECOGNIZER_TRAINING_BLOB_CONTAINER_SAS_URL; import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.deserializeRawResponse; -import static com.azure.ai.formrecognizer.TestUtils.DEFAULT_DURATION; import static com.azure.ai.formrecognizer.TestUtils.FAKE_ENCODED_EMPTY_SPACE_URL; import static com.azure.ai.formrecognizer.TestUtils.INVALID_KEY; import static com.azure.ai.formrecognizer.TestUtils.ONE_NANO_DURATION; import static com.azure.ai.formrecognizer.TestUtils.TEST_DATA_PNG; import static com.azure.ai.formrecognizer.TestUtils.URL_TEST_FILE_FORMAT; import static com.azure.ai.formrecognizer.TestUtils.getSerializerAdapter; +import static com.azure.ai.formrecognizer.implementation.Utility.DEFAULT_POLL_INTERVAL; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -115,11 +116,11 @@ public abstract class FormRecognizerClientTestBase extends TestBase { static final List BUSINESS_CARD_FIELDS = Arrays.asList("ContactNames", "JobTitles", "Departments", "Emails", "Websites", "MobilePhones", "OtherPhones", "Faxes", "Addresses", "CompanyNames"); - // Business Card fields + // Receipt fields static final List RECEIPT_FIELDS = Arrays.asList("MerchantName", "MerchantPhoneNumber", "MerchantAddress", "Total", "Subtotal", "Tax", "TransactionDate", "TransactionDate", "TransactionTime", "Items"); - enum PREBUILT_TYPE { + enum PrebuiltType { RECEIPT, BUSINESS_CARD } @@ -133,7 +134,7 @@ protected void beforeTest() { if (interceptorManager.isPlaybackMode()) { durationTestMode = ONE_NANO_DURATION; } else { - durationTestMode = DEFAULT_DURATION; + durationTestMode = DEFAULT_POLL_INTERVAL; } } @@ -149,7 +150,9 @@ FormRecognizerClientBuilder getFormRecognizerClientBuilder(HttpClient httpClient if (getTestMode() == TestMode.PLAYBACK) { builder.credential(new AzureKeyCredential(INVALID_KEY)); } else { - builder.credential(new DefaultAzureCredentialBuilder().build()); + // TODO: (savaity) switch back to AAD once fixed on service - side. +// builder.credential(new DefaultAzureCredentialBuilder().build()); + builder.credential(new AzureKeyCredential(Configuration.getGlobalConfiguration().get("AZURE_FORM_RECOGNIZER_API_KEY"))); } return builder; } @@ -255,6 +258,19 @@ private static void validateFormLineData(List expectedLines, List
expectedMarks, + List actualMarks, int pageNumber) { + for (int i = 0; i < actualMarks.size(); i++) { + final SelectionMark expectedMark = expectedMarks.get(i); + final FormSelectionMark actualMark = actualMarks.get(i); + assertEquals(expectedMark.getState().toString(), actualMark.getState().toString()); + validateBoundingBoxData(expectedMark.getBoundingBox(), actualMark.getBoundingBox()); + // Currently, service has the null as the text value for layout. + assertNull(actualMark.getText()); + assertEquals(pageNumber, actualMark.getPageNumber()); + } + } + private static void validateFormWordData(List expectedFormWords, List actualFormWordList) { assertEquals(expectedFormWords.size(), actualFormWordList.size()); @@ -415,6 +431,10 @@ abstract void recognizeContentResultWithBlankPdf(HttpClient httpClient, @Test abstract void recognizeContentFromDataMultiPage(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion); + @Test + abstract void recognizeContentWithSelectionMarks(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion); + // Content - URL @Test @@ -429,6 +449,10 @@ abstract void recognizeContentResultWithBlankPdf(HttpClient httpClient, @Test abstract void recognizeContentFromUrlMultiPage(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion); + @Test + abstract void recognizeContentWithSelectionMarksFromUrl(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion); + // Custom form recognition // Custom form - non-URL - labeled data @@ -471,6 +495,10 @@ abstract void recognizeCustomFormLabeledDataWithContentTypeAutoDetection(HttpCli abstract void recognizeCustomFormMultiPageLabeled(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion); + @Test + abstract void recognizeCustomFormLabeledDataWithSelectionMark(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion); + // Custom form - non-URL - unlabeled data @Test abstract void recognizeCustomFormUnlabeledData(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion); @@ -530,6 +558,10 @@ abstract void recognizeCustomFormUrlLabeledDataIncludeFieldElements(HttpClient h abstract void recognizeCustomFormUrlMultiPageLabeled(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion); + @Test + abstract void recognizeCustomFormUrlLabeledDataWithSelectionMark(HttpClient httpClient, + FormRecognizerServiceVersion serviceVersion); + // Business Card - data @Test abstract void recognizeBusinessCardData(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion); @@ -597,6 +629,9 @@ void validateContentResultData(List actualFormPageList, boolean includ if (includeFieldElements) { validateFormLineData(readResult.getLines(), actualFormPage.getLines()); } + + validateFormSelectionMarkData(readResult.getSelectionMarks(), actualFormPage.getSelectionMarks(), + readResult.getPage()); if (pageResults != null) { validateFormTableData(pageResults.get(i).getTables(), actualFormPage.getTables(), readResults, includeFieldElements, pageResults.get(i).getPage()); @@ -628,7 +663,7 @@ void validateRecognizedResult(List actualFormList, boolean inclu } void validatePrebuiltResultData(List actualPrebuiltRecognizedForms, boolean includeFieldElements, - PREBUILT_TYPE prebuiltType) { + PrebuiltType prebuiltType) { final AnalyzeResult rawResponse = getAnalyzeRawResponse().getAnalyzeResult(); final List rawReadResults = rawResponse.getReadResults(); for (int i = 0; i < actualPrebuiltRecognizedForms.size(); i++) { @@ -705,6 +740,10 @@ void beginTrainingLabeledRunner(BiConsumer testRunner) { testRunner.accept(getTrainingSasUri(), true); } + void beginSelectionMarkTrainingLabeledRunner(BiConsumer testRunner) { + testRunner.accept(getSelectionMarkTrainingSasUri(), true); + } + void beginTrainingMultipageRunner(Consumer testRunner) { testRunner.accept(getMultipageTrainingSasUri()); } @@ -794,6 +833,11 @@ static void validateMultipageBusinessData(List recognizedBusines assertEquals("+14257793479", phoneNumberList.get(0).getValue().asPhoneNumber()); assertNotNull(businessCard1.getPages()); + // assert contact name page number + FormField contactNameField = businessCard1Fields.get("ContactNames").getValue().asList().get(0); + assertEquals(contactNameField.getValueData().getPageNumber(), 1); + assertEquals(contactNameField.getValueData().getText(), "JOHN SINGER"); + assertEquals(2, businessCard2.getPageRange().getFirstPageNumber()); assertEquals(2, businessCard2.getPageRange().getLastPageNumber()); Map businessCard2Fields = businessCard2.getFields(); @@ -802,6 +846,11 @@ static void validateMultipageBusinessData(List recognizedBusines List phoneNumber2List = businessCard2Fields.get("OtherPhones").getValue().asList(); assertEquals("+44 (0) 20 9876 5432", phoneNumber2List.get(0).getValueData().getText()); assertNotNull(businessCard2.getPages()); + + // assert contact name page number + FormField contactName2Field = businessCard2Fields.get("ContactNames").getValue().asList().get(0); + assertEquals(contactName2Field.getValueData().getPageNumber(), 2); + assertEquals(contactName2Field.getValueData().getText(), "Dr. Avery Smith"); } static void validateMultipageReceiptData(List recognizedReceipts) { @@ -863,6 +912,14 @@ private String getTrainingSasUri() { } } + private String getSelectionMarkTrainingSasUri() { + if (interceptorManager.isPlaybackMode()) { + return "https://isPlaybackmode"; + } else { + return Configuration.getGlobalConfiguration().get(FORM_RECOGNIZER_SELECTION_MARK_BLOB_CONTAINER_SAS_URL); + } + } + /** * Get the training data set SAS Url value based on the test running mode. * diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTestBase.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTestBase.java index c2a23447150a..c156778b1b25 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTestBase.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTestBase.java @@ -41,13 +41,13 @@ import java.util.function.Consumer; import java.util.stream.Collectors; -import static com.azure.ai.formrecognizer.FormRecognizerClientBuilder.DEFAULT_DURATION; import static com.azure.ai.formrecognizer.TestUtils.BLANK_PDF; import static com.azure.ai.formrecognizer.TestUtils.INVALID_KEY; import static com.azure.ai.formrecognizer.TestUtils.INVALID_RECEIPT_URL; import static com.azure.ai.formrecognizer.TestUtils.ONE_NANO_DURATION; import static com.azure.ai.formrecognizer.TestUtils.TEST_DATA_PNG; import static com.azure.ai.formrecognizer.TestUtils.getSerializerAdapter; +import static com.azure.ai.formrecognizer.implementation.Utility.DEFAULT_POLL_INTERVAL; import static com.azure.ai.formrecognizer.implementation.models.ModelStatus.READY; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -65,6 +65,8 @@ public abstract class FormTrainingClientTestBase extends TestBase { "FORM_RECOGNIZER_TRAINING_BLOB_CONTAINER_SAS_URL"; static final String FORM_RECOGNIZER_MULTIPAGE_TRAINING_BLOB_CONTAINER_SAS_URL = "FORM_RECOGNIZER_MULTIPAGE_TRAINING_BLOB_CONTAINER_SAS_URL"; + static final String FORM_RECOGNIZER_SELECTION_MARK_BLOB_CONTAINER_SAS_URL = + "FORM_RECOGNIZER_SELECTION_MARK_BLOB_CONTAINER_SAS_URL"; static final String PREFIX_SUBFOLDER = "subfolder"; static final String INVALID_PREFIX_FILE_NAME = "XXXXX"; @@ -83,7 +85,7 @@ protected void beforeTest() { if (interceptorManager.isPlaybackMode()) { durationTestMode = ONE_NANO_DURATION; } else { - durationTestMode = DEFAULT_DURATION; + durationTestMode = DEFAULT_POLL_INTERVAL; } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/TestUtils.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/TestUtils.java index d59bc432b8e1..107afce9ee8b 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/TestUtils.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/TestUtils.java @@ -3,7 +3,6 @@ package com.azure.ai.formrecognizer; -import com.azure.ai.formrecognizer.implementation.Utility; import com.azure.core.exception.HttpResponseException; import com.azure.core.http.HttpClient; import com.azure.core.util.Configuration; @@ -12,20 +11,16 @@ import com.azure.core.util.serializer.JacksonAdapter; import com.azure.core.util.serializer.SerializerAdapter; import org.junit.jupiter.params.provider.Arguments; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; -import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.function.Function; import java.util.stream.Stream; import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.ENCODED_EMPTY_SPACE; @@ -37,27 +32,30 @@ * Contains helper methods for generating inputs for test methods */ final class TestUtils { - static final String URL_TEST_FILE_FORMAT = "https://raw.githubusercontent.com/Azure/azure-sdk-for-java/" - + "master/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/sample_files/Test/"; + // Duration + static final Duration ONE_NANO_DURATION = Duration.ofNanos(1); + // Local test files + static final String BLANK_PDF = "blank.pdf"; + static final String FORM_JPG = "Form_1.jpg"; + static final String TEST_DATA_PNG = "testData.png"; + static final String SELECTION_MARK_PDF = "selectionMarkForm.pdf"; + // Other resources + static final String DISPLAY_NAME_WITH_ARGUMENTS = "{displayName} with [{arguments}]"; static final String FAKE_ENCODED_EMPTY_SPACE_URL = "https://fakeuri.com/blank%20space"; static final String INVALID_IMAGE_URL_ERROR_CODE = "InvalidImageURL"; + static final String INVALID_KEY = "invalid key"; static final String INVALID_MODEL_ID = "a0a3998a-4c4affe66b7"; + static final String INVALID_MODEL_ID_ERROR = "Invalid UUID string: " + INVALID_MODEL_ID; static final String INVALID_RECEIPT_URL = "https://invalid.blob.core.windows.net/fr/contoso-allinone.jpg"; - static final String INVALID_KEY = "invalid key"; static final String INVALID_SOURCE_URL_ERROR_CODE = "1003"; - static final String INVALID_MODEL_ID_ERROR = "Invalid UUID string: " + INVALID_MODEL_ID; + static final String INVALID_URL = "htttttttps://localhost:8080"; static final String NON_EXIST_MODEL_ID = "00000000-0000-0000-0000-000000000000"; static final String NULL_SOURCE_URL_ERROR = "'trainingFilesUrl' cannot be null."; - static final String INVALID_URL = "htttttttps://localhost:8080"; + static final String URL_TEST_FILE_FORMAT = "https://raw.githubusercontent.com/Azure/azure-sdk-for-java/" + + "master/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/sample_files/Test/"; static final String VALID_HTTPS_LOCALHOST = "https://localhost:8080"; static final String VALID_HTTP_LOCALHOST = "http://localhost:8080"; - static final String BLANK_PDF = "blank.pdf"; - static final String FORM_JPG = "Form_1.jpg"; - static final String TEST_DATA_PNG = "testData.png"; static final String VALID_URL = "https://resources/contoso-allinone.jpg"; - static final String DISPLAY_NAME_WITH_ARGUMENTS = "{displayName} with [{arguments}]"; - static final Duration ONE_NANO_DURATION = Duration.ofNanos(1); - static final Duration DEFAULT_DURATION = Duration.ofSeconds(5); private TestUtils() { } @@ -70,22 +68,6 @@ static InputStream getContentDetectionFileData(String localFileUrl) { } } - static Flux getReplayableBufferData(String localFileUrl) { - Mono dataMono = Mono.defer(() -> { - try { - return Mono.just(new FileInputStream(localFileUrl)); - } catch (FileNotFoundException e) { - return Mono.error(new RuntimeException("Local file not found.", e)); - } - }); - return dataMono.flatMapMany(new Function>() { - @Override - public Flux apply(InputStream inputStream) { - return Utility.toFluxByteBuffer(inputStream); - } - }); - } - static SerializerAdapter getSerializerAdapter() { return JacksonAdapter.createDefaultSerializerAdapter(); } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeContentWithSelectionMarksFromUrl[1].json b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeContentWithSelectionMarksFromUrl[1].json new file mode 100644 index 000000000000..2ffd7dbc6720 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeContentWithSelectionMarksFromUrl[1].json @@ -0,0 +1,84 @@ +{ + "networkCallRecords" : [ { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyze", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "8d187b35-3268-4db4-aeb7-c08b97f0b46e", + "Content-Type" : "application/json" + }, + "Response" : { + "x-envoy-upstream-service-time" : "74", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "ae44ae82-3c41-4820-843f-dd0588025f0c", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "Operation-Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/layout/analyzeResults/ae44ae82-3c41-4820-843f-dd0588025f0c", + "Date" : "Thu, 22 Oct 2020 04:39:54 GMT" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/ae44ae82-3c41-4820-843f-dd0588025f0c", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "acd27765-d9ed-49ef-974f-6f38772d0a1c" + }, + "Response" : { + "x-envoy-upstream-service-time" : "9", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "af347c93-39a3-49fe-9e4c-62651f199a13", + "retry-after" : "0", + "Content-Length" : "106", + "StatusCode" : "200", + "Body" : "{\"status\":\"running\",\"createdDateTime\":\"2020-10-22T04:39:55Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:39:55Z\"}", + "Date" : "Thu, 22 Oct 2020 04:40:00 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/ae44ae82-3c41-4820-843f-dd0588025f0c", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "c3a2ac98-cf31-4686-b8c6-1fa43c5bb350" + }, + "Response" : { + "x-envoy-upstream-service-time" : "25", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "2a68345d-373e-4a5a-b0a2-7e64eddef242", + "retry-after" : "0", + "Content-Length" : "34833", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:39:55Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:40:01Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.7370,4.3860,0.7370,4.3860,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.5760,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1000,3.3832,1.1000],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1000,3.6851,1.1000],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1000,4.0571,1.1000],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1000,4.3323,1.1000],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.7560,1.0062,4.7560,1.1000,4.5886,1.1000],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.8560,2.2182,4.0615,2.2182,4.0615,2.3330,3.8560,2.3330],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.3330,4.1098,2.3330],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.7530,2.2182,5.2052,2.2182,5.2052,2.3330,4.7530,2.3330],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.2560,2.2185,6.0557,2.2185,6.0557,2.3325,5.2560,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.1600,3.5151,1.5019,3.5151,1.5019,3.6168,1.1600,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.5500,3.5209,1.6753,3.5209,1.6753,3.6168,1.5500,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.5390,3.0909,3.5390,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.5390,4.3377,3.5390,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.5390,4.6247,3.5390,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.5010,3.5138,5.5751,3.5138,5.5751,3.6150,5.5010,3.6150],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.5390,5.8539,3.5390,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.5390,6.6562,3.5390,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.5390,6.9940,3.5390,6.9940,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.0360,3.5128,7.4009,3.5128,7.4009,3.6438,7.0360,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.3730,3.6789,7.3730,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.3640,3.6792,3.6047,3.6792,3.6047,3.7819,3.3640,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.3730,3.6801,7.3730,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.2220,3.8468,1.5826,3.8468,1.5826,3.9486,1.2220,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.1440,3.8456,5.1440,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.9750,4.2094,5.9750,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.8070,4.3655,2.8070,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.0680,3.5656,5.0680],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.0670,3.5656,5.0670],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.0680,4.3295,5.0680],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.0340,5.0848,5.0340],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.0340,5.0848,5.0340],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.0340,5.6202,5.0340],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.0340,5.8088,5.0340],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.4950,5.4285,1.4950,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.5020,5.7604,3.2429,5.7604,3.2429,5.8923,2.5020,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.5020,5.7621,2.7903,5.7621,2.7903,5.8648,2.5020,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.7840,7.5307,5.7840],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.7850,7.8166,5.7850],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.9550,5.2262,5.9550],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.9820,5.5744,5.9820],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.4170,5.8562,6.4170,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.8090,5.8181,7.8090,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.8090,5.8181,7.8090,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.2980,6.0376,1.8846,6.0376,1.8846,6.1393,1.2980,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.3570,6.2792,1.3570,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.6450,6.7385,6.6450],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.0120,4.0467,8.0120],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.0100,5.0592,8.0100],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.0120,5.2259,8.0120],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.0120,5.4691,8.0120],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.0120,6.0082,8.0120],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.1190,8.0771,1.4992,8.0771,1.4992,8.1636,1.1190,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.9400,8.0771,1.9400,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.9750,8.0771,2.2103,8.0771,2.2103,8.1895,1.9750,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.2600,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.5190,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.970},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.6600,8.5205,6.1697,8.5205,6.1697,8.5281,5.6600,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.7270,1.7087,8.7270],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.1680,8.6246,2.4850,8.6246,2.4850,8.7284,2.1680,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.7270,3.2268,8.7270],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.5920,8.6300,3.6791,8.6300,3.6791,8.7056,3.5920,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.7270,3.7147,8.7270],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.3230,4.3584,9.3230,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.4380,1.9774,9.4380],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.6950,9.3230,4.3584,9.3230,4.3584,9.4677,2.6950,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.7750,3.9960,9.7750,3.9960,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.7900,4.1168,9.7900,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.4790,9.7741,4.4790,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.990,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.2960,1.0459,10.2960,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0000,0,11.0000],\"confidence\":0.690,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.5390,10.7248,0.5390,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}]}}", + "Date" : "Thu, 22 Oct 2020 04:40:05 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/ae44ae82-3c41-4820-843f-dd0588025f0c", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "0c682ec8-089a-4101-b5fd-dc1eb5c44f2d" + }, + "Response" : { + "x-envoy-upstream-service-time" : "22", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "c11fe280-77fc-4928-89bc-afdd09011e06", + "retry-after" : "0", + "Content-Length" : "34833", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:39:55Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:40:01Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.7370,4.3860,0.7370,4.3860,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.5760,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1000,3.3832,1.1000],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1000,3.6851,1.1000],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1000,4.0571,1.1000],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1000,4.3323,1.1000],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.7560,1.0062,4.7560,1.1000,4.5886,1.1000],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.8560,2.2182,4.0615,2.2182,4.0615,2.3330,3.8560,2.3330],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.3330,4.1098,2.3330],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.7530,2.2182,5.2052,2.2182,5.2052,2.3330,4.7530,2.3330],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.2560,2.2185,6.0557,2.2185,6.0557,2.3325,5.2560,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.1600,3.5151,1.5019,3.5151,1.5019,3.6168,1.1600,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.5500,3.5209,1.6753,3.5209,1.6753,3.6168,1.5500,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.5390,3.0909,3.5390,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.5390,4.3377,3.5390,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.5390,4.6247,3.5390,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.5010,3.5138,5.5751,3.5138,5.5751,3.6150,5.5010,3.6150],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.5390,5.8539,3.5390,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.5390,6.6562,3.5390,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.5390,6.9940,3.5390,6.9940,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.0360,3.5128,7.4009,3.5128,7.4009,3.6438,7.0360,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.3730,3.6789,7.3730,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.3640,3.6792,3.6047,3.6792,3.6047,3.7819,3.3640,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.3730,3.6801,7.3730,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.2220,3.8468,1.5826,3.8468,1.5826,3.9486,1.2220,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.1440,3.8456,5.1440,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.9750,4.2094,5.9750,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.8070,4.3655,2.8070,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.0680,3.5656,5.0680],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.0670,3.5656,5.0670],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.0680,4.3295,5.0680],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.0340,5.0848,5.0340],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.0340,5.0848,5.0340],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.0340,5.6202,5.0340],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.0340,5.8088,5.0340],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.4950,5.4285,1.4950,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.5020,5.7604,3.2429,5.7604,3.2429,5.8923,2.5020,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.5020,5.7621,2.7903,5.7621,2.7903,5.8648,2.5020,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.7840,7.5307,5.7840],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.7850,7.8166,5.7850],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.9550,5.2262,5.9550],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.9820,5.5744,5.9820],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.4170,5.8562,6.4170,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.8090,5.8181,7.8090,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.8090,5.8181,7.8090,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.2980,6.0376,1.8846,6.0376,1.8846,6.1393,1.2980,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.3570,6.2792,1.3570,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.6450,6.7385,6.6450],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.0120,4.0467,8.0120],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.0100,5.0592,8.0100],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.0120,5.2259,8.0120],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.0120,5.4691,8.0120],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.0120,6.0082,8.0120],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.1190,8.0771,1.4992,8.0771,1.4992,8.1636,1.1190,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.9400,8.0771,1.9400,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.9750,8.0771,2.2103,8.0771,2.2103,8.1895,1.9750,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.2600,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.5190,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.970},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.6600,8.5205,6.1697,8.5205,6.1697,8.5281,5.6600,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.7270,1.7087,8.7270],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.1680,8.6246,2.4850,8.6246,2.4850,8.7284,2.1680,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.7270,3.2268,8.7270],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.5920,8.6300,3.6791,8.6300,3.6791,8.7056,3.5920,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.7270,3.7147,8.7270],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.3230,4.3584,9.3230,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.4380,1.9774,9.4380],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.6950,9.3230,4.3584,9.3230,4.3584,9.4677,2.6950,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.7750,3.9960,9.7750,3.9960,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.7900,4.1168,9.7900,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.4790,9.7741,4.4790,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.990,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.2960,1.0459,10.2960,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0000,0,11.0000],\"confidence\":0.690,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.5390,10.7248,0.5390,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}]}}", + "Date" : "Thu, 22 Oct 2020 04:40:05 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeContentWithSelectionMarks[1].json b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeContentWithSelectionMarks[1].json new file mode 100644 index 000000000000..fd2c80c2c29e --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeContentWithSelectionMarks[1].json @@ -0,0 +1,84 @@ +{ + "networkCallRecords" : [ { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyze", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "f0fca782-2ba9-45cf-a497-fb31aa2de048", + "Content-Type" : "application/pdf" + }, + "Response" : { + "x-envoy-upstream-service-time" : "131", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "c053f7e4-e100-4055-a910-688babe31cdc", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "Operation-Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/layout/analyzeResults/c053f7e4-e100-4055-a910-688babe31cdc", + "Date" : "Wed, 21 Oct 2020 17:05:28 GMT" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/c053f7e4-e100-4055-a910-688babe31cdc", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "eba82e1b-0333-487b-bd00-46cb05c440ec" + }, + "Response" : { + "x-envoy-upstream-service-time" : "190", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "a6fef349-1de3-44d1-a160-7ba4b3a3ba70", + "retry-after" : "0", + "Content-Length" : "106", + "StatusCode" : "200", + "Body" : "{\"status\":\"running\",\"createdDateTime\":\"2020-10-21T17:05:28Z\",\"lastUpdatedDateTime\":\"2020-10-21T17:05:28Z\"}", + "Date" : "Wed, 21 Oct 2020 17:05:33 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/c053f7e4-e100-4055-a910-688babe31cdc", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "37f3bc39-5fbe-4e57-9725-665f3eebbf56" + }, + "Response" : { + "x-envoy-upstream-service-time" : "38", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "5e79d373-314a-4087-80b7-643db94d3769", + "retry-after" : "0", + "Content-Length" : "34833", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-21T17:05:28Z\",\"lastUpdatedDateTime\":\"2020-10-21T17:05:35Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.7370,4.3860,0.7370,4.3860,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.5760,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1000,3.3832,1.1000],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1000,3.6851,1.1000],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1000,4.0571,1.1000],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1000,4.3323,1.1000],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.7560,1.0062,4.7560,1.1000,4.5886,1.1000],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.8560,2.2182,4.0615,2.2182,4.0615,2.3330,3.8560,2.3330],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.3330,4.1098,2.3330],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.7530,2.2182,5.2052,2.2182,5.2052,2.3330,4.7530,2.3330],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.2560,2.2185,6.0557,2.2185,6.0557,2.3325,5.2560,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.1600,3.5151,1.5019,3.5151,1.5019,3.6168,1.1600,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.5500,3.5209,1.6753,3.5209,1.6753,3.6168,1.5500,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.5390,3.0909,3.5390,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.5390,4.3377,3.5390,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.5390,4.6247,3.5390,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.5010,3.5138,5.5751,3.5138,5.5751,3.6150,5.5010,3.6150],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.5390,5.8539,3.5390,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.5390,6.6562,3.5390,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.5390,6.9940,3.5390,6.9940,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.0360,3.5128,7.4009,3.5128,7.4009,3.6438,7.0360,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.3730,3.6789,7.3730,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.3640,3.6792,3.6047,3.6792,3.6047,3.7819,3.3640,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.3730,3.6801,7.3730,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.2220,3.8468,1.5826,3.8468,1.5826,3.9486,1.2220,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.1440,3.8456,5.1440,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.9750,4.2094,5.9750,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.8070,4.3655,2.8070,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.0680,3.5656,5.0680],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.0670,3.5656,5.0670],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.0680,4.3295,5.0680],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.0340,5.0848,5.0340],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.0340,5.0848,5.0340],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.0340,5.6202,5.0340],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.0340,5.8088,5.0340],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.4950,5.4285,1.4950,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.5020,5.7604,3.2429,5.7604,3.2429,5.8923,2.5020,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.5020,5.7621,2.7903,5.7621,2.7903,5.8648,2.5020,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.7840,7.5307,5.7840],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.7850,7.8166,5.7850],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.9550,5.2262,5.9550],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.9820,5.5744,5.9820],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.4170,5.8562,6.4170,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.8090,5.8181,7.8090,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.8090,5.8181,7.8090,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.2980,6.0376,1.8846,6.0376,1.8846,6.1393,1.2980,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.3570,6.2792,1.3570,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.6450,6.7385,6.6450],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.0120,4.0467,8.0120],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.0100,5.0592,8.0100],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.0120,5.2259,8.0120],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.0120,5.4691,8.0120],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.0120,6.0082,8.0120],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.1190,8.0771,1.4992,8.0771,1.4992,8.1636,1.1190,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.9400,8.0771,1.9400,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.9750,8.0771,2.2103,8.0771,2.2103,8.1895,1.9750,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.2600,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.5190,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.970},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.6600,8.5205,6.1697,8.5205,6.1697,8.5281,5.6600,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.7270,1.7087,8.7270],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.1680,8.6246,2.4850,8.6246,2.4850,8.7284,2.1680,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.7270,3.2268,8.7270],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.5920,8.6300,3.6791,8.6300,3.6791,8.7056,3.5920,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.7270,3.7147,8.7270],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.3230,4.3584,9.3230,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.4380,1.9774,9.4380],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.6950,9.3230,4.3584,9.3230,4.3584,9.4677,2.6950,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.7750,3.9960,9.7750,3.9960,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.7900,4.1168,9.7900,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.4790,9.7741,4.4790,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.990,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.2960,1.0459,10.2960,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0000,0,11.0000],\"confidence\":0.690,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.5390,10.7248,0.5390,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}]}}", + "Date" : "Wed, 21 Oct 2020 17:05:38 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/c053f7e4-e100-4055-a910-688babe31cdc", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "541dc8f6-4956-4ac6-8bee-b7086b2e518a" + }, + "Response" : { + "x-envoy-upstream-service-time" : "28", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "20b43022-fea2-4626-a16d-d8c345a0427c", + "retry-after" : "0", + "Content-Length" : "34833", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-21T17:05:28Z\",\"lastUpdatedDateTime\":\"2020-10-21T17:05:35Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.7370,4.3860,0.7370,4.3860,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.5760,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1000,3.3832,1.1000],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1000,3.6851,1.1000],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1000,4.0571,1.1000],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1000,4.3323,1.1000],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.7560,1.0062,4.7560,1.1000,4.5886,1.1000],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.8560,2.2182,4.0615,2.2182,4.0615,2.3330,3.8560,2.3330],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.3330,4.1098,2.3330],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.7530,2.2182,5.2052,2.2182,5.2052,2.3330,4.7530,2.3330],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.2560,2.2185,6.0557,2.2185,6.0557,2.3325,5.2560,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.1600,3.5151,1.5019,3.5151,1.5019,3.6168,1.1600,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.5500,3.5209,1.6753,3.5209,1.6753,3.6168,1.5500,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.5390,3.0909,3.5390,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.5390,4.3377,3.5390,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.5390,4.6247,3.5390,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.5010,3.5138,5.5751,3.5138,5.5751,3.6150,5.5010,3.6150],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.5390,5.8539,3.5390,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.5390,6.6562,3.5390,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.5390,6.9940,3.5390,6.9940,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.0360,3.5128,7.4009,3.5128,7.4009,3.6438,7.0360,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.3730,3.6789,7.3730,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.3640,3.6792,3.6047,3.6792,3.6047,3.7819,3.3640,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.3730,3.6801,7.3730,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.2220,3.8468,1.5826,3.8468,1.5826,3.9486,1.2220,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.1440,3.8456,5.1440,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.9750,4.2094,5.9750,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.8070,4.3655,2.8070,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.0680,3.5656,5.0680],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.0670,3.5656,5.0670],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.0680,4.3295,5.0680],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.0340,5.0848,5.0340],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.0340,5.0848,5.0340],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.0340,5.6202,5.0340],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.0340,5.8088,5.0340],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.4950,5.4285,1.4950,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.5020,5.7604,3.2429,5.7604,3.2429,5.8923,2.5020,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.5020,5.7621,2.7903,5.7621,2.7903,5.8648,2.5020,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.7840,7.5307,5.7840],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.7850,7.8166,5.7850],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.9550,5.2262,5.9550],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.9820,5.5744,5.9820],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.4170,5.8562,6.4170,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.8090,5.8181,7.8090,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.8090,5.8181,7.8090,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.2980,6.0376,1.8846,6.0376,1.8846,6.1393,1.2980,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.3570,6.2792,1.3570,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.6450,6.7385,6.6450],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.0120,4.0467,8.0120],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.0100,5.0592,8.0100],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.0120,5.2259,8.0120],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.0120,5.4691,8.0120],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.0120,6.0082,8.0120],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.1190,8.0771,1.4992,8.0771,1.4992,8.1636,1.1190,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.9400,8.0771,1.9400,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.9750,8.0771,2.2103,8.0771,2.2103,8.1895,1.9750,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.2600,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.5190,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.970},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.6600,8.5205,6.1697,8.5205,6.1697,8.5281,5.6600,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.7270,1.7087,8.7270],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.1680,8.6246,2.4850,8.6246,2.4850,8.7284,2.1680,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.7270,3.2268,8.7270],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.5920,8.6300,3.6791,8.6300,3.6791,8.7056,3.5920,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.7270,3.7147,8.7270],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.3230,4.3584,9.3230,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.4380,1.9774,9.4380],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.6950,9.3230,4.3584,9.3230,4.3584,9.4677,2.6950,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.7750,3.9960,9.7750,3.9960,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.7900,4.1168,9.7900,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.4790,9.7741,4.4790,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.990,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.2960,1.0459,10.2960,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0000,0,11.0000],\"confidence\":0.690,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.5390,10.7248,0.5390,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}]}}", + "Date" : "Wed, 21 Oct 2020 17:05:38 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeCustomFormLabeledDataWithSelectionMark[1].json b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeCustomFormLabeledDataWithSelectionMark[1].json new file mode 100644 index 000000000000..95ec3b08ba6a --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeCustomFormLabeledDataWithSelectionMark[1].json @@ -0,0 +1,144 @@ +{ + "networkCallRecords" : [ { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "9ec75e06-c03e-4fd8-8494-a84097db7ff8", + "Content-Type" : "application/json" + }, + "Response" : { + "x-envoy-upstream-service-time" : "215", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "30844b63-76d4-406f-8235-30bb4149cbd7", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "Date" : "Wed, 21 Oct 2020 17:10:27 GMT", + "Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/custom/models/b18dc567-8fd5-4174-a20d-448cae64c358" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/b18dc567-8fd5-4174-a20d-448cae64c358?includeKeys=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "7d098499-5a83-4d73-b2f4-7d094f92916d" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-envoy-upstream-service-time" : "22", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "2c913263-c4cc-4a08-a678-7625de77b376", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "{\"modelInfo\":{\"modelId\":\"b18dc567-8fd5-4174-a20d-448cae64c358\",\"attributes\":{\"isComposed\":false},\"status\":\"ready\",\"createdDateTime\":\"2020-10-21T17:10:28Z\",\"lastUpdatedDateTime\":\"2020-10-21T17:10:31Z\"},\"trainResult\":{\"averageModelAccuracy\":1.0,\"trainingDocuments\":[{\"documentName\":\"CCAuth-1.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-2.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-3.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-4.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-5.pdf\",\"pages\":1,\"status\":\"succeeded\"}],\"fields\":[{\"fieldName\":\"AMEX_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"MASTERCARD_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"VISA_SELECTION_MARK\",\"accuracy\":1.0}],\"errors\":[]}}", + "Date" : "Wed, 21 Oct 2020 17:10:33 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/b18dc567-8fd5-4174-a20d-448cae64c358?includeKeys=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "5b89ee8d-5b63-44c7-8294-058941e319d8" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-envoy-upstream-service-time" : "24", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "a9f55c93-ab14-408d-abbb-053b2a6287d3", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "{\"modelInfo\":{\"modelId\":\"b18dc567-8fd5-4174-a20d-448cae64c358\",\"attributes\":{\"isComposed\":false},\"status\":\"ready\",\"createdDateTime\":\"2020-10-21T17:10:28Z\",\"lastUpdatedDateTime\":\"2020-10-21T17:10:31Z\"},\"trainResult\":{\"averageModelAccuracy\":1.0,\"trainingDocuments\":[{\"documentName\":\"CCAuth-1.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-2.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-3.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-4.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-5.pdf\",\"pages\":1,\"status\":\"succeeded\"}],\"fields\":[{\"fieldName\":\"AMEX_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"MASTERCARD_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"VISA_SELECTION_MARK\",\"accuracy\":1.0}],\"errors\":[]}}", + "Date" : "Wed, 21 Oct 2020 17:10:34 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/b18dc567-8fd5-4174-a20d-448cae64c358/analyze?includeTextDetails=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "e3592fb2-bafb-473d-99c6-2769fa5191bb", + "Content-Type" : "application/pdf" + }, + "Response" : { + "x-envoy-upstream-service-time" : "93", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "1c878e1a-077f-41dd-b0df-983ab581dcb5", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "Operation-Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/custom/models/b18dc567-8fd5-4174-a20d-448cae64c358/analyzeresults/27953366-f55c-4218-958d-a8bb1df959f5", + "Date" : "Wed, 21 Oct 2020 17:10:34 GMT" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/b18dc567-8fd5-4174-a20d-448cae64c358/analyzeResults/27953366-f55c-4218-958d-a8bb1df959f5", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "deb76877-37bb-489d-ad8f-13551eba106b" + }, + "Response" : { + "x-envoy-upstream-service-time" : "43", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "d03e5f5b-5a4b-46a1-ab87-dadbc210f6c8", + "retry-after" : "0", + "Content-Length" : "109", + "StatusCode" : "200", + "Body" : "{\"status\":\"notStarted\",\"createdDateTime\":\"2020-10-21T17:10:34Z\",\"lastUpdatedDateTime\":\"2020-10-21T17:10:38Z\"}", + "Date" : "Wed, 21 Oct 2020 17:10:39 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/b18dc567-8fd5-4174-a20d-448cae64c358/analyzeResults/27953366-f55c-4218-958d-a8bb1df959f5", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "edb6d5be-794f-47ce-9678-67af4a8c5b96" + }, + "Response" : { + "x-envoy-upstream-service-time" : "36", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "e4160d0a-07bd-4fb0-9946-78455954eeef", + "retry-after" : "0", + "Content-Length" : "35389", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-21T17:10:34Z\",\"lastUpdatedDateTime\":\"2020-10-21T17:10:44Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.737,4.386,0.737,4.386,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.576,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1,3.3832,1.1],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1,3.6851,1.1],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1,4.0571,1.1],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1,4.3323,1.1],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.756,1.0062,4.756,1.1,4.5886,1.1],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.856,2.2182,4.0615,2.2182,4.0615,2.333,3.856,2.333],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.333,4.1098,2.333],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.753,2.2182,5.2052,2.2182,5.2052,2.333,4.753,2.333],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.256,2.2185,6.0557,2.2185,6.0557,2.3325,5.256,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.16,3.5151,1.5019,3.5151,1.5019,3.6168,1.16,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.55,3.5209,1.6753,3.5209,1.6753,3.6168,1.55,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.539,3.0909,3.539,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.539,4.3377,3.539,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.539,4.6247,3.539,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.501,3.5138,5.5751,3.5138,5.5751,3.615,5.501,3.615],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.539,5.8539,3.539,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.539,6.6562,3.539,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.539,6.994,3.539,6.994,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.036,3.5128,7.4009,3.5128,7.4009,3.6438,7.036,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.373,3.6789,7.373,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.364,3.6792,3.6047,3.6792,3.6047,3.7819,3.364,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.373,3.6801,7.373,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.222,3.8468,1.5826,3.8468,1.5826,3.9486,1.222,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.144,3.8456,5.144,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.975,4.2094,5.975,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.807,4.3655,2.807,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.068,3.5656,5.068],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.067,3.5656,5.067],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.068,4.3295,5.068],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.034,5.0848,5.034],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.034,5.0848,5.034],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.034,5.6202,5.034],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.034,5.8088,5.034],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.495,5.4285,1.495,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.502,5.7604,3.2429,5.7604,3.2429,5.8923,2.502,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.502,5.7621,2.7903,5.7621,2.7903,5.8648,2.502,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.784,7.5307,5.784],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.785,7.8166,5.785],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.955,5.2262,5.955],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.982,5.5744,5.982],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.417,5.8562,6.417,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.809,5.8181,7.809,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.809,5.8181,7.809,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.298,6.0376,1.8846,6.0376,1.8846,6.1393,1.298,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.357,6.2792,1.357,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.645,6.7385,6.645],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.012,4.0467,8.012],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.01,5.0592,8.01],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.012,5.2259,8.012],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.012,5.4691,8.012],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.012,6.0082,8.012],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.119,8.0771,1.4992,8.0771,1.4992,8.1636,1.119,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.94,8.0771,1.94,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.975,8.0771,2.2103,8.0771,2.2103,8.1895,1.975,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.26,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.519,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.97},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.66,8.5205,6.1697,8.5205,6.1697,8.5281,5.66,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.727,1.7087,8.727],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.168,8.6246,2.485,8.6246,2.485,8.7284,2.168,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.727,3.2268,8.727],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.592,8.63,3.6791,8.63,3.6791,8.7056,3.592,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.727,3.7147,8.727],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.323,4.3584,9.323,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.438,1.9774,9.438],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.695,9.323,4.3584,9.323,4.3584,9.4677,2.695,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.775,3.996,9.775,3.996,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.79,4.1168,9.79,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.479,9.7741,4.479,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.99,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.296,1.0459,10.296,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0,0,11.0],\"confidence\":0.69,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.539,10.7248,0.539,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}],\"documentResults\":[{\"docType\":\"custom:b18dc567-8fd5-4174-a20d-448cae64c358\",\"modelId\":\"b18dc567-8fd5-4174-a20d-448cae64c358\",\"pageRange\":[1,1],\"fields\":{\"AMEX_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"selected\",\"page\":1,\"boundingBox\":[2.285,5.42,2.465,5.42,2.465,5.595,2.285,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/2\"]},\"MASTERCARD_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[3.07,5.44,3.25,5.44,3.25,5.61,3.07,5.61],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/0\"]},\"VISA_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[1.605,5.425,1.775,5.425,1.775,5.595,1.605,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/1\"]}},\"docTypeConfidence\":1.0}],\"errors\":[]}}", + "Date" : "Wed, 21 Oct 2020 17:10:44 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/b18dc567-8fd5-4174-a20d-448cae64c358/analyzeResults/27953366-f55c-4218-958d-a8bb1df959f5", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "4cd6ea11-e7c8-4312-88db-fe1c5a0fa959" + }, + "Response" : { + "x-envoy-upstream-service-time" : "38", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "fa4caf27-5249-40d2-b254-6a35ccf7dc08", + "retry-after" : "0", + "Content-Length" : "35389", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-21T17:10:34Z\",\"lastUpdatedDateTime\":\"2020-10-21T17:10:44Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.737,4.386,0.737,4.386,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.576,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1,3.3832,1.1],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1,3.6851,1.1],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1,4.0571,1.1],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1,4.3323,1.1],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.756,1.0062,4.756,1.1,4.5886,1.1],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.856,2.2182,4.0615,2.2182,4.0615,2.333,3.856,2.333],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.333,4.1098,2.333],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.753,2.2182,5.2052,2.2182,5.2052,2.333,4.753,2.333],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.256,2.2185,6.0557,2.2185,6.0557,2.3325,5.256,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.16,3.5151,1.5019,3.5151,1.5019,3.6168,1.16,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.55,3.5209,1.6753,3.5209,1.6753,3.6168,1.55,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.539,3.0909,3.539,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.539,4.3377,3.539,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.539,4.6247,3.539,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.501,3.5138,5.5751,3.5138,5.5751,3.615,5.501,3.615],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.539,5.8539,3.539,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.539,6.6562,3.539,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.539,6.994,3.539,6.994,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.036,3.5128,7.4009,3.5128,7.4009,3.6438,7.036,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.373,3.6789,7.373,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.364,3.6792,3.6047,3.6792,3.6047,3.7819,3.364,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.373,3.6801,7.373,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.222,3.8468,1.5826,3.8468,1.5826,3.9486,1.222,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.144,3.8456,5.144,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.975,4.2094,5.975,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.807,4.3655,2.807,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.068,3.5656,5.068],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.067,3.5656,5.067],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.068,4.3295,5.068],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.034,5.0848,5.034],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.034,5.0848,5.034],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.034,5.6202,5.034],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.034,5.8088,5.034],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.495,5.4285,1.495,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.502,5.7604,3.2429,5.7604,3.2429,5.8923,2.502,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.502,5.7621,2.7903,5.7621,2.7903,5.8648,2.502,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.784,7.5307,5.784],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.785,7.8166,5.785],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.955,5.2262,5.955],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.982,5.5744,5.982],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.417,5.8562,6.417,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.809,5.8181,7.809,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.809,5.8181,7.809,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.298,6.0376,1.8846,6.0376,1.8846,6.1393,1.298,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.357,6.2792,1.357,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.645,6.7385,6.645],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.012,4.0467,8.012],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.01,5.0592,8.01],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.012,5.2259,8.012],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.012,5.4691,8.012],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.012,6.0082,8.012],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.119,8.0771,1.4992,8.0771,1.4992,8.1636,1.119,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.94,8.0771,1.94,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.975,8.0771,2.2103,8.0771,2.2103,8.1895,1.975,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.26,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.519,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.97},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.66,8.5205,6.1697,8.5205,6.1697,8.5281,5.66,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.727,1.7087,8.727],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.168,8.6246,2.485,8.6246,2.485,8.7284,2.168,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.727,3.2268,8.727],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.592,8.63,3.6791,8.63,3.6791,8.7056,3.592,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.727,3.7147,8.727],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.323,4.3584,9.323,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.438,1.9774,9.438],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.695,9.323,4.3584,9.323,4.3584,9.4677,2.695,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.775,3.996,9.775,3.996,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.79,4.1168,9.79,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.479,9.7741,4.479,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.99,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.296,1.0459,10.296,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0,0,11.0],\"confidence\":0.69,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.539,10.7248,0.539,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}],\"documentResults\":[{\"docType\":\"custom:b18dc567-8fd5-4174-a20d-448cae64c358\",\"modelId\":\"b18dc567-8fd5-4174-a20d-448cae64c358\",\"pageRange\":[1,1],\"fields\":{\"AMEX_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"selected\",\"page\":1,\"boundingBox\":[2.285,5.42,2.465,5.42,2.465,5.595,2.285,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/2\"]},\"MASTERCARD_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[3.07,5.44,3.25,5.44,3.25,5.61,3.07,5.61],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/0\"]},\"VISA_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[1.605,5.425,1.775,5.425,1.775,5.595,1.605,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/1\"]}},\"docTypeConfidence\":1.0}],\"errors\":[]}}", + "Date" : "Wed, 21 Oct 2020 17:10:45 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeCustomFormUrlLabeledDataWithSelectionMark[1].json b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeCustomFormUrlLabeledDataWithSelectionMark[1].json new file mode 100644 index 000000000000..61f6db992fb2 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerAsyncClientTest.recognizeCustomFormUrlLabeledDataWithSelectionMark[1].json @@ -0,0 +1,164 @@ +{ + "networkCallRecords" : [ { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "0d4d13ac-b269-4cf8-a397-eda4f5e491d0", + "Content-Type" : "application/json" + }, + "Response" : { + "x-envoy-upstream-service-time" : "132", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "cfac1b1d-87d9-4436-ab07-9d35bec17f50", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "Date" : "Thu, 22 Oct 2020 04:43:12 GMT", + "Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/custom/models/58448c81-ad3c-4d00-8945-31c143c66778" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/58448c81-ad3c-4d00-8945-31c143c66778?includeKeys=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "991d5f1d-65ea-4f30-ade1-df8c8ad8749d" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-envoy-upstream-service-time" : "21", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "e7c9aa8c-1ee8-4ff4-be7e-dd1f95398b7b", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "{\"modelInfo\":{\"modelId\":\"58448c81-ad3c-4d00-8945-31c143c66778\",\"attributes\":{\"isComposed\":false},\"status\":\"ready\",\"createdDateTime\":\"2020-10-22T04:43:13Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:43:17Z\"},\"trainResult\":{\"averageModelAccuracy\":1.0,\"trainingDocuments\":[{\"documentName\":\"CCAuth-1.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-2.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-3.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-4.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-5.pdf\",\"pages\":1,\"status\":\"succeeded\"}],\"fields\":[{\"fieldName\":\"AMEX_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"MASTERCARD_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"VISA_SELECTION_MARK\",\"accuracy\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:43:18 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/58448c81-ad3c-4d00-8945-31c143c66778?includeKeys=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "257cb6e7-0345-4009-b16b-2963ab3ba625" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-envoy-upstream-service-time" : "23", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "ed5b18d2-1421-4a56-ba90-f1e00041c251", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "{\"modelInfo\":{\"modelId\":\"58448c81-ad3c-4d00-8945-31c143c66778\",\"attributes\":{\"isComposed\":false},\"status\":\"ready\",\"createdDateTime\":\"2020-10-22T04:43:13Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:43:17Z\"},\"trainResult\":{\"averageModelAccuracy\":1.0,\"trainingDocuments\":[{\"documentName\":\"CCAuth-1.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-2.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-3.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-4.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-5.pdf\",\"pages\":1,\"status\":\"succeeded\"}],\"fields\":[{\"fieldName\":\"AMEX_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"MASTERCARD_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"VISA_SELECTION_MARK\",\"accuracy\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:43:18 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/58448c81-ad3c-4d00-8945-31c143c66778/analyze?includeTextDetails=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "b73d9e4f-617f-4211-b1ac-53c029b9916a", + "Content-Type" : "application/json" + }, + "Response" : { + "x-envoy-upstream-service-time" : "76", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "b0638d62-63ae-403f-b4dc-f6add22f4213", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "Operation-Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/custom/models/58448c81-ad3c-4d00-8945-31c143c66778/analyzeresults/a3778d91-dd9c-40c3-a87a-5964bbb23bb5", + "Date" : "Thu, 22 Oct 2020 04:43:18 GMT" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/58448c81-ad3c-4d00-8945-31c143c66778/analyzeResults/a3778d91-dd9c-40c3-a87a-5964bbb23bb5", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "8fa2e113-d1c5-4b11-acd5-95b29a4faca8" + }, + "Response" : { + "x-envoy-upstream-service-time" : "26", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "9fb04e26-3cdf-4918-8312-8ee9426f8796", + "retry-after" : "0", + "Content-Length" : "109", + "StatusCode" : "200", + "Body" : "{\"status\":\"notStarted\",\"createdDateTime\":\"2020-10-22T04:43:19Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:43:23Z\"}", + "Date" : "Thu, 22 Oct 2020 04:43:23 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/58448c81-ad3c-4d00-8945-31c143c66778/analyzeResults/a3778d91-dd9c-40c3-a87a-5964bbb23bb5", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "74911a36-b5d5-4a19-839e-8256eb489553" + }, + "Response" : { + "x-envoy-upstream-service-time" : "28", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "68d79a2e-41f8-48b6-86cf-9248c08d0afb", + "retry-after" : "0", + "Content-Length" : "109", + "StatusCode" : "200", + "Body" : "{\"status\":\"notStarted\",\"createdDateTime\":\"2020-10-22T04:43:19Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:43:26Z\"}", + "Date" : "Thu, 22 Oct 2020 04:43:28 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/58448c81-ad3c-4d00-8945-31c143c66778/analyzeResults/a3778d91-dd9c-40c3-a87a-5964bbb23bb5", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "f5777359-09f3-4ca7-ae3f-4d0d01e1a712" + }, + "Response" : { + "x-envoy-upstream-service-time" : "72", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "ccc78d59-2a7e-4c25-8c49-6bd0ed9902dd", + "retry-after" : "0", + "Content-Length" : "35389", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:43:19Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:43:29Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.737,4.386,0.737,4.386,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.576,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1,3.3832,1.1],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1,3.6851,1.1],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1,4.0571,1.1],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1,4.3323,1.1],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.756,1.0062,4.756,1.1,4.5886,1.1],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.856,2.2182,4.0615,2.2182,4.0615,2.333,3.856,2.333],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.333,4.1098,2.333],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.753,2.2182,5.2052,2.2182,5.2052,2.333,4.753,2.333],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.256,2.2185,6.0557,2.2185,6.0557,2.3325,5.256,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.16,3.5151,1.5019,3.5151,1.5019,3.6168,1.16,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.55,3.5209,1.6753,3.5209,1.6753,3.6168,1.55,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.539,3.0909,3.539,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.539,4.3377,3.539,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.539,4.6247,3.539,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.501,3.5138,5.5751,3.5138,5.5751,3.615,5.501,3.615],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.539,5.8539,3.539,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.539,6.6562,3.539,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.539,6.994,3.539,6.994,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.036,3.5128,7.4009,3.5128,7.4009,3.6438,7.036,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.373,3.6789,7.373,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.364,3.6792,3.6047,3.6792,3.6047,3.7819,3.364,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.373,3.6801,7.373,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.222,3.8468,1.5826,3.8468,1.5826,3.9486,1.222,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.144,3.8456,5.144,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.975,4.2094,5.975,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.807,4.3655,2.807,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.068,3.5656,5.068],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.067,3.5656,5.067],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.068,4.3295,5.068],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.034,5.0848,5.034],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.034,5.0848,5.034],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.034,5.6202,5.034],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.034,5.8088,5.034],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.495,5.4285,1.495,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.502,5.7604,3.2429,5.7604,3.2429,5.8923,2.502,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.502,5.7621,2.7903,5.7621,2.7903,5.8648,2.502,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.784,7.5307,5.784],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.785,7.8166,5.785],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.955,5.2262,5.955],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.982,5.5744,5.982],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.417,5.8562,6.417,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.809,5.8181,7.809,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.809,5.8181,7.809,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.298,6.0376,1.8846,6.0376,1.8846,6.1393,1.298,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.357,6.2792,1.357,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.645,6.7385,6.645],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.012,4.0467,8.012],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.01,5.0592,8.01],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.012,5.2259,8.012],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.012,5.4691,8.012],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.012,6.0082,8.012],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.119,8.0771,1.4992,8.0771,1.4992,8.1636,1.119,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.94,8.0771,1.94,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.975,8.0771,2.2103,8.0771,2.2103,8.1895,1.975,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.26,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.519,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.97},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.66,8.5205,6.1697,8.5205,6.1697,8.5281,5.66,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.727,1.7087,8.727],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.168,8.6246,2.485,8.6246,2.485,8.7284,2.168,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.727,3.2268,8.727],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.592,8.63,3.6791,8.63,3.6791,8.7056,3.592,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.727,3.7147,8.727],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.323,4.3584,9.323,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.438,1.9774,9.438],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.695,9.323,4.3584,9.323,4.3584,9.4677,2.695,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.775,3.996,9.775,3.996,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.79,4.1168,9.79,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.479,9.7741,4.479,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.99,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.296,1.0459,10.296,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0,0,11.0],\"confidence\":0.69,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.539,10.7248,0.539,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}],\"documentResults\":[{\"docType\":\"custom:58448c81-ad3c-4d00-8945-31c143c66778\",\"modelId\":\"58448c81-ad3c-4d00-8945-31c143c66778\",\"pageRange\":[1,1],\"fields\":{\"AMEX_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"selected\",\"page\":1,\"boundingBox\":[2.285,5.42,2.465,5.42,2.465,5.595,2.285,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/2\"]},\"VISA_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[1.605,5.425,1.775,5.425,1.775,5.595,1.605,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/1\"]},\"MASTERCARD_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[3.07,5.44,3.25,5.44,3.25,5.61,3.07,5.61],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/0\"]}},\"docTypeConfidence\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:43:33 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/58448c81-ad3c-4d00-8945-31c143c66778/analyzeResults/a3778d91-dd9c-40c3-a87a-5964bbb23bb5", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "e9e71177-9cba-4c94-8e48-49d9871435d6" + }, + "Response" : { + "x-envoy-upstream-service-time" : "39", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "94800e91-5613-4cab-acdf-6ba6ab7f7521", + "retry-after" : "0", + "Content-Length" : "35389", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:43:19Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:43:29Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.737,4.386,0.737,4.386,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.576,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1,3.3832,1.1],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1,3.6851,1.1],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1,4.0571,1.1],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1,4.3323,1.1],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.756,1.0062,4.756,1.1,4.5886,1.1],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.856,2.2182,4.0615,2.2182,4.0615,2.333,3.856,2.333],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.333,4.1098,2.333],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.753,2.2182,5.2052,2.2182,5.2052,2.333,4.753,2.333],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.256,2.2185,6.0557,2.2185,6.0557,2.3325,5.256,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.16,3.5151,1.5019,3.5151,1.5019,3.6168,1.16,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.55,3.5209,1.6753,3.5209,1.6753,3.6168,1.55,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.539,3.0909,3.539,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.539,4.3377,3.539,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.539,4.6247,3.539,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.501,3.5138,5.5751,3.5138,5.5751,3.615,5.501,3.615],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.539,5.8539,3.539,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.539,6.6562,3.539,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.539,6.994,3.539,6.994,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.036,3.5128,7.4009,3.5128,7.4009,3.6438,7.036,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.373,3.6789,7.373,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.364,3.6792,3.6047,3.6792,3.6047,3.7819,3.364,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.373,3.6801,7.373,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.222,3.8468,1.5826,3.8468,1.5826,3.9486,1.222,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.144,3.8456,5.144,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.975,4.2094,5.975,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.807,4.3655,2.807,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.068,3.5656,5.068],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.067,3.5656,5.067],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.068,4.3295,5.068],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.034,5.0848,5.034],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.034,5.0848,5.034],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.034,5.6202,5.034],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.034,5.8088,5.034],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.495,5.4285,1.495,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.502,5.7604,3.2429,5.7604,3.2429,5.8923,2.502,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.502,5.7621,2.7903,5.7621,2.7903,5.8648,2.502,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.784,7.5307,5.784],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.785,7.8166,5.785],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.955,5.2262,5.955],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.982,5.5744,5.982],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.417,5.8562,6.417,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.809,5.8181,7.809,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.809,5.8181,7.809,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.298,6.0376,1.8846,6.0376,1.8846,6.1393,1.298,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.357,6.2792,1.357,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.645,6.7385,6.645],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.012,4.0467,8.012],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.01,5.0592,8.01],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.012,5.2259,8.012],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.012,5.4691,8.012],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.012,6.0082,8.012],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.119,8.0771,1.4992,8.0771,1.4992,8.1636,1.119,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.94,8.0771,1.94,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.975,8.0771,2.2103,8.0771,2.2103,8.1895,1.975,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.26,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.519,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.97},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.66,8.5205,6.1697,8.5205,6.1697,8.5281,5.66,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.727,1.7087,8.727],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.168,8.6246,2.485,8.6246,2.485,8.7284,2.168,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.727,3.2268,8.727],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.592,8.63,3.6791,8.63,3.6791,8.7056,3.592,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.727,3.7147,8.727],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.323,4.3584,9.323,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.438,1.9774,9.438],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.695,9.323,4.3584,9.323,4.3584,9.4677,2.695,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.775,3.996,9.775,3.996,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.79,4.1168,9.79,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.479,9.7741,4.479,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.99,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.296,1.0459,10.296,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0,0,11.0],\"confidence\":0.69,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.539,10.7248,0.539,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}],\"documentResults\":[{\"docType\":\"custom:58448c81-ad3c-4d00-8945-31c143c66778\",\"modelId\":\"58448c81-ad3c-4d00-8945-31c143c66778\",\"pageRange\":[1,1],\"fields\":{\"AMEX_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"selected\",\"page\":1,\"boundingBox\":[2.285,5.42,2.465,5.42,2.465,5.595,2.285,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/2\"]},\"VISA_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[1.605,5.425,1.775,5.425,1.775,5.595,1.605,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/1\"]},\"MASTERCARD_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[3.07,5.44,3.25,5.44,3.25,5.61,3.07,5.61],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/0\"]}},\"docTypeConfidence\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:43:34 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeContentWithSelectionMarksFromUrl[1].json b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeContentWithSelectionMarksFromUrl[1].json new file mode 100644 index 000000000000..488c5fdebee6 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeContentWithSelectionMarksFromUrl[1].json @@ -0,0 +1,64 @@ +{ + "networkCallRecords" : [ { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyze", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "41b810db-5485-4731-9d3f-2ec8fa95eb0e", + "Content-Type" : "application/json" + }, + "Response" : { + "x-envoy-upstream-service-time" : "221", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "a8861ab5-565d-4fff-b752-ae477620c3e9", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "Operation-Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/layout/analyzeResults/a8861ab5-565d-4fff-b752-ae477620c3e9", + "Date" : "Thu, 22 Oct 2020 04:38:25 GMT" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/a8861ab5-565d-4fff-b752-ae477620c3e9", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "8df1592a-9e76-425d-b243-c91044644928" + }, + "Response" : { + "x-envoy-upstream-service-time" : "46", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "fb3a73d8-927f-425b-919f-13349cb7e693", + "retry-after" : "0", + "Content-Length" : "34833", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:38:26Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:38:32Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.7370,4.3860,0.7370,4.3860,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.5760,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1000,3.3832,1.1000],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1000,3.6851,1.1000],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1000,4.0571,1.1000],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1000,4.3323,1.1000],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.7560,1.0062,4.7560,1.1000,4.5886,1.1000],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.8560,2.2182,4.0615,2.2182,4.0615,2.3330,3.8560,2.3330],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.3330,4.1098,2.3330],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.7530,2.2182,5.2052,2.2182,5.2052,2.3330,4.7530,2.3330],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.2560,2.2185,6.0557,2.2185,6.0557,2.3325,5.2560,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.1600,3.5151,1.5019,3.5151,1.5019,3.6168,1.1600,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.5500,3.5209,1.6753,3.5209,1.6753,3.6168,1.5500,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.5390,3.0909,3.5390,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.5390,4.3377,3.5390,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.5390,4.6247,3.5390,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.5010,3.5138,5.5751,3.5138,5.5751,3.6150,5.5010,3.6150],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.5390,5.8539,3.5390,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.5390,6.6562,3.5390,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.5390,6.9940,3.5390,6.9940,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.0360,3.5128,7.4009,3.5128,7.4009,3.6438,7.0360,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.3730,3.6789,7.3730,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.3640,3.6792,3.6047,3.6792,3.6047,3.7819,3.3640,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.3730,3.6801,7.3730,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.2220,3.8468,1.5826,3.8468,1.5826,3.9486,1.2220,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.1440,3.8456,5.1440,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.9750,4.2094,5.9750,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.8070,4.3655,2.8070,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.0680,3.5656,5.0680],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.0670,3.5656,5.0670],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.0680,4.3295,5.0680],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.0340,5.0848,5.0340],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.0340,5.0848,5.0340],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.0340,5.6202,5.0340],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.0340,5.8088,5.0340],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.4950,5.4285,1.4950,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.5020,5.7604,3.2429,5.7604,3.2429,5.8923,2.5020,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.5020,5.7621,2.7903,5.7621,2.7903,5.8648,2.5020,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.7840,7.5307,5.7840],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.7850,7.8166,5.7850],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.9550,5.2262,5.9550],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.9820,5.5744,5.9820],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.4170,5.8562,6.4170,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.8090,5.8181,7.8090,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.8090,5.8181,7.8090,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.2980,6.0376,1.8846,6.0376,1.8846,6.1393,1.2980,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.3570,6.2792,1.3570,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.6450,6.7385,6.6450],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.0120,4.0467,8.0120],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.0100,5.0592,8.0100],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.0120,5.2259,8.0120],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.0120,5.4691,8.0120],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.0120,6.0082,8.0120],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.1190,8.0771,1.4992,8.0771,1.4992,8.1636,1.1190,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.9400,8.0771,1.9400,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.9750,8.0771,2.2103,8.0771,2.2103,8.1895,1.9750,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.2600,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.5190,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.970},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.6600,8.5205,6.1697,8.5205,6.1697,8.5281,5.6600,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.7270,1.7087,8.7270],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.1680,8.6246,2.4850,8.6246,2.4850,8.7284,2.1680,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.7270,3.2268,8.7270],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.5920,8.6300,3.6791,8.6300,3.6791,8.7056,3.5920,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.7270,3.7147,8.7270],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.3230,4.3584,9.3230,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.4380,1.9774,9.4380],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.6950,9.3230,4.3584,9.3230,4.3584,9.4677,2.6950,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.7750,3.9960,9.7750,3.9960,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.7900,4.1168,9.7900,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.4790,9.7741,4.4790,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.990,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.2960,1.0459,10.2960,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0000,0,11.0000],\"confidence\":0.690,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.5390,10.7248,0.5390,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}]}}", + "Date" : "Thu, 22 Oct 2020 04:38:50 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/a8861ab5-565d-4fff-b752-ae477620c3e9", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "e68c0ee9-457b-4bae-a040-3b0524073ed6" + }, + "Response" : { + "x-envoy-upstream-service-time" : "21", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "1289c36b-7306-4df1-aba8-18cac61cf0d5", + "retry-after" : "0", + "Content-Length" : "34833", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:38:26Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:38:32Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.7370,4.3860,0.7370,4.3860,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.5760,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1000,3.3832,1.1000],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1000,3.6851,1.1000],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1000,4.0571,1.1000],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1000,4.3323,1.1000],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.7560,1.0062,4.7560,1.1000,4.5886,1.1000],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.8560,2.2182,4.0615,2.2182,4.0615,2.3330,3.8560,2.3330],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.3330,4.1098,2.3330],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.7530,2.2182,5.2052,2.2182,5.2052,2.3330,4.7530,2.3330],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.2560,2.2185,6.0557,2.2185,6.0557,2.3325,5.2560,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.1600,3.5151,1.5019,3.5151,1.5019,3.6168,1.1600,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.5500,3.5209,1.6753,3.5209,1.6753,3.6168,1.5500,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.5390,3.0909,3.5390,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.5390,4.3377,3.5390,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.5390,4.6247,3.5390,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.5010,3.5138,5.5751,3.5138,5.5751,3.6150,5.5010,3.6150],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.5390,5.8539,3.5390,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.5390,6.6562,3.5390,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.5390,6.9940,3.5390,6.9940,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.0360,3.5128,7.4009,3.5128,7.4009,3.6438,7.0360,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.3730,3.6789,7.3730,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.3640,3.6792,3.6047,3.6792,3.6047,3.7819,3.3640,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.3730,3.6801,7.3730,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.2220,3.8468,1.5826,3.8468,1.5826,3.9486,1.2220,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.1440,3.8456,5.1440,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.9750,4.2094,5.9750,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.8070,4.3655,2.8070,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.0680,3.5656,5.0680],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.0670,3.5656,5.0670],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.0680,4.3295,5.0680],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.0340,5.0848,5.0340],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.0340,5.0848,5.0340],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.0340,5.6202,5.0340],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.0340,5.8088,5.0340],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.4950,5.4285,1.4950,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.5020,5.7604,3.2429,5.7604,3.2429,5.8923,2.5020,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.5020,5.7621,2.7903,5.7621,2.7903,5.8648,2.5020,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.7840,7.5307,5.7840],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.7850,7.8166,5.7850],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.9550,5.2262,5.9550],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.9820,5.5744,5.9820],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.4170,5.8562,6.4170,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.8090,5.8181,7.8090,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.8090,5.8181,7.8090,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.2980,6.0376,1.8846,6.0376,1.8846,6.1393,1.2980,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.3570,6.2792,1.3570,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.6450,6.7385,6.6450],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.0120,4.0467,8.0120],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.0100,5.0592,8.0100],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.0120,5.2259,8.0120],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.0120,5.4691,8.0120],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.0120,6.0082,8.0120],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.1190,8.0771,1.4992,8.0771,1.4992,8.1636,1.1190,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.9400,8.0771,1.9400,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.9750,8.0771,2.2103,8.0771,2.2103,8.1895,1.9750,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.2600,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.5190,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.970},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.6600,8.5205,6.1697,8.5205,6.1697,8.5281,5.6600,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.7270,1.7087,8.7270],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.1680,8.6246,2.4850,8.6246,2.4850,8.7284,2.1680,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.7270,3.2268,8.7270],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.5920,8.6300,3.6791,8.6300,3.6791,8.7056,3.5920,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.7270,3.7147,8.7270],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.3230,4.3584,9.3230,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.4380,1.9774,9.4380],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.6950,9.3230,4.3584,9.3230,4.3584,9.4677,2.6950,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.7750,3.9960,9.7750,3.9960,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.7900,4.1168,9.7900,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.4790,9.7741,4.4790,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.990,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.2960,1.0459,10.2960,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0000,0,11.0000],\"confidence\":0.690,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.5390,10.7248,0.5390,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}]}}", + "Date" : "Thu, 22 Oct 2020 04:38:34 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeContentWithSelectionMarks[1].json b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeContentWithSelectionMarks[1].json new file mode 100644 index 000000000000..c34ad6f02e00 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeContentWithSelectionMarks[1].json @@ -0,0 +1,84 @@ +{ + "networkCallRecords" : [ { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyze", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "008211b4-c42f-4780-b50a-61600c6a8aaf", + "Content-Type" : "application/pdf" + }, + "Response" : { + "x-envoy-upstream-service-time" : "119", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "3aa96872-a5c2-43c4-aef1-2eb438d778d9", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "Operation-Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/layout/analyzeResults/3aa96872-a5c2-43c4-aef1-2eb438d778d9", + "Date" : "Thu, 22 Oct 2020 06:38:40 GMT" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/3aa96872-a5c2-43c4-aef1-2eb438d778d9", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "04234c9a-5b2f-4357-8e82-974d5a6fb588" + }, + "Response" : { + "x-envoy-upstream-service-time" : "13", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "6d4d6d97-e547-4e44-a51d-67a54fe821eb", + "retry-after" : "0", + "Content-Length" : "106", + "StatusCode" : "200", + "Body" : "{\"status\":\"running\",\"createdDateTime\":\"2020-10-22T06:38:41Z\",\"lastUpdatedDateTime\":\"2020-10-22T06:38:41Z\"}", + "Date" : "Thu, 22 Oct 2020 06:38:45 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/3aa96872-a5c2-43c4-aef1-2eb438d778d9", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "337f54d2-1c18-4cf4-8369-d658dcafdb4f" + }, + "Response" : { + "x-envoy-upstream-service-time" : "95", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "fd9d24b9-6f54-4572-99a3-cb075a3df50f", + "retry-after" : "0", + "Content-Length" : "34833", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T06:38:41Z\",\"lastUpdatedDateTime\":\"2020-10-22T06:38:48Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.7370,4.3860,0.7370,4.3860,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.5760,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1000,3.3832,1.1000],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1000,3.6851,1.1000],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1000,4.0571,1.1000],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1000,4.3323,1.1000],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.7560,1.0062,4.7560,1.1000,4.5886,1.1000],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.8560,2.2182,4.0615,2.2182,4.0615,2.3330,3.8560,2.3330],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.3330,4.1098,2.3330],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.7530,2.2182,5.2052,2.2182,5.2052,2.3330,4.7530,2.3330],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.2560,2.2185,6.0557,2.2185,6.0557,2.3325,5.2560,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.1600,3.5151,1.5019,3.5151,1.5019,3.6168,1.1600,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.5500,3.5209,1.6753,3.5209,1.6753,3.6168,1.5500,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.5390,3.0909,3.5390,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.5390,4.3377,3.5390,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.5390,4.6247,3.5390,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.5010,3.5138,5.5751,3.5138,5.5751,3.6150,5.5010,3.6150],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.5390,5.8539,3.5390,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.5390,6.6562,3.5390,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.5390,6.9940,3.5390,6.9940,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.0360,3.5128,7.4009,3.5128,7.4009,3.6438,7.0360,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.3730,3.6789,7.3730,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.3640,3.6792,3.6047,3.6792,3.6047,3.7819,3.3640,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.3730,3.6801,7.3730,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.2220,3.8468,1.5826,3.8468,1.5826,3.9486,1.2220,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.1440,3.8456,5.1440,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.9750,4.2094,5.9750,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.8070,4.3655,2.8070,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.0680,3.5656,5.0680],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.0670,3.5656,5.0670],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.0680,4.3295,5.0680],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.0340,5.0848,5.0340],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.0340,5.0848,5.0340],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.0340,5.6202,5.0340],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.0340,5.8088,5.0340],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.4950,5.4285,1.4950,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.5020,5.7604,3.2429,5.7604,3.2429,5.8923,2.5020,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.5020,5.7621,2.7903,5.7621,2.7903,5.8648,2.5020,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.7840,7.5307,5.7840],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.7850,7.8166,5.7850],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.9550,5.2262,5.9550],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.9820,5.5744,5.9820],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.4170,5.8562,6.4170,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.8090,5.8181,7.8090,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.8090,5.8181,7.8090,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.2980,6.0376,1.8846,6.0376,1.8846,6.1393,1.2980,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.3570,6.2792,1.3570,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.6450,6.7385,6.6450],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.0120,4.0467,8.0120],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.0100,5.0592,8.0100],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.0120,5.2259,8.0120],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.0120,5.4691,8.0120],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.0120,6.0082,8.0120],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.1190,8.0771,1.4992,8.0771,1.4992,8.1636,1.1190,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.9400,8.0771,1.9400,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.9750,8.0771,2.2103,8.0771,2.2103,8.1895,1.9750,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.2600,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.5190,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.970},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.6600,8.5205,6.1697,8.5205,6.1697,8.5281,5.6600,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.7270,1.7087,8.7270],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.1680,8.6246,2.4850,8.6246,2.4850,8.7284,2.1680,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.7270,3.2268,8.7270],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.5920,8.6300,3.6791,8.6300,3.6791,8.7056,3.5920,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.7270,3.7147,8.7270],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.3230,4.3584,9.3230,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.4380,1.9774,9.4380],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.6950,9.3230,4.3584,9.3230,4.3584,9.4677,2.6950,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.7750,3.9960,9.7750,3.9960,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.7900,4.1168,9.7900,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.4790,9.7741,4.4790,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.990,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.2960,1.0459,10.2960,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0000,0,11.0000],\"confidence\":0.690,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.5390,10.7248,0.5390,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}]}}", + "Date" : "Thu, 22 Oct 2020 06:38:51 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//layout/analyzeResults/3aa96872-a5c2-43c4-aef1-2eb438d778d9", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "1cc1a0bd-bdf7-4002-a079-bc57ad336946" + }, + "Response" : { + "x-envoy-upstream-service-time" : "22", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "055899ee-a12e-46ab-a198-00f7adb71ce3", + "retry-after" : "0", + "Content-Length" : "34833", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T06:38:41Z\",\"lastUpdatedDateTime\":\"2020-10-22T06:38:48Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.7370,4.3860,0.7370,4.3860,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.5760,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1000,3.3832,1.1000],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1000,3.6851,1.1000],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1000,4.0571,1.1000],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1000,4.3323,1.1000],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.7560,1.0062,4.7560,1.1000,4.5886,1.1000],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.3330,2.4417,2.3330],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.8560,2.2182,4.0615,2.2182,4.0615,2.3330,3.8560,2.3330],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.3330,4.1098,2.3330],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.7530,2.2182,5.2052,2.2182,5.2052,2.3330,4.7530,2.3330],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.2560,2.2185,6.0557,2.2185,6.0557,2.3325,5.2560,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.1600,3.5151,1.5019,3.5151,1.5019,3.6168,1.1600,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.5500,3.5209,1.6753,3.5209,1.6753,3.6168,1.5500,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.5390,3.0909,3.5390,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.5390,4.3377,3.5390,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.5390,4.6247,3.5390,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.5010,3.5138,5.5751,3.5138,5.5751,3.6150,5.5010,3.6150],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.5390,5.8539,3.5390,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.5390,6.6562,3.5390,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.5390,6.9940,3.5390,6.9940,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.0360,3.5128,7.4009,3.5128,7.4009,3.6438,7.0360,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.3730,3.6789,7.3730,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.3640,3.6792,3.6047,3.6792,3.6047,3.7819,3.3640,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.3730,3.6801,7.3730,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.2220,3.8468,1.5826,3.8468,1.5826,3.9486,1.2220,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.1440,3.8456,5.1440,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.9750,4.2094,5.9750,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.8070,4.3655,2.8070,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.0680,3.5656,5.0680],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.0670,3.5656,5.0670],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.0680,4.3295,5.0680],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.0340,5.0848,5.0340],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.0340,5.0848,5.0340],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.0340,5.6202,5.0340],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.0340,5.8088,5.0340],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.4950,5.4285,1.4950,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.5020,5.7604,3.2429,5.7604,3.2429,5.8923,2.5020,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.5020,5.7621,2.7903,5.7621,2.7903,5.8648,2.5020,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.7840,7.5307,5.7840],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.7850,7.8166,5.7850],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.9550,5.2262,5.9550],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.9820,5.5744,5.9820],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.4170,5.8562,6.4170,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.8700,5.8542,6.8700,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.9180,7.3783,5.9180],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.8090,5.8181,7.8090,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.8090,5.8181,7.8090,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.2980,6.0376,1.8846,6.0376,1.8846,6.1393,1.2980,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.3570,6.2792,1.3570,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.8920,6.5399,1.1815,6.5399,1.1815,6.6721,0.8920,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.0100,6.5747,2.0100,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.6450,4.2363,6.6450],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.6450,6.7385,6.6450],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.0120,4.0467,8.0120],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.4420,7.8916,4.5825,7.8916,4.5825,7.9982,4.4420,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.0120,4.6708,8.0120],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.0100,5.0592,8.0100],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.0120,5.2259,8.0120],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.0120,5.4691,8.0120],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.0120,6.0082,8.0120],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.1190,8.0771,1.4992,8.0771,1.4992,8.1636,1.1190,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.9400,8.0771,1.9400,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.9750,8.0771,2.2103,8.0771,2.2103,8.1895,1.9750,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.2600,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.5190,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.970},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.6600,8.5205,6.1697,8.5205,6.1697,8.5281,5.6600,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.7270,1.7087,8.7270],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.1680,8.6246,2.4850,8.6246,2.4850,8.7284,2.1680,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.7270,3.2268,8.7270],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.5920,8.6300,3.6791,8.6300,3.6791,8.7056,3.5920,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.7270,3.7147,8.7270],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.3230,4.3584,9.3230,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.4380,1.9774,9.4380],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.6950,9.3230,4.3584,9.3230,4.3584,9.4677,2.6950,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.7750,3.9960,9.7750,3.9960,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.7900,4.1168,9.7900,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.4790,9.7741,4.4790,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.990,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.2960,1.0459,10.2960,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0000,0,11.0000],\"confidence\":0.690,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.5390,10.7248,0.5390,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}]}}", + "Date" : "Thu, 22 Oct 2020 06:38:51 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeCustomFormLabeledDataWithSelectionMark[1].json b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeCustomFormLabeledDataWithSelectionMark[1].json new file mode 100644 index 000000000000..dc53ad59b10e --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeCustomFormLabeledDataWithSelectionMark[1].json @@ -0,0 +1,144 @@ +{ + "networkCallRecords" : [ { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "09246005-5e8a-4fe3-bfec-311eed1be7ee", + "Content-Type" : "application/json" + }, + "Response" : { + "x-envoy-upstream-service-time" : "330", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "d5f64fdc-f6e1-41d3-bd2f-b26fbf8717ba", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "Date" : "Thu, 22 Oct 2020 04:27:48 GMT", + "Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/custom/models/17e41b0a-2264-4b21-beb4-7dbbf49db3e1" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/17e41b0a-2264-4b21-beb4-7dbbf49db3e1?includeKeys=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "f5633e86-2203-4ea2-9017-27ad02ef0e14" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-envoy-upstream-service-time" : "29", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "efadd33a-20fd-4529-9d36-5d59934f470c", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "{\"modelInfo\":{\"modelId\":\"17e41b0a-2264-4b21-beb4-7dbbf49db3e1\",\"attributes\":{\"isComposed\":false},\"status\":\"ready\",\"createdDateTime\":\"2020-10-22T04:27:48Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:27:51Z\"},\"trainResult\":{\"averageModelAccuracy\":1.0,\"trainingDocuments\":[{\"documentName\":\"CCAuth-1.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-2.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-3.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-4.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-5.pdf\",\"pages\":1,\"status\":\"succeeded\"}],\"fields\":[{\"fieldName\":\"AMEX_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"MASTERCARD_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"VISA_SELECTION_MARK\",\"accuracy\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:27:53 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/17e41b0a-2264-4b21-beb4-7dbbf49db3e1?includeKeys=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "aa5f0e4b-b3f4-40bf-b1fa-7f2d253b5714" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-envoy-upstream-service-time" : "27", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "a1560f66-e1e4-429f-a931-4e1f17e8ac36", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "{\"modelInfo\":{\"modelId\":\"17e41b0a-2264-4b21-beb4-7dbbf49db3e1\",\"attributes\":{\"isComposed\":false},\"status\":\"ready\",\"createdDateTime\":\"2020-10-22T04:27:48Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:27:51Z\"},\"trainResult\":{\"averageModelAccuracy\":1.0,\"trainingDocuments\":[{\"documentName\":\"CCAuth-1.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-2.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-3.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-4.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-5.pdf\",\"pages\":1,\"status\":\"succeeded\"}],\"fields\":[{\"fieldName\":\"AMEX_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"MASTERCARD_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"VISA_SELECTION_MARK\",\"accuracy\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:27:53 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/17e41b0a-2264-4b21-beb4-7dbbf49db3e1/analyze?includeTextDetails=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "cda3b623-af3f-44e1-8669-03910a6b4f6c", + "Content-Type" : "application/pdf" + }, + "Response" : { + "x-envoy-upstream-service-time" : "101", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "ea41e646-345e-4cd9-8557-a48c905c81ee", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "Operation-Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/custom/models/17e41b0a-2264-4b21-beb4-7dbbf49db3e1/analyzeresults/8131c98d-7b2c-417d-97d0-e33dd72bae87", + "Date" : "Thu, 22 Oct 2020 04:27:54 GMT" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/17e41b0a-2264-4b21-beb4-7dbbf49db3e1/analyzeResults/8131c98d-7b2c-417d-97d0-e33dd72bae87", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "946b3e97-807b-4a96-aa2f-046d6d80e007" + }, + "Response" : { + "x-envoy-upstream-service-time" : "37", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "c3ee9f31-5814-4ba8-8c35-07589c913cec", + "retry-after" : "0", + "Content-Length" : "109", + "StatusCode" : "200", + "Body" : "{\"status\":\"notStarted\",\"createdDateTime\":\"2020-10-22T04:27:54Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:27:58Z\"}", + "Date" : "Thu, 22 Oct 2020 04:27:58 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/17e41b0a-2264-4b21-beb4-7dbbf49db3e1/analyzeResults/8131c98d-7b2c-417d-97d0-e33dd72bae87", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "e8c32350-e198-408a-a9e2-26784f6c6e3d" + }, + "Response" : { + "x-envoy-upstream-service-time" : "42", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "a2353233-08ee-4a47-8d27-7933c257ec37", + "retry-after" : "0", + "Content-Length" : "35389", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:27:54Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:28:04Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.737,4.386,0.737,4.386,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.576,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1,3.3832,1.1],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1,3.6851,1.1],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1,4.0571,1.1],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1,4.3323,1.1],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.756,1.0062,4.756,1.1,4.5886,1.1],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.856,2.2182,4.0615,2.2182,4.0615,2.333,3.856,2.333],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.333,4.1098,2.333],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.753,2.2182,5.2052,2.2182,5.2052,2.333,4.753,2.333],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.256,2.2185,6.0557,2.2185,6.0557,2.3325,5.256,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.16,3.5151,1.5019,3.5151,1.5019,3.6168,1.16,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.55,3.5209,1.6753,3.5209,1.6753,3.6168,1.55,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.539,3.0909,3.539,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.539,4.3377,3.539,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.539,4.6247,3.539,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.501,3.5138,5.5751,3.5138,5.5751,3.615,5.501,3.615],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.539,5.8539,3.539,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.539,6.6562,3.539,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.539,6.994,3.539,6.994,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.036,3.5128,7.4009,3.5128,7.4009,3.6438,7.036,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.373,3.6789,7.373,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.364,3.6792,3.6047,3.6792,3.6047,3.7819,3.364,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.373,3.6801,7.373,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.222,3.8468,1.5826,3.8468,1.5826,3.9486,1.222,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.144,3.8456,5.144,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.975,4.2094,5.975,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.807,4.3655,2.807,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.068,3.5656,5.068],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.067,3.5656,5.067],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.068,4.3295,5.068],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.034,5.0848,5.034],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.034,5.0848,5.034],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.034,5.6202,5.034],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.034,5.8088,5.034],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.495,5.4285,1.495,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.502,5.7604,3.2429,5.7604,3.2429,5.8923,2.502,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.502,5.7621,2.7903,5.7621,2.7903,5.8648,2.502,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.784,7.5307,5.784],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.785,7.8166,5.785],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.955,5.2262,5.955],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.982,5.5744,5.982],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.417,5.8562,6.417,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.809,5.8181,7.809,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.809,5.8181,7.809,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.298,6.0376,1.8846,6.0376,1.8846,6.1393,1.298,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.357,6.2792,1.357,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.645,6.7385,6.645],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.012,4.0467,8.012],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.01,5.0592,8.01],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.012,5.2259,8.012],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.012,5.4691,8.012],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.012,6.0082,8.012],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.119,8.0771,1.4992,8.0771,1.4992,8.1636,1.119,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.94,8.0771,1.94,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.975,8.0771,2.2103,8.0771,2.2103,8.1895,1.975,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.26,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.519,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.97},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.66,8.5205,6.1697,8.5205,6.1697,8.5281,5.66,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.727,1.7087,8.727],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.168,8.6246,2.485,8.6246,2.485,8.7284,2.168,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.727,3.2268,8.727],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.592,8.63,3.6791,8.63,3.6791,8.7056,3.592,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.727,3.7147,8.727],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.323,4.3584,9.323,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.438,1.9774,9.438],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.695,9.323,4.3584,9.323,4.3584,9.4677,2.695,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.775,3.996,9.775,3.996,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.79,4.1168,9.79,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.479,9.7741,4.479,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.99,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.296,1.0459,10.296,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0,0,11.0],\"confidence\":0.69,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.539,10.7248,0.539,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}],\"documentResults\":[{\"docType\":\"custom:17e41b0a-2264-4b21-beb4-7dbbf49db3e1\",\"modelId\":\"17e41b0a-2264-4b21-beb4-7dbbf49db3e1\",\"pageRange\":[1,1],\"fields\":{\"MASTERCARD_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[3.07,5.44,3.25,5.44,3.25,5.61,3.07,5.61],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/0\"]},\"AMEX_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"selected\",\"page\":1,\"boundingBox\":[2.285,5.42,2.465,5.42,2.465,5.595,2.285,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/2\"]},\"VISA_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[1.605,5.425,1.775,5.425,1.775,5.595,1.605,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/1\"]}},\"docTypeConfidence\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:28:04 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/17e41b0a-2264-4b21-beb4-7dbbf49db3e1/analyzeResults/8131c98d-7b2c-417d-97d0-e33dd72bae87", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "2a33b37b-7643-44d9-a940-8003d2c32b57" + }, + "Response" : { + "x-envoy-upstream-service-time" : "36", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "adcf30c0-c95f-49ad-b3a1-15443645c7b7", + "retry-after" : "0", + "Content-Length" : "35389", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:27:54Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:28:04Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.737,4.386,0.737,4.386,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.576,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1,3.3832,1.1],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1,3.6851,1.1],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1,4.0571,1.1],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1,4.3323,1.1],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.756,1.0062,4.756,1.1,4.5886,1.1],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.856,2.2182,4.0615,2.2182,4.0615,2.333,3.856,2.333],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.333,4.1098,2.333],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.753,2.2182,5.2052,2.2182,5.2052,2.333,4.753,2.333],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.256,2.2185,6.0557,2.2185,6.0557,2.3325,5.256,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.16,3.5151,1.5019,3.5151,1.5019,3.6168,1.16,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.55,3.5209,1.6753,3.5209,1.6753,3.6168,1.55,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.539,3.0909,3.539,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.539,4.3377,3.539,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.539,4.6247,3.539,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.501,3.5138,5.5751,3.5138,5.5751,3.615,5.501,3.615],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.539,5.8539,3.539,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.539,6.6562,3.539,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.539,6.994,3.539,6.994,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.036,3.5128,7.4009,3.5128,7.4009,3.6438,7.036,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.373,3.6789,7.373,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.364,3.6792,3.6047,3.6792,3.6047,3.7819,3.364,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.373,3.6801,7.373,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.222,3.8468,1.5826,3.8468,1.5826,3.9486,1.222,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.144,3.8456,5.144,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.975,4.2094,5.975,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.807,4.3655,2.807,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.068,3.5656,5.068],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.067,3.5656,5.067],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.068,4.3295,5.068],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.034,5.0848,5.034],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.034,5.0848,5.034],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.034,5.6202,5.034],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.034,5.8088,5.034],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.495,5.4285,1.495,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.502,5.7604,3.2429,5.7604,3.2429,5.8923,2.502,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.502,5.7621,2.7903,5.7621,2.7903,5.8648,2.502,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.784,7.5307,5.784],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.785,7.8166,5.785],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.955,5.2262,5.955],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.982,5.5744,5.982],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.417,5.8562,6.417,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.809,5.8181,7.809,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.809,5.8181,7.809,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.298,6.0376,1.8846,6.0376,1.8846,6.1393,1.298,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.357,6.2792,1.357,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.645,6.7385,6.645],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.012,4.0467,8.012],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.01,5.0592,8.01],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.012,5.2259,8.012],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.012,5.4691,8.012],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.012,6.0082,8.012],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.119,8.0771,1.4992,8.0771,1.4992,8.1636,1.119,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.94,8.0771,1.94,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.975,8.0771,2.2103,8.0771,2.2103,8.1895,1.975,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.26,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.519,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.97},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.66,8.5205,6.1697,8.5205,6.1697,8.5281,5.66,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.727,1.7087,8.727],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.168,8.6246,2.485,8.6246,2.485,8.7284,2.168,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.727,3.2268,8.727],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.592,8.63,3.6791,8.63,3.6791,8.7056,3.592,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.727,3.7147,8.727],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.323,4.3584,9.323,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.438,1.9774,9.438],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.695,9.323,4.3584,9.323,4.3584,9.4677,2.695,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.775,3.996,9.775,3.996,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.79,4.1168,9.79,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.479,9.7741,4.479,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.99,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.296,1.0459,10.296,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0,0,11.0],\"confidence\":0.69,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.539,10.7248,0.539,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}],\"documentResults\":[{\"docType\":\"custom:17e41b0a-2264-4b21-beb4-7dbbf49db3e1\",\"modelId\":\"17e41b0a-2264-4b21-beb4-7dbbf49db3e1\",\"pageRange\":[1,1],\"fields\":{\"MASTERCARD_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[3.07,5.44,3.25,5.44,3.25,5.61,3.07,5.61],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/0\"]},\"AMEX_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"selected\",\"page\":1,\"boundingBox\":[2.285,5.42,2.465,5.42,2.465,5.595,2.285,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/2\"]},\"VISA_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[1.605,5.425,1.775,5.425,1.775,5.595,1.605,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/1\"]}},\"docTypeConfidence\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:28:04 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeCustomFormUrlLabeledDataWithSelectionMark[1].json b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeCustomFormUrlLabeledDataWithSelectionMark[1].json new file mode 100644 index 000000000000..a3680b1c14b9 --- /dev/null +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/resources/session-records/FormRecognizerClientTest.recognizeCustomFormUrlLabeledDataWithSelectionMark[1].json @@ -0,0 +1,144 @@ +{ + "networkCallRecords" : [ { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "49b0720e-bc1f-4b75-a00f-e4f71e7e1dd0", + "Content-Type" : "application/json" + }, + "Response" : { + "x-envoy-upstream-service-time" : "67", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "96be5eec-5443-4f29-9f51-8e2fe4bf4bdb", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "Date" : "Thu, 22 Oct 2020 04:44:19 GMT", + "Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/custom/models/9db3a709-548b-4ebf-9eeb-7f417760a3e6" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/9db3a709-548b-4ebf-9eeb-7f417760a3e6?includeKeys=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "d3a4023f-af18-47eb-9f1d-a9334885177c" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-envoy-upstream-service-time" : "97", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "2ffefcab-5b96-4d9a-83be-69ae9a4dbaa6", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "{\"modelInfo\":{\"modelId\":\"9db3a709-548b-4ebf-9eeb-7f417760a3e6\",\"attributes\":{\"isComposed\":false},\"status\":\"ready\",\"createdDateTime\":\"2020-10-22T04:44:19Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:44:22Z\"},\"trainResult\":{\"averageModelAccuracy\":1.0,\"trainingDocuments\":[{\"documentName\":\"CCAuth-1.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-2.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-3.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-4.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-5.pdf\",\"pages\":1,\"status\":\"succeeded\"}],\"fields\":[{\"fieldName\":\"AMEX_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"MASTERCARD_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"VISA_SELECTION_MARK\",\"accuracy\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:44:24 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/9db3a709-548b-4ebf-9eeb-7f417760a3e6?includeKeys=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "63cf6efd-bfa5-4ae1-ba1a-b5b0b42e1c2e" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-envoy-upstream-service-time" : "18", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "15e4ddcd-f123-4361-a849-ccb15375ea89", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "{\"modelInfo\":{\"modelId\":\"9db3a709-548b-4ebf-9eeb-7f417760a3e6\",\"attributes\":{\"isComposed\":false},\"status\":\"ready\",\"createdDateTime\":\"2020-10-22T04:44:19Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:44:22Z\"},\"trainResult\":{\"averageModelAccuracy\":1.0,\"trainingDocuments\":[{\"documentName\":\"CCAuth-1.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-2.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-3.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-4.pdf\",\"pages\":1,\"status\":\"succeeded\"},{\"documentName\":\"CCAuth-5.pdf\",\"pages\":1,\"status\":\"succeeded\"}],\"fields\":[{\"fieldName\":\"AMEX_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"MASTERCARD_SELECTION_MARK\",\"accuracy\":1.0},{\"fieldName\":\"VISA_SELECTION_MARK\",\"accuracy\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:44:24 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "POST", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/9db3a709-548b-4ebf-9eeb-7f417760a3e6/analyze?includeTextDetails=true", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "4804772a-3ddc-428d-8ee9-979705b38ca6", + "Content-Type" : "application/json" + }, + "Response" : { + "x-envoy-upstream-service-time" : "80", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "4e070250-f278-4fbf-b712-4c7741062bdb", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "Operation-Location" : "https://shafangfr.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1/custom/models/9db3a709-548b-4ebf-9eeb-7f417760a3e6/analyzeresults/da9b1607-9f2c-4586-bc69-4542df4301df", + "Date" : "Thu, 22 Oct 2020 04:44:24 GMT" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/9db3a709-548b-4ebf-9eeb-7f417760a3e6/analyzeResults/da9b1607-9f2c-4586-bc69-4542df4301df", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "5533c7d9-c03b-4e78-8a34-ef5075590eed" + }, + "Response" : { + "x-envoy-upstream-service-time" : "44", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "12b0413e-a4b5-452f-a83c-0038177c746b", + "retry-after" : "0", + "Content-Length" : "109", + "StatusCode" : "200", + "Body" : "{\"status\":\"notStarted\",\"createdDateTime\":\"2020-10-22T04:44:25Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:44:28Z\"}", + "Date" : "Thu, 22 Oct 2020 04:44:29 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/9db3a709-548b-4ebf-9eeb-7f417760a3e6/analyzeResults/da9b1607-9f2c-4586-bc69-4542df4301df", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "16f59883-f66b-44ff-89fe-02834ba5cd4a" + }, + "Response" : { + "x-envoy-upstream-service-time" : "149", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "f5c08164-1583-46b5-9cd4-0d1b24c47d1c", + "retry-after" : "0", + "Content-Length" : "35389", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:44:25Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:44:35Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.737,4.386,0.737,4.386,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.576,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1,3.3832,1.1],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1,3.6851,1.1],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1,4.0571,1.1],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1,4.3323,1.1],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.756,1.0062,4.756,1.1,4.5886,1.1],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.856,2.2182,4.0615,2.2182,4.0615,2.333,3.856,2.333],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.333,4.1098,2.333],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.753,2.2182,5.2052,2.2182,5.2052,2.333,4.753,2.333],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.256,2.2185,6.0557,2.2185,6.0557,2.3325,5.256,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.16,3.5151,1.5019,3.5151,1.5019,3.6168,1.16,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.55,3.5209,1.6753,3.5209,1.6753,3.6168,1.55,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.539,3.0909,3.539,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.539,4.3377,3.539,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.539,4.6247,3.539,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.501,3.5138,5.5751,3.5138,5.5751,3.615,5.501,3.615],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.539,5.8539,3.539,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.539,6.6562,3.539,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.539,6.994,3.539,6.994,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.036,3.5128,7.4009,3.5128,7.4009,3.6438,7.036,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.373,3.6789,7.373,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.364,3.6792,3.6047,3.6792,3.6047,3.7819,3.364,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.373,3.6801,7.373,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.222,3.8468,1.5826,3.8468,1.5826,3.9486,1.222,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.144,3.8456,5.144,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.975,4.2094,5.975,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.807,4.3655,2.807,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.068,3.5656,5.068],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.067,3.5656,5.067],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.068,4.3295,5.068],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.034,5.0848,5.034],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.034,5.0848,5.034],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.034,5.6202,5.034],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.034,5.8088,5.034],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.495,5.4285,1.495,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.502,5.7604,3.2429,5.7604,3.2429,5.8923,2.502,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.502,5.7621,2.7903,5.7621,2.7903,5.8648,2.502,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.784,7.5307,5.784],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.785,7.8166,5.785],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.955,5.2262,5.955],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.982,5.5744,5.982],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.417,5.8562,6.417,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.809,5.8181,7.809,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.809,5.8181,7.809,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.298,6.0376,1.8846,6.0376,1.8846,6.1393,1.298,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.357,6.2792,1.357,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.645,6.7385,6.645],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.012,4.0467,8.012],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.01,5.0592,8.01],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.012,5.2259,8.012],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.012,5.4691,8.012],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.012,6.0082,8.012],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.119,8.0771,1.4992,8.0771,1.4992,8.1636,1.119,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.94,8.0771,1.94,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.975,8.0771,2.2103,8.0771,2.2103,8.1895,1.975,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.26,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.519,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.97},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.66,8.5205,6.1697,8.5205,6.1697,8.5281,5.66,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.727,1.7087,8.727],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.168,8.6246,2.485,8.6246,2.485,8.7284,2.168,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.727,3.2268,8.727],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.592,8.63,3.6791,8.63,3.6791,8.7056,3.592,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.727,3.7147,8.727],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.323,4.3584,9.323,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.438,1.9774,9.438],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.695,9.323,4.3584,9.323,4.3584,9.4677,2.695,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.775,3.996,9.775,3.996,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.79,4.1168,9.79,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.479,9.7741,4.479,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.99,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.296,1.0459,10.296,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0,0,11.0],\"confidence\":0.69,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.539,10.7248,0.539,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}],\"documentResults\":[{\"docType\":\"custom:9db3a709-548b-4ebf-9eeb-7f417760a3e6\",\"modelId\":\"9db3a709-548b-4ebf-9eeb-7f417760a3e6\",\"pageRange\":[1,1],\"fields\":{\"MASTERCARD_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[3.07,5.44,3.25,5.44,3.25,5.61,3.07,5.61],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/0\"]},\"AMEX_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"selected\",\"page\":1,\"boundingBox\":[2.285,5.42,2.465,5.42,2.465,5.595,2.285,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/2\"]},\"VISA_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[1.605,5.425,1.775,5.425,1.775,5.595,1.605,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/1\"]}},\"docTypeConfidence\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:44:34 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.cognitiveservices.azure.com/formrecognizer/v2.1-preview.1//custom/models/9db3a709-548b-4ebf-9eeb-7f417760a3e6/analyzeResults/da9b1607-9f2c-4586-bc69-4542df4301df", + "Headers" : { + "User-Agent" : "azsdk-java-azure-ai-formrecognizer/3.1.0-beta.1 (11.0.8; Windows 10; 10.0)", + "x-ms-client-request-id" : "d2788de8-0d91-445c-97bc-ac3df8b14907" + }, + "Response" : { + "x-envoy-upstream-service-time" : "36", + "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload", + "x-content-type-options" : "nosniff", + "apim-request-id" : "a99fda6d-6305-4984-a196-4f0b641b5382", + "retry-after" : "0", + "Content-Length" : "35389", + "StatusCode" : "200", + "Body" : "{\"status\":\"succeeded\",\"createdDateTime\":\"2020-10-22T04:44:25Z\",\"lastUpdatedDateTime\":\"2020-10-22T04:44:35Z\",\"analyzeResult\":{\"version\":\"2.1.0\",\"readResults\":[{\"page\":1,\"angle\":0,\"width\":8.5,\"height\":11,\"unit\":\"inch\",\"lines\":[{\"boundingBox\":[3.2791,0.7167,5.0584,0.7167,5.0584,0.8109,3.2791,0.8109],\"text\":\"STATE OF CALIFORNIA: CONTOSO\",\"words\":[{\"boundingBox\":[3.2791,0.7373,3.5799,0.7373,3.5799,0.8109,3.2791,0.8109],\"text\":\"STATE\",\"confidence\":1},{\"boundingBox\":[3.6193,0.7373,3.7481,0.7373,3.7481,0.8109,3.6193,0.8109],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[3.7831,0.737,4.386,0.737,4.386,0.8102,3.7831,0.8102],\"text\":\"CALIFORNIA:\",\"confidence\":1},{\"boundingBox\":[4.4383,0.7167,5.0584,0.7167,5.0584,0.8105,4.4383,0.8105],\"text\":\"CONTOSO\",\"confidence\":1}]},{\"boundingBox\":[0.5367,0.7,2.3833,0.7067,2.38,1.2967,0.5367,1.2933],\"text\":\"Contoso\",\"words\":[{\"boundingBox\":[0.576,0.7124,2.3577,0.8224,2.3498,1.1995,0.6019,1.2967],\"text\":\"Contoso\",\"confidence\":0.973}]},{\"boundingBox\":[3.4183,0.8618,4.9237,0.8618,4.9237,0.9561,3.4183,0.9561],\"text\":\"BUREAU OF INSURANCE\",\"words\":[{\"boundingBox\":[3.4183,0.8641,3.9344,0.8641,3.9344,0.9561,3.4183,0.9561],\"text\":\"BUREAU\",\"confidence\":1},{\"boundingBox\":[3.9836,0.8641,4.1487,0.8641,4.1487,0.9561,3.9836,0.9561],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1947,0.8618,4.9237,0.8618,4.9237,0.9561,4.1947,0.9561],\"text\":\"INSURANCE\",\"confidence\":1}]},{\"boundingBox\":[3.1443,1.0062,5.2024,1.0062,5.2024,1.1001,3.1443,1.1001],\"text\":\"124 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.1443,1.0073,3.333,1.0073,3.333,1.0986,3.1443,1.0986],\"text\":\"124\",\"confidence\":1},{\"boundingBox\":[3.3832,1.0077,3.6359,1.0077,3.6359,1.1,3.3832,1.1],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[3.6851,1.0062,4.0117,1.0062,4.0117,1.1,3.6851,1.1],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.0571,1.0077,4.2928,1.0077,4.2928,1.1,4.0571,1.1],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[4.3323,1.0077,4.5428,1.0077,4.5428,1.1,4.3323,1.1],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[4.5886,1.0062,4.756,1.0062,4.756,1.1,4.5886,1.1],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[4.7959,1.0073,5.2024,1.0073,5.2024,1.1001,4.7959,1.1001],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"words\":[{\"boundingBox\":[3.7689,1.1509,4.5703,1.1509,4.5703,1.2694,3.7689,1.2694],\"text\":\"(650)768-2322\",\"confidence\":1}]},{\"boundingBox\":[2.4417,2.2182,6.0557,2.2182,6.0557,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION OF CREDIT CARD PAYMENT\",\"words\":[{\"boundingBox\":[2.4417,2.2182,3.8058,2.2182,3.8058,2.333,2.4417,2.333],\"text\":\"AUTHORIZATION\",\"confidence\":1},{\"boundingBox\":[3.856,2.2182,4.0615,2.2182,4.0615,2.333,3.856,2.333],\"text\":\"OF\",\"confidence\":1},{\"boundingBox\":[4.1098,2.2182,4.7034,2.2182,4.7034,2.333,4.1098,2.333],\"text\":\"CREDIT\",\"confidence\":1},{\"boundingBox\":[4.753,2.2182,5.2052,2.2182,5.2052,2.333,4.753,2.333],\"text\":\"CARD\",\"confidence\":1},{\"boundingBox\":[5.256,2.2185,6.0557,2.2185,6.0557,2.3325,5.256,2.3325],\"text\":\"PAYMENT\",\"confidence\":1}]},{\"boundingBox\":[3.3533,3.0267,5.1867,3.0267,5.1867,3.2267,3.3533,3.23],\"text\":\"CONTOSO BANK\",\"words\":[{\"boundingBox\":[3.3563,3.0304,4.5105,3.0286,4.5106,3.2286,3.3624,3.2333],\"text\":\"CONTOSO\",\"confidence\":0.985},{\"boundingBox\":[4.5508,3.0286,5.1816,3.0301,5.1782,3.2286,4.5507,3.2286],\"text\":\"BANK\",\"confidence\":0.987}]},{\"boundingBox\":[0.8106,3.5128,7.4009,3.5128,7.4009,3.6446,0.8106,3.6446],\"text\":\"Fees owed to this Department may be paid by the use of a credit card. If you wish to pay your fee(s)\",\"words\":[{\"boundingBox\":[0.8106,3.5151,1.1118,3.5151,1.1118,3.6168,0.8106,3.6168],\"text\":\"Fees\",\"confidence\":1},{\"boundingBox\":[1.16,3.5151,1.5019,3.5151,1.5019,3.6168,1.16,3.6168],\"text\":\"owed\",\"confidence\":1},{\"boundingBox\":[1.55,3.5209,1.6753,3.5209,1.6753,3.6168,1.55,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[1.7196,3.5141,1.9602,3.5141,1.9602,3.6168,1.7196,3.6168],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[2.0143,3.5151,2.7723,3.5151,2.7723,3.6437,2.0143,3.6437],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[2.8228,3.539,3.0909,3.539,3.0909,3.6446,2.8228,3.6446],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[3.1377,3.5151,3.2877,3.5151,3.2877,3.6168,3.1377,3.6168],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[3.3395,3.5141,3.6084,3.5141,3.6084,3.6437,3.3395,3.6437],\"text\":\"paid\",\"confidence\":1},{\"boundingBox\":[3.6635,3.5151,3.8159,3.5151,3.8159,3.6446,3.6635,3.6446],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[3.8565,3.5151,4.0598,3.5151,4.0598,3.6168,3.8565,3.6168],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[4.1112,3.539,4.3377,3.539,4.3377,3.6168,4.1112,3.6168],\"text\":\"use\",\"confidence\":1},{\"boundingBox\":[4.3863,3.5138,4.5109,3.5138,4.5109,3.6168,4.3863,3.6168],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.5554,3.539,4.6247,3.539,4.6247,3.6168,4.5554,3.6168],\"text\":\"a\",\"confidence\":1},{\"boundingBox\":[4.6718,3.5141,5.0411,3.5141,5.0411,3.6168,4.6718,3.6168],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[5.0875,3.5151,5.4065,3.5151,5.4065,3.6168,5.0875,3.6168],\"text\":\"card.\",\"confidence\":1},{\"boundingBox\":[5.501,3.5138,5.5751,3.5138,5.5751,3.615,5.501,3.615],\"text\":\"If\",\"confidence\":1},{\"boundingBox\":[5.6177,3.539,5.8539,3.539,5.8539,3.6446,5.6177,3.6446],\"text\":\"you\",\"confidence\":1},{\"boundingBox\":[5.9011,3.5141,6.2016,3.5141,6.2016,3.6168,5.9011,3.6168],\"text\":\"wish\",\"confidence\":1},{\"boundingBox\":[6.2504,3.5209,6.3758,3.5209,6.3758,3.6168,6.2504,3.6168],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[6.4273,3.539,6.6562,3.539,6.6562,3.6446,6.4273,3.6446],\"text\":\"pay\",\"confidence\":1},{\"boundingBox\":[6.6976,3.539,6.994,3.539,6.994,3.6446,6.6976,3.6446],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[7.036,3.5128,7.4009,3.5128,7.4009,3.6438,7.036,3.6438],\"text\":\"fee(s)\",\"confidence\":1}]},{\"boundingBox\":[0.8014,3.6789,7.373,3.6789,7.373,3.8101,0.8014,3.8101],\"text\":\"with your credit card, please complete this form and send it with your paperwork. Payment through\",\"words\":[{\"boundingBox\":[0.8014,3.6792,1.0698,3.6792,1.0698,3.7807,0.8014,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[1.1194,3.7041,1.4149,3.7041,1.4149,3.8097,1.1194,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[1.4602,3.6792,1.8317,3.6792,1.8317,3.7819,1.4602,3.7819],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.8781,3.6801,2.1969,3.6801,2.1969,3.8033,1.8781,3.8033],\"text\":\"card,\",\"confidence\":1},{\"boundingBox\":[2.2527,3.6801,2.6721,3.6801,2.6721,3.8087,2.2527,3.8087],\"text\":\"please\",\"confidence\":1},{\"boundingBox\":[2.7191,3.6801,3.3204,3.6801,3.3204,3.8087,2.7191,3.8087],\"text\":\"complete\",\"confidence\":1},{\"boundingBox\":[3.364,3.6792,3.6047,3.6792,3.6047,3.7819,3.364,3.7819],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.6496,3.6789,3.9485,3.6789,3.9485,3.7819,3.6496,3.7819],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[3.9997,3.6801,4.2346,3.6801,4.2346,3.7819,3.9997,3.7819],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.2855,3.6801,4.5976,3.6801,4.5976,3.7819,4.2855,3.7819],\"text\":\"send\",\"confidence\":1},{\"boundingBox\":[4.6539,3.6792,4.7259,3.6792,4.7259,3.7807,4.6539,3.7807],\"text\":\"it\",\"confidence\":1},{\"boundingBox\":[4.7682,3.6792,5.0366,3.6792,5.0366,3.7807,4.7682,3.7807],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[5.0862,3.7041,5.3817,3.7041,5.3817,3.8097,5.0862,3.8097],\"text\":\"your\",\"confidence\":1},{\"boundingBox\":[5.4308,3.6801,6.1548,3.6801,6.1548,3.8087,5.4308,3.8087],\"text\":\"paperwork.\",\"confidence\":1},{\"boundingBox\":[6.2509,3.6801,6.8158,3.6801,6.8158,3.8097,6.2509,3.8097],\"text\":\"Payment\",\"confidence\":1},{\"boundingBox\":[6.8588,3.6801,7.373,3.6801,7.373,3.8101,6.8588,3.8101],\"text\":\"through\",\"confidence\":1}]},{\"boundingBox\":[0.8047,3.8456,7.0271,3.8456,7.0271,3.9764,0.8047,3.9764],\"text\":\"credit cards will not be processed without this authorization form. Please print or type clearly.\",\"words\":[{\"boundingBox\":[0.8047,3.8459,1.1755,3.8459,1.1755,3.9486,0.8047,3.9486],\"text\":\"credit\",\"confidence\":1},{\"boundingBox\":[1.222,3.8468,1.5826,3.8468,1.5826,3.9486,1.222,3.9486],\"text\":\"cards\",\"confidence\":1},{\"boundingBox\":[1.6266,3.8459,1.8414,3.8459,1.8414,3.9468,1.6266,3.9468],\"text\":\"will\",\"confidence\":1},{\"boundingBox\":[1.8984,3.8527,2.1015,3.8527,2.1015,3.9486,1.8984,3.9486],\"text\":\"not\",\"confidence\":1},{\"boundingBox\":[2.1517,3.8468,2.3017,3.8468,2.3017,3.9486,2.1517,3.9486],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.3526,3.8468,3.0301,3.8468,3.0301,3.9754,2.3526,3.9754],\"text\":\"processed\",\"confidence\":1},{\"boundingBox\":[3.0757,3.8459,3.5679,3.8459,3.5679,3.9486,3.0757,3.9486],\"text\":\"without\",\"confidence\":1},{\"boundingBox\":[3.6109,3.8459,3.8518,3.8459,3.8518,3.9486,3.6109,3.9486],\"text\":\"this\",\"confidence\":1},{\"boundingBox\":[3.8985,3.8459,4.7585,3.8459,4.7585,3.9486,3.8985,3.9486],\"text\":\"authorization\",\"confidence\":1},{\"boundingBox\":[4.8073,3.8456,5.144,3.8456,5.144,3.9486,4.8073,3.9486],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.2402,3.8468,5.6667,3.8468,5.6667,3.9486,5.2402,3.9486],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[5.7176,3.8459,6.0148,3.8459,6.0148,3.9754,5.7176,3.9754],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[6.0612,3.8708,6.1934,3.8708,6.1934,3.9486,6.0612,3.9486],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[6.2353,3.8527,6.5149,3.8527,6.5149,3.9764,6.2353,3.9764],\"text\":\"type\",\"confidence\":1},{\"boundingBox\":[6.5627,3.8468,7.0271,3.8468,7.0271,3.9764,6.5627,3.9764],\"text\":\"clearly.\",\"confidence\":1}]},{\"boundingBox\":[0.8479,4.1881,7.0286,4.1881,7.0286,4.3316,0.8479,4.3316],\"text\":\"Name (company/individual for whom payment is being made) (Please Include License # and SSN/FEIN):\",\"words\":[{\"boundingBox\":[0.8479,4.2002,1.2134,4.2002,1.2134,4.3019,0.8479,4.3019],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.2654,4.1881,2.4681,4.1881,2.4681,4.3316,1.2654,4.3316],\"text\":\"(company/individual\",\"confidence\":1},{\"boundingBox\":[2.5128,4.2091,2.6764,4.2091,2.6764,4.3016,2.5128,4.3016],\"text\":\"for\",\"confidence\":1},{\"boundingBox\":[2.7128,4.2102,3.0674,4.2102,3.0674,4.3016,2.7128,4.3016],\"text\":\"whom\",\"confidence\":1},{\"boundingBox\":[3.1169,4.2155,3.6202,4.2155,3.6202,4.3266,3.1169,4.3266],\"text\":\"payment\",\"confidence\":1},{\"boundingBox\":[3.6667,4.2094,3.7576,4.2094,3.7576,4.3016,3.6667,4.3016],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[3.8047,4.2094,4.1234,4.2094,4.1234,4.327,3.8047,4.327],\"text\":\"being\",\"confidence\":1},{\"boundingBox\":[4.1727,4.2083,4.5281,4.2083,4.5281,4.3259,4.1727,4.3259],\"text\":\"made)\",\"confidence\":1},{\"boundingBox\":[4.5718,4.2083,5.0014,4.2083,5.0014,4.3259,4.5718,4.3259],\"text\":\"(Please\",\"confidence\":1},{\"boundingBox\":[5.0484,4.2102,5.4746,4.2102,5.4746,4.3016,5.0484,4.3016],\"text\":\"Include\",\"confidence\":1},{\"boundingBox\":[5.5225,4.2094,5.975,4.2094,5.975,4.3016,5.5225,4.3016],\"text\":\"License\",\"confidence\":1},{\"boundingBox\":[6.0157,4.2128,6.0807,4.2128,6.0807,4.3,6.0157,4.3],\"text\":\"#\",\"confidence\":1},{\"boundingBox\":[6.1214,4.2102,6.3327,4.2102,6.3327,4.3016,6.1214,4.3016],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[6.3805,4.2079,7.0286,4.2079,7.0286,4.3259,6.3805,4.3259],\"text\":\"SSN/FEIN):\",\"confidence\":1}]},{\"boundingBox\":[0.8942,4.3643,3.6366,4.3643,3.6366,4.4867,0.8942,4.4867],\"text\":\"Contoso Insurance 54353T7A, 36-1222985\",\"words\":[{\"boundingBox\":[0.8942,4.3643,1.4017,4.3643,1.4017,4.4686,0.8942,4.4686],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[1.4589,4.3659,2.0531,4.3659,2.0531,4.4686,1.4589,4.4686],\"text\":\"Insurance\",\"confidence\":1},{\"boundingBox\":[2.1427,4.3655,2.807,4.3655,2.807,4.4867,2.1427,4.4867],\"text\":\"54353T7A,\",\"confidence\":1},{\"boundingBox\":[2.9033,4.3655,3.6366,4.3655,3.6366,4.4688,2.9033,4.4688],\"text\":\"36-1222985\",\"confidence\":1}]},{\"boundingBox\":[3.5656,4.9372,4.9313,4.9372,4.9313,5.068,3.5656,5.068],\"text\":\"Purpose of Payment:\",\"words\":[{\"boundingBox\":[3.5656,4.9384,4.1075,4.9384,4.1075,5.067,3.5656,5.067],\"text\":\"Purpose\",\"confidence\":1},{\"boundingBox\":[4.1544,4.9372,4.2781,4.9372,4.2781,5.0401,4.1544,5.0401],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[4.3295,4.9384,4.9313,4.9384,4.9313,5.068,4.3295,5.068],\"text\":\"Payment:\",\"confidence\":1}]},{\"boundingBox\":[5.0848,4.9313,6.3102,4.9313,6.3102,5.034,5.0848,5.034],\"text\":\"Balance on Account\",\"words\":[{\"boundingBox\":[5.0848,4.9313,5.5713,4.9313,5.5713,5.034,5.0848,5.034],\"text\":\"Balance\",\"confidence\":1},{\"boundingBox\":[5.6202,4.9576,5.7607,4.9576,5.7607,5.034,5.6202,5.034],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[5.8088,4.9313,6.3102,4.9313,6.3102,5.034,5.8088,5.034],\"text\":\"Account\",\"confidence\":1}]},{\"boundingBox\":[0.8258,5.4268,2.1074,5.4268,2.1074,5.5929,0.8258,5.5929],\"text\":\"Card Type: ❑Visa\",\"words\":[{\"boundingBox\":[0.8258,5.4268,1.1104,5.4268,1.1104,5.5312,0.8258,5.5312],\"text\":\"Card\",\"confidence\":1},{\"boundingBox\":[1.1624,5.4285,1.495,5.4285,1.495,5.5588,1.1624,5.5588],\"text\":\"Type:\",\"confidence\":1},{\"boundingBox\":[1.6159,5.4302,2.1074,5.4302,2.1074,5.5929,1.6159,5.5929],\"text\":\"❑Visa\",\"confidence\":1}]},{\"boundingBox\":[2.2989,5.4295,2.8924,5.4295,2.8924,5.5922,2.2989,5.5922],\"text\":\"❑x AMEX\",\"words\":[{\"boundingBox\":[2.2989,5.4295,2.4591,5.4295,2.4591,5.5922,2.2989,5.5922],\"text\":\"❑x\",\"confidence\":1},{\"boundingBox\":[2.4996,5.4443,2.8924,5.4443,2.8924,5.5453,2.4996,5.5453],\"text\":\"AMEX\",\"confidence\":1}]},{\"boundingBox\":[3.0846,5.4481,4.0327,5.4481,4.0327,5.6108,3.0846,5.6108],\"text\":\"❑Master Card\",\"words\":[{\"boundingBox\":[3.0846,5.4481,3.7051,5.4481,3.7051,5.6108,3.0846,5.6108],\"text\":\"❑Master\",\"confidence\":1},{\"boundingBox\":[3.7487,5.4569,4.0327,5.4569,4.0327,5.5611,3.7487,5.5611],\"text\":\"Card\",\"confidence\":1}]},{\"boundingBox\":[0.8954,5.7074,2.2511,5.7074,2.2511,5.8125,0.8954,5.8125],\"text\":\"Name of Cardholder:\",\"words\":[{\"boundingBox\":[0.8954,5.7101,1.2609,5.7101,1.2609,5.8118,0.8954,5.8118],\"text\":\"Name\",\"confidence\":1},{\"boundingBox\":[1.3079,5.7088,1.4324,5.7088,1.4324,5.8118,1.3079,5.8118],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[1.4782,5.7074,2.2511,5.7074,2.2511,5.8125,1.4782,5.8125],\"text\":\"Cardholder:\",\"confidence\":1}]},{\"boundingBox\":[2.502,5.7604,3.2429,5.7604,3.2429,5.8923,2.502,5.8923],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[2.502,5.7621,2.7903,5.7621,2.7903,5.8648,2.502,5.8648],\"text\":\"John\",\"confidence\":1},{\"boundingBox\":[2.8449,5.7604,3.2429,5.7604,3.2429,5.8923,2.8449,5.8923],\"text\":\"Singer\",\"confidence\":1}]},{\"boundingBox\":[5.2305,5.6912,8.0337,5.6912,8.0337,5.8091,5.2305,5.8091],\"text\":\"Contact persons phone #, if questions with this\",\"words\":[{\"boundingBox\":[5.2305,5.6912,5.6874,5.6912,5.6874,5.7856,5.2305,5.7856],\"text\":\"Contact\",\"confidence\":1},{\"boundingBox\":[5.7333,5.7151,6.2073,5.7151,6.2073,5.8091,5.7333,5.8091],\"text\":\"persons\",\"confidence\":1},{\"boundingBox\":[6.2544,5.6936,6.6183,5.6936,6.6183,5.8091,6.2544,5.8091],\"text\":\"phone\",\"confidence\":1},{\"boundingBox\":[6.6587,5.6961,6.7524,5.6961,6.7524,5.8042,6.6587,5.8042],\"text\":\"#,\",\"confidence\":1},{\"boundingBox\":[6.8042,5.6925,6.8703,5.6925,6.8703,5.7833,6.8042,5.7833],\"text\":\"if\",\"confidence\":1},{\"boundingBox\":[6.9099,5.6927,7.4918,5.6927,7.4918,5.8091,6.9099,5.8091],\"text\":\"questions\",\"confidence\":1},{\"boundingBox\":[7.5307,5.6927,7.7719,5.6927,7.7719,5.784,7.5307,5.784],\"text\":\"with\",\"confidence\":1},{\"boundingBox\":[7.8166,5.6927,8.0337,5.6927,8.0337,5.785,7.8166,5.785],\"text\":\"this\",\"confidence\":1}]},{\"boundingBox\":[5.2262,5.8416,6.5139,5.8416,6.5139,5.9847,5.2262,5.9847],\"text\":\"form. Telephone #: (\",\"words\":[{\"boundingBox\":[5.2262,5.8625,5.5295,5.8625,5.5295,5.955,5.2262,5.955],\"text\":\"form.\",\"confidence\":1},{\"boundingBox\":[5.5744,5.8534,6.2637,5.8534,6.2637,5.982,5.5744,5.982],\"text\":\"Telephone\",\"confidence\":1},{\"boundingBox\":[6.3085,5.8562,6.417,5.8562,6.417,5.9533,6.3085,5.9533],\"text\":\"#:\",\"confidence\":1},{\"boundingBox\":[6.4787,5.8416,6.5139,5.8416,6.5139,5.9847,6.4787,5.9847],\"text\":\"(\",\"confidence\":1}]},{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"words\":[{\"boundingBox\":[6.6237,5.8542,6.87,5.8542,6.87,5.9672,6.6237,5.9672],\"text\":\"425\",\"confidence\":1}]},{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"words\":[{\"boundingBox\":[6.9056,5.8416,6.9409,5.8416,6.9409,5.9847,6.9056,5.9847],\"text\":\")\",\"confidence\":1}]},{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"words\":[{\"boundingBox\":[7.3783,5.9042,7.4157,5.9042,7.4157,5.918,7.3783,5.918],\"text\":\"-\",\"confidence\":1}]},{\"boundingBox\":[7.1288,5.8181,7.809,5.8181,7.809,5.9672,7.1288,5.9672],\"text\":\"779 3479\",\"words\":[{\"boundingBox\":[7.1288,5.8542,7.3693,5.8542,7.3693,5.9672,7.1288,5.9672],\"text\":\"779\",\"confidence\":1},{\"boundingBox\":[7.4829,5.8181,7.809,5.8181,7.809,5.9313,7.4829,5.9313],\"text\":\"3479\",\"confidence\":1}]},{\"boundingBox\":[0.8964,6.0366,1.8846,6.0366,1.8846,6.1393,0.8964,6.1393],\"text\":\"Email Address:\",\"words\":[{\"boundingBox\":[0.8964,6.0366,1.2473,6.0366,1.2473,6.1393,0.8964,6.1393],\"text\":\"Email\",\"confidence\":1},{\"boundingBox\":[1.298,6.0376,1.8846,6.0376,1.8846,6.1393,1.298,6.1393],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"words\":[{\"boundingBox\":[1.9261,6.0432,3.4556,6.0432,3.4556,6.1753,1.9261,6.1753],\"text\":\"johnsinger@hotmail.com\",\"confidence\":1}]},{\"boundingBox\":[0.8954,6.2792,1.9961,6.2792,1.9961,6.4101,0.8954,6.4101],\"text\":\"Mailing Address:\",\"words\":[{\"boundingBox\":[0.8954,6.2792,1.357,6.2792,1.357,6.4101,0.8954,6.4101],\"text\":\"Mailing\",\"confidence\":1},{\"boundingBox\":[1.4062,6.2801,1.9961,6.2801,1.9961,6.3819,1.4062,6.3819],\"text\":\"Address:\",\"confidence\":1}]},{\"boundingBox\":[2.1027,6.3142,3.0803,6.3142,3.0803,6.4186,2.1027,6.4186],\"text\":\"472 SE 74th ST\",\"words\":[{\"boundingBox\":[2.1027,6.3155,2.3256,6.3155,2.3256,6.4171,2.1027,6.4171],\"text\":\"472\",\"confidence\":1},{\"boundingBox\":[2.3779,6.3142,2.5497,6.3142,2.5497,6.4186,2.3779,6.4186],\"text\":\"SE\",\"confidence\":1},{\"boundingBox\":[2.6024,6.3159,2.8571,6.3159,2.8571,6.4179,2.6024,6.4179],\"text\":\"74th\",\"confidence\":1},{\"boundingBox\":[2.9115,6.3142,3.0803,6.3142,3.0803,6.4186,2.9115,6.4186],\"text\":\"ST\",\"confidence\":1}]},{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"words\":[{\"boundingBox\":[0.892,6.5399,1.1815,6.5399,1.1815,6.6721,0.892,6.6721],\"text\":\"City:\",\"confidence\":1}]},{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"words\":[{\"boundingBox\":[1.3947,6.5747,2.01,6.5747,2.01,6.6774,1.3947,6.6774],\"text\":\"Lakewood\",\"confidence\":1}]},{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"words\":[{\"boundingBox\":[4.2363,6.5399,4.6048,6.5399,4.6048,6.645,4.2363,6.645],\"text\":\"State:\",\"confidence\":1}]},{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"words\":[{\"boundingBox\":[4.7452,6.5506,4.9679,6.5506,4.9679,6.6518,4.7452,6.6518],\"text\":\"WA\",\"confidence\":1}]},{\"boundingBox\":[6.4885,6.5399,7.1134,6.5399,7.1134,6.6712,6.4885,6.6712],\"text\":\"Zip Code:\",\"words\":[{\"boundingBox\":[6.4885,6.5416,6.6893,6.5416,6.6893,6.6712,6.4885,6.6712],\"text\":\"Zip\",\"confidence\":1},{\"boundingBox\":[6.7385,6.5399,7.1134,6.5399,7.1134,6.645,6.7385,6.645],\"text\":\"Code:\",\"confidence\":1}]},{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"words\":[{\"boundingBox\":[7.2536,6.5442,7.6275,6.5442,7.6275,6.6473,7.2536,6.6473],\"text\":\"98712\",\"confidence\":1}]},{\"boundingBox\":[0.8033,6.9573,7.5868,6.9573,7.5868,7.1067,0.8033,7.1067],\"text\":\"I authorize Contoso Department of Professional and Financial Regulation, Bureau of Insurance\",\"words\":[{\"boundingBox\":[0.8033,6.9598,0.8617,6.9598,0.8617,7.0725,0.8033,7.0725],\"text\":\"I\",\"confidence\":1},{\"boundingBox\":[0.9107,6.9573,1.5801,6.9573,1.5801,7.0747,0.9107,7.0747],\"text\":\"authorize\",\"confidence\":1},{\"boundingBox\":[1.6314,6.958,2.2027,6.958,2.2027,7.0748,1.6314,7.0748],\"text\":\"Contoso\",\"confidence\":1},{\"boundingBox\":[2.2527,6.9598,3.1119,6.9598,3.1119,7.1065,2.2527,7.1065],\"text\":\"Department\",\"confidence\":1},{\"boundingBox\":[3.1579,6.9573,3.302,6.9573,3.302,7.0747,3.1579,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[3.3372,6.9573,4.2012,6.9573,4.2012,7.0747,3.3372,7.0747],\"text\":\"Professional\",\"confidence\":1},{\"boundingBox\":[4.2509,6.9598,4.5118,6.9598,4.5118,7.0747,4.2509,7.0747],\"text\":\"and\",\"confidence\":1},{\"boundingBox\":[4.5598,6.9573,5.2201,6.9573,5.2201,7.0747,4.5598,7.0747],\"text\":\"Financial\",\"confidence\":1},{\"boundingBox\":[5.2699,6.9573,6.0806,6.9573,6.0806,7.1067,5.2699,7.1067],\"text\":\"Regulation,\",\"confidence\":1},{\"boundingBox\":[6.1294,6.9598,6.6514,6.9598,6.6514,7.0747,6.1294,7.0747],\"text\":\"Bureau\",\"confidence\":1},{\"boundingBox\":[6.7004,6.9573,6.8444,6.9573,6.8444,7.0747,6.7004,7.0747],\"text\":\"of\",\"confidence\":1},{\"boundingBox\":[6.8801,6.9598,7.5868,6.9598,7.5868,7.0747,6.8801,7.0747],\"text\":\"Insurance\",\"confidence\":1}]},{\"boundingBox\":[0.8033,7.1495,2.1348,7.1495,2.1348,7.2983,0.8033,7.2983],\"text\":\"to charge my: Visa\",\"words\":[{\"boundingBox\":[0.8033,7.1592,0.9348,7.1592,0.9348,7.2663,0.8033,7.2663],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[0.9847,7.1515,1.4588,7.1515,1.4588,7.2983,0.9847,7.2983],\"text\":\"charge\",\"confidence\":1},{\"boundingBox\":[1.5062,7.1853,1.7675,7.1853,1.7675,7.2982,1.5062,7.2982],\"text\":\"my:\",\"confidence\":1},{\"boundingBox\":[1.8242,7.1495,2.1348,7.1495,2.1348,7.2665,1.8242,7.2665],\"text\":\"Visa\",\"confidence\":1}]},{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"words\":[{\"boundingBox\":[0.8996,7.8438,2.2164,7.8438,2.2164,7.9603,0.8996,7.9603],\"text\":\"4872876432425423\",\"confidence\":1}]},{\"boundingBox\":[3.3024,7.9046,4.3518,7.9046,4.3518,8.0411,3.3024,8.0411],\"text\":\"Expiration date:\",\"words\":[{\"boundingBox\":[3.3024,7.9046,4.0018,7.9046,4.0018,8.0411,3.3024,8.0411],\"text\":\"Expiration\",\"confidence\":1},{\"boundingBox\":[4.0467,7.9069,4.3518,7.9069,4.3518,8.012,4.0467,8.012],\"text\":\"date:\",\"confidence\":1}]},{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"words\":[{\"boundingBox\":[4.442,7.8916,4.5825,7.8916,4.5825,7.9982,4.442,7.9982],\"text\":\"09\",\"confidence\":1}]},{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"words\":[{\"boundingBox\":[4.6708,7.9069,4.7157,7.9069,4.7157,8.012,4.6708,8.012],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"words\":[{\"boundingBox\":[4.7708,7.8956,4.9015,7.8956,4.9015,8.0002,4.7708,8.0002],\"text\":\"21\",\"confidence\":1}]},{\"boundingBox\":[5.0592,7.8956,7.6702,7.8956,7.6702,8.0289,5.0592,8.0289],\"text\":\"in the amount of: $__________________\",\"words\":[{\"boundingBox\":[5.0592,7.9046,5.1817,7.9046,5.1817,8.01,5.0592,8.01],\"text\":\"in\",\"confidence\":1},{\"boundingBox\":[5.2259,7.9069,5.4239,7.9069,5.4239,8.012,5.2259,8.012],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[5.4691,7.9139,5.9657,7.9139,5.9657,8.012,5.4691,8.012],\"text\":\"amount\",\"confidence\":1},{\"boundingBox\":[6.0082,7.9046,6.1702,7.9046,6.1702,8.012,6.0082,8.012],\"text\":\"of:\",\"confidence\":1},{\"boundingBox\":[6.2258,7.8956,7.6702,7.8956,7.6702,8.0289,6.2258,8.0289],\"text\":\"$__________________\",\"confidence\":1}]},{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"words\":[{\"boundingBox\":[6.5828,7.8896,6.9948,7.8896,6.9948,7.9962,6.5828,7.9962],\"text\":\"263.00\",\"confidence\":1}]},{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"words\":[{\"boundingBox\":[0.8,8.0223,3.1333,8.0223,3.1333,8.0307,0.8,8.0307],\"text\":\"____________________________\",\"confidence\":1}]},{\"boundingBox\":[0.806,8.0771,2.6175,8.0771,2.6175,8.1896,0.806,8.1896],\"text\":\"(Card number – Please print clearly)\",\"words\":[{\"boundingBox\":[0.806,8.0771,1.0841,8.0771,1.0841,8.1845,0.806,8.1845],\"text\":\"(Card\",\"confidence\":1},{\"boundingBox\":[1.119,8.0771,1.4992,8.0771,1.4992,8.1636,1.119,8.1636],\"text\":\"number\",\"confidence\":1},{\"boundingBox\":[1.5308,8.1322,1.5933,8.1322,1.5933,8.1374,1.5308,8.1374],\"text\":\"–\",\"confidence\":1},{\"boundingBox\":[1.6253,8.0771,1.94,8.0771,1.94,8.1636,1.6253,8.1636],\"text\":\"Please\",\"confidence\":1},{\"boundingBox\":[1.975,8.0771,2.2103,8.0771,2.2103,8.1895,1.975,8.1895],\"text\":\"print\",\"confidence\":1},{\"boundingBox\":[2.2444,8.0771,2.6175,8.0771,2.6175,8.1896,2.2444,8.1896],\"text\":\"clearly)\",\"confidence\":1}]},{\"boundingBox\":[1.89,8.26,3.2367,8.27,3.2333,8.5567,1.89,8.5533],\"text\":\"John Singer\",\"words\":[{\"boundingBox\":[1.9698,8.2645,2.519,8.2845,2.5195,8.5409,1.9695,8.5567],\"text\":\"John\",\"confidence\":0.97},{\"boundingBox\":[2.5778,8.2865,3.2251,8.3065,3.2268,8.5309,2.5784,8.5396],\"text\":\"Singer\",\"confidence\":0.947}]},{\"boundingBox\":[0.8059,8.3968,6.1697,8.3968,6.1697,8.5421,0.8059,8.5421],\"text\":\"Signature: ___________________________________________ Date: ______\",\"words\":[{\"boundingBox\":[0.8059,8.3968,1.5333,8.3968,1.5333,8.5421,0.8059,8.5421],\"text\":\"Signature:\",\"confidence\":1},{\"boundingBox\":[1.5893,8.5205,5.2429,8.5205,5.2429,8.5281,1.5893,8.5281],\"text\":\"___________________________________________\",\"confidence\":1},{\"boundingBox\":[5.2557,8.3997,5.6041,8.3997,5.6041,8.5111,5.2557,8.5111],\"text\":\"Date:\",\"confidence\":1},{\"boundingBox\":[5.66,8.5205,6.1697,8.5205,6.1697,8.5281,5.66,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"words\":[{\"boundingBox\":[5.8155,8.3705,5.9721,8.3705,5.9721,8.4835,5.8155,8.4835],\"text\":\"08\",\"confidence\":1}]},{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.1674,8.3968,6.2149,8.3968,6.2149,8.5119,6.1674,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"words\":[{\"boundingBox\":[6.5359,8.3585,6.6943,8.3585,6.6943,8.4716,6.5359,8.4716],\"text\":\"23\",\"confidence\":1}]},{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"words\":[{\"boundingBox\":[6.7199,8.3968,6.7673,8.3968,6.7673,8.5119,6.7199,8.5119],\"text\":\"/\",\"confidence\":1}]},{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"words\":[{\"boundingBox\":[7.0358,8.3585,7.3644,8.3585,7.3644,8.4715,7.0358,8.4715],\"text\":\"2018\",\"confidence\":1}]},{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"words\":[{\"boundingBox\":[6.2125,8.5205,6.7221,8.5205,6.7221,8.5281,6.2125,8.5281],\"text\":\"______\",\"confidence\":1}]},{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"words\":[{\"boundingBox\":[6.7649,8.5205,7.4445,8.5205,7.4445,8.5281,6.7649,8.5281],\"text\":\"________\",\"confidence\":1}]},{\"boundingBox\":[1.7087,8.6229,4.1257,8.6229,4.1257,8.7284,1.7087,8.7284],\"text\":\"(must be signed by authorized person to validate)\",\"words\":[{\"boundingBox\":[1.7087,8.6229,1.9762,8.6229,1.9762,8.727,1.7087,8.727],\"text\":\"(must\",\"confidence\":1},{\"boundingBox\":[2.0158,8.6246,2.1283,8.6246,2.1283,8.7057,2.0158,8.7057],\"text\":\"be\",\"confidence\":1},{\"boundingBox\":[2.168,8.6246,2.485,8.6246,2.485,8.7284,2.168,8.7284],\"text\":\"signed\",\"confidence\":1},{\"boundingBox\":[2.5286,8.6246,2.6389,8.6246,2.6389,8.7278,2.5286,8.7278],\"text\":\"by\",\"confidence\":1},{\"boundingBox\":[2.6737,8.6246,3.1831,8.6246,3.1831,8.7057,2.6737,8.7057],\"text\":\"authorized\",\"confidence\":1},{\"boundingBox\":[3.2268,8.6445,3.5523,8.6445,3.5523,8.727,3.2268,8.727],\"text\":\"person\",\"confidence\":1},{\"boundingBox\":[3.592,8.63,3.6791,8.63,3.6791,8.7056,3.592,8.7056],\"text\":\"to\",\"confidence\":1},{\"boundingBox\":[3.7147,8.6229,4.1257,8.6229,4.1257,8.727,3.7147,8.727],\"text\":\"validate)\",\"confidence\":1}]},{\"boundingBox\":[0.8131,9.1368,6.7518,9.1368,6.7518,9.2816,0.8131,9.2816],\"text\":\"Form is available on our website: www.contoso.com/insurance You may fax the form to:\",\"words\":[{\"boundingBox\":[0.8131,9.1397,1.1463,9.1397,1.1463,9.2511,0.8131,9.2511],\"text\":\"Form\",\"confidence\":1},{\"boundingBox\":[1.2089,9.1397,1.3033,9.1397,1.3033,9.2513,1.2089,9.2513],\"text\":\"is\",\"confidence\":1},{\"boundingBox\":[1.3569,9.1397,1.9478,9.1397,1.9478,9.2513,1.3569,9.2513],\"text\":\"available\",\"confidence\":1},{\"boundingBox\":[2.0018,9.1671,2.1563,9.1671,2.1563,9.2511,2.0018,9.2511],\"text\":\"on\",\"confidence\":1},{\"boundingBox\":[2.2141,9.1671,2.4292,9.1671,2.4292,9.2513,2.2141,9.2513],\"text\":\"our\",\"confidence\":1},{\"boundingBox\":[2.4732,9.1397,3.0178,9.1397,3.0178,9.2513,2.4732,9.2513],\"text\":\"website:\",\"confidence\":1},{\"boundingBox\":[3.1183,9.1368,5.0528,9.1368,5.0528,9.2519,3.1183,9.2519],\"text\":\"www.contoso.com/insurance\",\"confidence\":1},{\"boundingBox\":[5.1037,9.1397,5.3628,9.1397,5.3628,9.2513,5.1037,9.2513],\"text\":\"You\",\"confidence\":1},{\"boundingBox\":[5.4255,9.1671,5.7022,9.1671,5.7022,9.2816,5.4255,9.2816],\"text\":\"may\",\"confidence\":1},{\"boundingBox\":[5.7486,9.1381,5.9485,9.1381,5.9485,9.2513,5.7486,9.2513],\"text\":\"fax\",\"confidence\":1},{\"boundingBox\":[5.9948,9.1397,6.1987,9.1397,6.1987,9.2513,5.9948,9.2513],\"text\":\"the\",\"confidence\":1},{\"boundingBox\":[6.2496,9.1381,6.5429,9.1381,6.5429,9.2511,6.2496,9.2511],\"text\":\"form\",\"confidence\":1},{\"boundingBox\":[6.5974,9.1471,6.7518,9.1471,6.7518,9.2511,6.5974,9.2511],\"text\":\"to:\",\"confidence\":1}]},{\"boundingBox\":[0.8058,9.323,4.3584,9.323,4.3584,9.4677,0.8058,9.4677],\"text\":\"650-768-2322 or e-mail to: insurance@contoso.com\",\"words\":[{\"boundingBox\":[0.8058,9.3245,1.7423,9.3245,1.7423,9.4376,0.8058,9.4376],\"text\":\"650-768-2322\",\"confidence\":1},{\"boundingBox\":[1.7983,9.3538,1.9285,9.3538,1.9285,9.4378,1.7983,9.4378],\"text\":\"or\",\"confidence\":1},{\"boundingBox\":[1.9774,9.3263,2.3769,9.3263,2.3769,9.438,1.9774,9.438],\"text\":\"e-mail\",\"confidence\":1},{\"boundingBox\":[2.4319,9.3338,2.5864,9.3338,2.5864,9.4378,2.4319,9.4378],\"text\":\"to:\",\"confidence\":1},{\"boundingBox\":[2.695,9.323,4.3584,9.323,4.3584,9.4677,2.695,9.4677],\"text\":\"insurance@contoso.com\",\"confidence\":1}]},{\"boundingBox\":[3.2626,9.7729,5.6997,9.7729,5.6997,9.8468,3.2626,9.8468],\"text\":\"OFFICES LOCATED AT 24 Main Street Palo Alto CA 842325\",\"words\":[{\"boundingBox\":[3.2626,9.7731,3.6024,9.7731,3.6024,9.8468,3.2626,9.8468],\"text\":\"OFFICES\",\"confidence\":1},{\"boundingBox\":[3.6348,9.775,3.996,9.775,3.996,9.8464,3.6348,9.8464],\"text\":\"LOCATED\",\"confidence\":1},{\"boundingBox\":[4.0212,9.79,4.1168,9.79,4.1168,9.845,4.0212,9.845],\"text\":\"AT\",\"confidence\":1},{\"boundingBox\":[4.1421,9.7738,4.2429,9.7738,4.2429,9.845,4.1421,9.845],\"text\":\"24\",\"confidence\":1},{\"boundingBox\":[4.2818,9.7741,4.479,9.7741,4.479,9.8461,4.2818,9.8461],\"text\":\"Main\",\"confidence\":1},{\"boundingBox\":[4.5171,9.7729,4.7719,9.7729,4.7719,9.8461,4.5171,9.8461],\"text\":\"Street\",\"confidence\":1},{\"boundingBox\":[4.8071,9.7741,4.9909,9.7741,4.9909,9.8461,4.8071,9.8461],\"text\":\"Palo\",\"confidence\":1},{\"boundingBox\":[5.0215,9.7741,5.1857,9.7741,5.1857,9.8461,5.0215,9.8461],\"text\":\"Alto\",\"confidence\":1},{\"boundingBox\":[5.2212,9.7729,5.3518,9.7729,5.3518,9.8461,5.2212,9.8461],\"text\":\"CA\",\"confidence\":1},{\"boundingBox\":[5.3827,9.7738,5.6997,9.7738,5.6997,9.8462,5.3827,9.8462],\"text\":\"842325\",\"confidence\":1}]},{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"words\":[{\"boundingBox\":[3.8373,9.8915,5.1228,9.8915,5.1228,9.9709,3.8373,9.9709],\"text\":\"www.contoso.com/insurance\",\"confidence\":1}]}],\"selectionMarks\":[{\"boundingBox\":[3.0724,5.4394,3.2498,5.4394,3.2498,5.6098,3.0724,5.6098],\"confidence\":0.991,\"state\":\"unselected\"},{\"boundingBox\":[1.6064,5.4233,1.7774,5.4233,1.7774,5.5937,1.6064,5.5937],\"confidence\":0.99,\"state\":\"unselected\"},{\"boundingBox\":[2.2849,5.4179,2.4652,5.4179,2.4652,5.5969,2.2849,5.5969],\"confidence\":0.881,\"state\":\"selected\"},{\"boundingBox\":[0,10.296,1.0459,10.296,1.0459,10.9982,0,10.9982],\"confidence\":0.833,\"state\":\"unselected\"},{\"boundingBox\":[0,10.6052,1.5019,10.6052,1.5019,11.0,0,11.0],\"confidence\":0.69,\"state\":\"unselected\"},{\"boundingBox\":[2.2887,5.4204,2.4633,5.4204,2.4633,5.5937,2.2887,5.5937],\"confidence\":0.609,\"state\":\"unselected\"},{\"boundingBox\":[3.3758,5.6907,4.9999,5.6907,4.9999,5.9387,3.3758,5.9387],\"confidence\":0.553,\"state\":\"unselected\"},{\"boundingBox\":[0,10.7248,0.539,10.7248,0.539,11,0,11],\"confidence\":0.553,\"state\":\"unselected\"}]}],\"pageResults\":[{\"page\":1,\"tables\":[{\"rows\":4,\"columns\":4,\"cells\":[{\"rowIndex\":0,\"columnIndex\":0,\"text\":\"Name of Cardholder: John Singer\",\"boundingBox\":[0.8104,5.6546,4.1554,5.6546,4.1554,5.9962,0.8104,5.9962],\"elements\":[\"#/readResults/0/lines/17/words/0\",\"#/readResults/0/lines/17/words/1\",\"#/readResults/0/lines/17/words/2\",\"#/readResults/0/lines/18/words/0\",\"#/readResults/0/lines/18/words/1\"]},{\"rowIndex\":0,\"columnIndex\":2,\"columnSpan\":2,\"text\":\"Contact persons phone #, if questions with this form. Telephone #: ( ) - 425 779 3479\",\"boundingBox\":[5.1496,5.6546,8.2604,5.6546,8.2604,5.9962,5.1496,5.9962],\"elements\":[\"#/readResults/0/lines/19/words/0\",\"#/readResults/0/lines/19/words/1\",\"#/readResults/0/lines/19/words/2\",\"#/readResults/0/lines/19/words/3\",\"#/readResults/0/lines/19/words/4\",\"#/readResults/0/lines/19/words/5\",\"#/readResults/0/lines/19/words/6\",\"#/readResults/0/lines/19/words/7\",\"#/readResults/0/lines/20/words/0\",\"#/readResults/0/lines/20/words/1\",\"#/readResults/0/lines/20/words/2\",\"#/readResults/0/lines/20/words/3\",\"#/readResults/0/lines/22/words/0\",\"#/readResults/0/lines/23/words/0\",\"#/readResults/0/lines/21/words/0\",\"#/readResults/0/lines/24/words/0\",\"#/readResults/0/lines/24/words/1\"]},{\"rowIndex\":1,\"columnIndex\":0,\"text\":\"Email Address: johnsinger@hotmail.com\",\"boundingBox\":[0.8104,5.9962,4.1554,5.9962,4.1554,6.2262,0.8104,6.2262],\"elements\":[\"#/readResults/0/lines/25/words/0\",\"#/readResults/0/lines/25/words/1\",\"#/readResults/0/lines/26/words/0\"]},{\"rowIndex\":2,\"columnIndex\":0,\"text\":\"Mailing Address: 472 SE 74th ST\",\"boundingBox\":[0.8104,6.2262,4.1554,6.2262,4.1554,6.5021,0.8104,6.5021],\"elements\":[\"#/readResults/0/lines/27/words/0\",\"#/readResults/0/lines/27/words/1\",\"#/readResults/0/lines/28/words/0\",\"#/readResults/0/lines/28/words/1\",\"#/readResults/0/lines/28/words/2\",\"#/readResults/0/lines/28/words/3\"]},{\"rowIndex\":3,\"columnIndex\":0,\"text\":\"City: Lakewood\",\"boundingBox\":[0.8104,6.5021,4.1554,6.5021,4.1554,6.7146,0.8104,6.7146],\"elements\":[\"#/readResults/0/lines/29/words/0\",\"#/readResults/0/lines/30/words/0\"]},{\"rowIndex\":3,\"columnIndex\":1,\"text\":\"State: WA\",\"boundingBox\":[4.1554,6.5021,5.1496,6.5021,5.1496,6.7146,4.1554,6.7146],\"elements\":[\"#/readResults/0/lines/31/words/0\",\"#/readResults/0/lines/32/words/0\"]},{\"rowIndex\":3,\"columnIndex\":3,\"text\":\"Zip Code: 98712\",\"boundingBox\":[6.4104,6.5021,8.2604,6.5021,8.2604,6.7146,6.4104,6.7146],\"elements\":[\"#/readResults/0/lines/33/words/0\",\"#/readResults/0/lines/33/words/1\",\"#/readResults/0/lines/34/words/0\"]}]}]}],\"documentResults\":[{\"docType\":\"custom:9db3a709-548b-4ebf-9eeb-7f417760a3e6\",\"modelId\":\"9db3a709-548b-4ebf-9eeb-7f417760a3e6\",\"pageRange\":[1,1],\"fields\":{\"MASTERCARD_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[3.07,5.44,3.25,5.44,3.25,5.61,3.07,5.61],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/0\"]},\"AMEX_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"selected\",\"page\":1,\"boundingBox\":[2.285,5.42,2.465,5.42,2.465,5.595,2.285,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/2\"]},\"VISA_SELECTION_MARK\":{\"type\":\"selectionMark\",\"text\":\"unselected\",\"page\":1,\"boundingBox\":[1.605,5.425,1.775,5.425,1.775,5.595,1.605,5.595],\"confidence\":1.0,\"elements\":[\"#/readResults/0/selectionMarks/1\"]}},\"docTypeConfidence\":1.0}],\"errors\":[]}}", + "Date" : "Thu, 22 Oct 2020 04:44:34 GMT", + "Content-Type" : "application/json; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/formrecognizer/test-resources.json b/sdk/formrecognizer/test-resources.json index 7c1bc6857260..ed538ef22a13 100644 --- a/sdk/formrecognizer/test-resources.json +++ b/sdk/formrecognizer/test-resources.json @@ -71,6 +71,10 @@ "type": "string", "defaultValue": "testingdata" }, + "selectionMarkTrainingDataContainer": { + "type": "string", + "defaultValue": "selectionmark" + }, "testingDataSasProperties": { "type": "object", "defaultValue": { @@ -92,6 +96,15 @@ "signedPermission": "rl", "signedResource": "c" } + }, + "selectionMarkTrainingDataSasProperties": { + "type": "object", + "defaultValue": { + "canonicalizedResource": "[concat('/blob/', parameters('blobStorageAccount'), '/', parameters('selectionMarkTrainingDataContainer'))]", + "signedExpiry": "[dateTimeAdd(utcNow('u'), 'PT2H')]", + "signedPermission": "rl", + "signedResource": "c" + } } }, "variables": { @@ -161,6 +174,10 @@ "type": "string", "value": "[concat(reference(parameters('blobResourceId'), '2019-06-01').primaryEndpoints.blob, parameters('multiPageTestingDataContainer'), '?', listServiceSas(parameters('blobResourceId'), '2019-06-01', parameters('multiPageTestingDataSasProperties')).serviceSasToken)]" }, + "FORM_RECOGNIZER_SELECTION_MARK_BLOB_CONTAINER_SAS_URL": { + "type": "string", + "value": "[concat(reference(parameters('blobResourceId'), '2019-06-01').primaryEndpoints.blob, parameters('selectionMarkTrainingDataContainer'), '?', listServiceSas(parameters('blobResourceId'), '2019-06-01', parameters('selectionMarkTrainingDataContainer')).serviceSasToken)]" + }, "FORM_RECOGNIZER_TARGET_RESOURCE_REGION": { "type": "string", "value": "[parameters('location')]" diff --git a/sdk/keyvault/azure-security-keyvault-jca/README.md b/sdk/keyvault/azure-security-keyvault-jca/README.md index f6efb38fbe05..d53ac82c551d 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/README.md +++ b/sdk/keyvault/azure-security-keyvault-jca/README.md @@ -1,51 +1,49 @@ -# JCA Provider for Azure Key Vault +# Azure Key Vault JCA client library for Java + +# Getting started + +# Key concepts The JCA Provider for Azure Key Vault is a JCA provider for certificates in Azure Key Vault. It is built on four principles: -1. Must be extremely thin to run within a JVM -1. Must not introduce any library version conflicts with Java app code dependencies -1. Must not introduce any class loader hierarchy conflicts with Java app code dependencies +1. Must be extremely thin to run within a JVM. +1. Must not introduce any library version conflicts with Java app code dependencies. +1. Must not introduce any class loader hierarchy conflicts with Java app code dependencies. 1. Must be ready for "never trust, always verify and credential-free" Zero Trust environments. -## Testing the version under development - -If you want to test the current version under development you will have to -build and install it into your local Maven repository. To do so use the -following command line: - -``` - mvn clean install -DskipTests=true -``` +# Examples ## Server side SSL -If you are looking to integrate the JCA provider to create a SSLServerSocket +If you are looking to integrate the JCA provider to create an SSLServerSocket see the example below. + + ```java - KeyVaultJcaProvider provider = new KeyVaultJcaProvider(); - Security.addProvider(provider); +KeyVaultJcaProvider provider = new KeyVaultJcaProvider(); +Security.addProvider(provider); - KeyStore ks = KeyStore.getInstance("AzureKeyVault"); - KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter( - System.getProperty("azure.keyvault.uri"), - System.getProperty("azure.tenant.id"), - System.getProperty("azure.client.id"), - System.getProperty("azure.client.secret")); - ks.load(parameter); +KeyStore ks = KeyStore.getInstance("AzureKeyVault"); +KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter( + System.getProperty("azure.keyvault.uri"), + System.getProperty("azure.tenant.id"), + System.getProperty("azure.client.id"), + System.getProperty("azure.client.secret")); +ks.load(parameter); - KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - kmf.init(ks, "".toCharArray()); +KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); +kmf.init(ks, "".toCharArray()); - SSLContext context = SSLContext.getInstance("TLS"); - context.init(kmf.getKeyManagers(), null, null); +SSLContext context = SSLContext.getInstance("TLS"); +context.init(kmf.getKeyManagers(), null, null); - SSLServerSocketFactory factory = (SSLServerSocketFactory) context.getServerSocketFactory(); - SSLServerSocket serverSocket = (SSLServerSocket) factory.createServerSocket(8765); +SSLServerSocketFactory factory = context.getServerSocketFactory(); +SSLServerSocket serverSocket = (SSLServerSocket) factory.createServerSocket(8765); ``` -Note if you want to use Azure managed identity, you should set the value +Note if you want to use Azure Managed Identity, you should set the value of `azure.keyvault.uri`, and the rest of the parameters would be `null`. ## Client side SSL @@ -53,75 +51,79 @@ of `azure.keyvault.uri`, and the rest of the parameters would be `null`. If you are looking to integrate the JCA provider for client side socket connections, see the Apache HTTP client example below. + + ```java - KeyVaultJcaProvider provider = new KeyVaultJcaProvider(); - Security.addProvider(provider); - - KeyStore ks = KeyStore.getInstance("AzureKeyVault"); - KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter( - System.getProperty("azure.keyvault.uri"), - System.getProperty("azure.tenant.id"), - System.getProperty("azure.client.id"), - System.getProperty("azure.client.secret")); - ks.load(parameter); - - SSLContext sslContext = SSLContexts - .custom() - .loadTrustMaterial(ks, new TrustSelfSignedStrategy()) - .build(); - - SSLConnectionSocketFactory sslSocketFactory = SSLConnectionSocketFactoryBuilder - .create() - .setSslContext(sslContext) - .setHostnameVerifier((hostname, session) -> { - return true; - }) - .build(); - - PoolingHttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder - .create() - .setSSLSocketFactory(sslSocketFactory) - .build(); - - String result = null; - - try ( CloseableHttpClient client = HttpClients.custom().setConnectionManager(cm).build()) { - HttpGet httpGet = new HttpGet("https://localhost:8766"); - HttpClientResponseHandler responseHandler = (ClassicHttpResponse response) -> { - int status = response.getCode(); - String result1 = "Not success"; - if (status == 204) { - result1 = "Success"; - } - return result1; - }; - result = client.execute(httpGet, responseHandler); - } catch (IOException ioe) { - ioe.printStackTrace(); - } +KeyVaultJcaProvider provider = new KeyVaultJcaProvider(); +Security.addProvider(provider); + +KeyStore ks = KeyStore.getInstance("AzureKeyVault"); +KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter( + System.getProperty("azure.keyvault.uri"), + System.getProperty("azure.tenant.id"), + System.getProperty("azure.client.id"), + System.getProperty("azure.client.secret")); +ks.load(parameter); + +SSLContext sslContext = SSLContexts + .custom() + .loadTrustMaterial(ks, new TrustSelfSignedStrategy()) + .build(); + +SSLConnectionSocketFactory sslSocketFactory = SSLConnectionSocketFactoryBuilder + .create() + .setSslContext(sslContext) + .setHostnameVerifier((hostname, session) -> { + return true; + }) + .build(); + +PoolingHttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder + .create() + .setSSLSocketFactory(sslSocketFactory) + .build(); + +String result = null; + +try (CloseableHttpClient client = HttpClients.custom().setConnectionManager(cm).build()) { + HttpGet httpGet = new HttpGet("https://localhost:8766"); + HttpClientResponseHandler responseHandler = (ClassicHttpResponse response) -> { + int status = response.getCode(); + String result1 = "Not success"; + if (status == 204) { + result1 = "Success"; + } + return result1; + }; + result = client.execute(httpGet, responseHandler); +} catch (IOException ioe) { + ioe.printStackTrace(); +} ``` Note if you want to use Azure managed identity, you should set the value of `azure.keyvault.uri`, and the rest of the parameters would be `null`. +# Troubleshooting + +# Next steps + ## Spring Boot -For Spring Boot applications see our [Spring Boot starter]. +For Spring Boot applications see our [Spring Boot starter](https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/spring/azure-spring-boot-starter-keyvault-certificates/README.md). ## Reference 1. [Java Cryptography Architecture (JCA) Reference Guide](https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html) -# Azure KeyVault JCA client library for Java - -# Getting started - -# Key concepts - -# Examples +# Contributing -# Troubleshooting +## Testing the version under development -# Next steps +If you want to test the current version under development you will have to +build and install it into your local Maven repository. To do so use the +following command line: -# Contributing +``` + mvn clean install -DskipTests=true +``` diff --git a/sdk/keyvault/azure-security-keyvault-jca/pom.xml b/sdk/keyvault/azure-security-keyvault-jca/pom.xml index fc653e43be9b..89c2a0be13e5 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-jca/pom.xml @@ -16,7 +16,7 @@ azure-security-keyvault-jca 1.0.0-beta.2 JCA Provider for Azure Key Vault - The Java Crypto Architecture (JCA) Provider for Azure KeyVault + The Java Crypto Architecture (JCA) Provider for Azure Key Vault @@ -195,7 +195,7 @@ To run the integration tests pass in the following system properties - - azure.keyvault.uri - the KeyVault URI + - azure.keyvault.uri - the Azure Key Vault URI - azure.tenant.id - your tenant ID - azure.client.id - the (application) client ID - azure.client.secret - the (application) client secret diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/AuthClient.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/AuthClient.java index 7fab5629bce9..e3684ed39b69 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/AuthClient.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/AuthClient.java @@ -116,7 +116,7 @@ public String getAccessToken(String resource, String tenantId, if (body != null) { JsonConverter converter = JsonConverterFactory.createJsonConverter(); OAuthToken token = (OAuthToken) converter.fromJson(body, OAuthToken.class); - result = token.getAccess_token(); + result = token.getAccessToken(); } LOGGER.log(FINER, "Access token: {0}", result); return result; @@ -146,7 +146,7 @@ private String getAccessTokenOnAppService(String resource) { if (body != null) { JsonConverter converter = JsonConverterFactory.createJsonConverter(); OAuthToken token = (OAuthToken) converter.fromJson(body, OAuthToken.class); - result = token.getAccess_token(); + result = token.getAccessToken(); } LOGGER.exiting("AuthClient", "getAccessTokenOnAppService", result); return result; @@ -174,7 +174,7 @@ private String getAccessTokenOnOthers(String resource) { if (body != null) { JsonConverter converter = JsonConverterFactory.createJsonConverter(); OAuthToken token = (OAuthToken) converter.fromJson(body, OAuthToken.class); - result = token.getAccess_token(); + result = token.getAccessToken(); } LOGGER.exiting("AuthClient", "getAccessTokenOnOthers", result); return result; diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultCertificate.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultCertificate.java deleted file mode 100644 index c37e93563046..000000000000 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultCertificate.java +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.security.keyvault.jca; - -import java.math.BigInteger; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.Principal; -import java.security.PublicKey; -import java.security.SignatureException; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateException; -import java.security.cert.CertificateExpiredException; -import java.security.cert.CertificateNotYetValidException; -import java.security.cert.X509Certificate; -import java.util.Date; -import java.util.Set; - -/** - * The KeyVault certificate. - */ -class KeyVaultCertificate extends X509Certificate { - - /** - * Stores the delegate. - */ - private final X509Certificate delegate; - - /** - * Constructor. - * - * @param delegate the delegate. - */ - KeyVaultCertificate(X509Certificate delegate) { - super(); - this.delegate = delegate; - } - - /** - * @see X509Certificate#checkValidity() - */ - @Override - public void checkValidity() throws CertificateExpiredException, CertificateNotYetValidException { - delegate.checkValidity(); - } - - /** - * @see X509Certificate#checkValidity(java.util.Date) - */ - @Override - public void checkValidity(Date date) throws CertificateExpiredException, CertificateNotYetValidException { - delegate.checkValidity(date); - } - - /** - * @see X509Certificate#getBasicConstraints() - */ - @Override - public int getBasicConstraints() { - return delegate.getBasicConstraints(); - } - - /** - * @see X509Certificate#getCriticalExtensionOIDs() - */ - @Override - public Set getCriticalExtensionOIDs() { - return delegate.getCriticalExtensionOIDs(); - } - - /** - * @see X509Certificate#getEncoded() - */ - @Override - public byte[] getEncoded() throws CertificateEncodingException { - return delegate.getEncoded(); - } - - /** - * @see X509Certificate#getExtensionValue(java.lang.String) - */ - @Override - public byte[] getExtensionValue(String oid) { - return delegate.getExtensionValue(oid); - } - - /** - * @see X509Certificate#getIssuerDN() - */ - @Override - public Principal getIssuerDN() { - return delegate.getIssuerDN(); - } - - /** - * @see X509Certificate#getIssuerUniqueID() - */ - @Override - public boolean[] getIssuerUniqueID() { - return delegate.getIssuerUniqueID(); - } - - /** - * @see X509Certificate#getKeyUsage() - */ - @Override - public boolean[] getKeyUsage() { - return delegate.getKeyUsage(); - } - - /** - * @see X509Certificate#getNonCriticalExtensionOIDs() - */ - @Override - public Set getNonCriticalExtensionOIDs() { - return delegate.getNonCriticalExtensionOIDs(); - } - - /** - * @see X509Certificate#getNotAfter() - */ - @Override - public Date getNotAfter() { - return delegate.getNotAfter(); - } - - /** - * @see X509Certificate#getNotBefore() - */ - @Override - public Date getNotBefore() { - return delegate.getNotBefore(); - } - - /** - * @see X509Certificate#getPublicKey() - */ - @Override - public PublicKey getPublicKey() { - return delegate.getPublicKey(); - } - - /** - * @see X509Certificate#getSerialNumber() - */ - @Override - public BigInteger getSerialNumber() { - return delegate.getSerialNumber(); - } - - /** - * @see X509Certificate#getSigAlgName() - */ - @Override - public String getSigAlgName() { - return delegate.getSigAlgName(); - } - - /** - * @see X509Certificate#getSigAlgOID() - */ - @Override - public String getSigAlgOID() { - return delegate.getSigAlgOID(); - } - - /** - * @see X509Certificate#getSigAlgParams() - */ - @Override - public byte[] getSigAlgParams() { - return delegate.getSigAlgParams(); - } - - /** - * @see X509Certificate#getSignature() - */ - @Override - public byte[] getSignature() { - return delegate.getSignature(); - } - - /** - * @see X509Certificate#getSubjectDN() - */ - @Override - public Principal getSubjectDN() { - return delegate.getSubjectDN(); - } - - /** - * @see X509Certificate#getSubjectUniqueID() - */ - @Override - public boolean[] getSubjectUniqueID() { - return delegate.getSubjectUniqueID(); - } - - /** - * @see X509Certificate#getTBSCertificate() - */ - @Override - public byte[] getTBSCertificate() throws CertificateEncodingException { - return delegate.getTBSCertificate(); - } - - /** - * @see X509Certificate#getVersion() - */ - @Override - public int getVersion() { - return delegate.getVersion(); - } - - /** - * @see X509Certificate#hasUnsupportedCriticalExtension() - */ - @Override - public boolean hasUnsupportedCriticalExtension() { - return delegate.hasUnsupportedCriticalExtension(); - } - - /** - * @see X509Certificate#toString() - */ - @Override - public String toString() { - return delegate.toString(); - } - - /** - * @see X509Certificate#verify(java.security.PublicKey) - */ - @Override - public void verify(PublicKey key) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, - NoSuchProviderException, SignatureException { - delegate.verify(key); - } - - /** - * @see X509Certificate#verify(java.security.PublicKey, java.security.Provider) - */ - @Override - public void verify(PublicKey key, String sigProvider) throws CertificateException, NoSuchAlgorithmException, - InvalidKeyException, NoSuchProviderException, SignatureException { - delegate.verify(key, sigProvider); - } -} diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultClient.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultClient.java index 0bb01049216b..d11a7ae0386a 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultClient.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultClient.java @@ -34,7 +34,7 @@ import static java.util.logging.Level.WARNING; /** - * The REST client specific to Azure KeyVault. + * The REST client specific to Azure Key Vault. */ class KeyVaultClient extends DelegateRestClient { @@ -49,9 +49,9 @@ class KeyVaultClient extends DelegateRestClient { private static final String API_VERSION_POSTFIX = "?api-version=7.1"; /** - * Stores the KeyVault URI. + * Stores the Azure Key Vault URL. */ - private final String keyVaultUri; + private final String keyVaultUrl; /** * Stores the tenant ID. @@ -71,21 +71,21 @@ class KeyVaultClient extends DelegateRestClient { /** * Constructor. * - * @param keyVaultUri the KeyVault URI. + * @param keyVaultUri the Azure Key Vault URI. */ KeyVaultClient(String keyVaultUri) { super(RestClientFactory.createClient()); - LOGGER.log(INFO, "Using KeyVault: {0}", keyVaultUri); + LOGGER.log(INFO, "Using Azure Key Vault: {0}", keyVaultUri); if (!keyVaultUri.endsWith("/")) { keyVaultUri = keyVaultUri + "/"; } - this.keyVaultUri = keyVaultUri; + this.keyVaultUrl = keyVaultUri; } /** * Constructor. * - * @param keyVaultUri the KeyVault URI. + * @param keyVaultUri the Azure Key Vault URI. * @param tenantId the tenant ID. * @param clientId the client ID. * @param clientSecret the client secret. @@ -125,11 +125,11 @@ private String getAccessToken() { * * @return the list of aliases. */ - public List getAliases() { + List getAliases() { ArrayList result = new ArrayList<>(); HashMap headers = new HashMap<>(); headers.put("Authorization", "Bearer " + getAccessToken()); - String url = String.format("%scertificates%s", keyVaultUri, API_VERSION_POSTFIX); + String url = String.format("%scertificates%s", keyVaultUrl, API_VERSION_POSTFIX); String response = get(url, headers); CertificateListResult certificateListResult = null; if (response != null) { @@ -156,7 +156,7 @@ private CertificateBundle getCertificateBundle(String alias) { CertificateBundle result = null; HashMap headers = new HashMap<>(); headers.put("Authorization", "Bearer " + getAccessToken()); - String url = String.format("%scertificates/%s%s", keyVaultUri, alias, API_VERSION_POSTFIX); + String url = String.format("%scertificates/%s%s", keyVaultUrl, alias, API_VERSION_POSTFIX); String response = get(url, headers); if (response != null) { JsonConverter converter = JsonConverterFactory.createJsonConverter(); @@ -171,7 +171,7 @@ private CertificateBundle getCertificateBundle(String alias) { * @param alias the alias. * @return the certificate, or null if not found. */ - public Certificate getCertificate(String alias) { + Certificate getCertificate(String alias) { LOGGER.entering("KeyVaultClient", "getCertificate", alias); LOGGER.log(INFO, "Getting certificate for alias: {0}", alias); X509Certificate certificate = null; @@ -182,7 +182,7 @@ public Certificate getCertificate(String alias) { try { CertificateFactory cf = CertificateFactory.getInstance("X.509"); certificate = (X509Certificate) cf.generateCertificate( - new ByteArrayInputStream(Base64.getDecoder().decode(certificateBundle.getCer())) + new ByteArrayInputStream(Base64.getDecoder().decode(certificateString)) ); } catch (CertificateException ce) { LOGGER.log(WARNING, "Certificate error", ce); @@ -200,20 +200,20 @@ public Certificate getCertificate(String alias) { * @param password the password. * @return the key. */ - public Key getKey(String alias, char[] password) { + Key getKey(String alias, char[] password) { LOGGER.entering("KeyVaultClient", "getKey", new Object[] { alias, password }); LOGGER.log(INFO, "Getting key for alias: {0}", alias); Key key = null; CertificateBundle certificateBundle = getCertificateBundle(alias); boolean isExportable = Optional.ofNullable(certificateBundle) .map(CertificateBundle::getPolicy) - .map(CertificatePolicy::getKey_props) + .map(CertificatePolicy::getKeyProperties) .map(KeyProperties::isExportable) .orElse(false); if (isExportable) { // Because the certificate is exportable the private key is - // available. So we'll use the KeyVault Secrets API to get the - // private key. + // available. So we'll use the Azure Key Vault Secrets API to get + // the private key. String certificateSecretUri = certificateBundle.getSid(); HashMap headers = new HashMap<>(); headers.put("Authorization", "Bearer " + getAccessToken()); diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultJcaProvider.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultJcaProvider.java index c91b441867ac..36ab7044ec82 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultJcaProvider.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultJcaProvider.java @@ -10,7 +10,7 @@ import java.util.Collections; /** - * The Azure KeyVault security provider. + * The Azure Key Vault security provider. */ public class KeyVaultJcaProvider extends Provider { @@ -22,7 +22,7 @@ public class KeyVaultJcaProvider extends Provider { /** * Stores the information. */ - private static final String INFO = "Azure KeyVault JCA Provider"; + private static final String INFO = "Azure Key Vault JCA Provider"; /** * Stores the name. diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyManager.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyManager.java index 247f61bcd71a..1cf099d84b0f 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyManager.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyManager.java @@ -22,7 +22,7 @@ import static java.util.logging.Level.WARNING; /** - * The KeyVault variant of the X509ExtendedKeyManager. + * The Azure Key Vault variant of the X509ExtendedKeyManager. */ public class KeyVaultKeyManager extends X509ExtendedKeyManager { @@ -63,8 +63,8 @@ public String chooseClientAlias(String[] keyType, Principal[] issuers, Socket so String alias = null; try { /* - * If we only have one alias and the keystore type is not 'AzureKeyVault' - * return that alias as a match. + * If we only have one alias and the keystore type is not + * 'AzureKeyVault' return that alias as a match. */ if (!keystore.getProvider().getName().equals("AzureKeyVault") && keystore.size() == 1) { @@ -87,8 +87,8 @@ public String chooseServerAlias(String keyType, Principal[] issuers, Socket sock String alias = null; try { /* - * If we only have one alias and the keystore type is not 'AzureKeyVault' - * return that alias as a match. + * If we only have one alias and the keystore type is not + * 'AzureKeyVault' return that alias as a match. */ if (!keystore.getProvider().getName().equals("AzureKeyVault") && keystore.size() == 1) { @@ -127,6 +127,8 @@ public X509Certificate[] getCertificateChain(String alias) { chain.add((X509Certificate) certificate); } } + } else { + LOGGER.log(WARNING, "No certificate chain found for alias: {0}", alias); } } catch (KeyStoreException kse) { LOGGER.log(WARNING, "Unable to get certificate chain for alias: " + alias, kse); diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyManagerFactory.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyManagerFactory.java index 7f1bf1e43648..d9a51c48d9b7 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyManagerFactory.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyManagerFactory.java @@ -12,7 +12,7 @@ import java.util.logging.Logger; /** - * The KeyVault variant of the KeyManagerFactory. + * The Azure Key Vault variant of the KeyManagerFactory. */ public class KeyVaultKeyManagerFactory extends KeyManagerFactorySpi { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyStore.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyStore.java index 46e12d87f41f..634a6e1924fe 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyStore.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyStore.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. - package com.azure.security.keyvault.jca; import java.io.BufferedReader; @@ -32,7 +31,7 @@ import static java.util.logging.Level.WARNING; /** - * The Azure KeyVault implementation of the KeyStoreSpi. + * The Azure Key Vault implementation of the KeyStoreSpi. */ public class KeyVaultKeyStore extends KeyStoreSpi { @@ -64,7 +63,7 @@ public class KeyVaultKeyStore extends KeyStoreSpi { /** * Stores the key vault client. */ - private KeyVaultClient keyVault; + private KeyVaultClient keyVaultClient; /** * Constructor. @@ -83,13 +82,13 @@ public KeyVaultKeyStore() { String tenantId = System.getProperty("azure.keyvault.tenantId"); String clientId = System.getProperty("azure.keyvault.clientId"); String clientSecret = System.getProperty("azure.keyvault.clientSecret"); - keyVault = new KeyVaultClient(keyVaultUri, tenantId, clientId, clientSecret); + keyVaultClient = new KeyVaultClient(keyVaultUri, tenantId, clientId, clientSecret); } @Override public Enumeration engineAliases() { if (aliases == null) { - aliases = keyVault.getAliases(); + aliases = keyVaultClient.getAliases(); } return Collections.enumeration(aliases); } @@ -114,7 +113,7 @@ public Certificate engineGetCertificate(String alias) { if (certificates.containsKey(alias)) { certificate = certificates.get(alias); } else { - certificate = keyVault.getCertificate(alias); + certificate = keyVaultClient.getCertificate(alias); if (certificate != null) { certificates.put(alias, certificate); if (!aliases.contains(alias)) { @@ -130,7 +129,7 @@ public String engineGetCertificateAlias(Certificate cert) { String alias = null; if (cert != null) { if (aliases == null) { - aliases = keyVault.getAliases(); + aliases = keyVaultClient.getAliases(); } for (String candidateAlias : aliases) { Certificate certificate = engineGetCertificate(candidateAlias); @@ -170,7 +169,7 @@ public Key engineGetKey(String alias, char[] password) { if (certificateKeys.containsKey(alias)) { key = certificateKeys.get(alias); } else { - key = keyVault.getKey(alias, password); + key = keyVaultClient.getKey(alias, password); if (key != null) { certificateKeys.put(alias, key); if (!aliases.contains(alias)) { @@ -184,7 +183,7 @@ public Key engineGetKey(String alias, char[] password) { @Override public boolean engineIsCertificateEntry(String alias) { if (aliases == null) { - aliases = keyVault.getAliases(); + aliases = keyVaultClient.getAliases(); } return aliases.contains(alias); } @@ -198,11 +197,11 @@ public boolean engineIsKeyEntry(String alias) { public void engineLoad(KeyStore.LoadStoreParameter param) { if (param instanceof KeyVaultLoadStoreParameter) { KeyVaultLoadStoreParameter parameter = (KeyVaultLoadStoreParameter) param; - keyVault = new KeyVaultClient( - parameter.getUri(), - parameter.getTenantId(), - parameter.getClientId(), - parameter.getClientSecret()); + keyVaultClient = new KeyVaultClient( + parameter.getUri(), + parameter.getTenantId(), + parameter.getClientId(), + parameter.getClientSecret()); } sideLoad(); } @@ -215,7 +214,7 @@ public void engineLoad(InputStream stream, char[] password) { @Override public void engineSetCertificateEntry(String alias, Certificate certificate) { if (aliases == null) { - aliases = keyVault.getAliases(); + aliases = keyVaultClient.getAliases(); } if (!aliases.contains(alias)) { aliases.add(alias); @@ -258,12 +257,14 @@ public void engineStore(KeyStore.LoadStoreParameter param) { */ private String[] getFilenames(String path) throws IOException { List filenames = new ArrayList<>(); - InputStream in = getClass().getResourceAsStream(path); - if (in != null) { - BufferedReader br = new BufferedReader(new InputStreamReader(in)); - String resource; - while ((resource = br.readLine()) != null) { - filenames.add(resource); + try (InputStream in = getClass().getResourceAsStream(path)) { + if (in != null) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(in))) { + String resource; + while ((resource = br.readLine()) != null) { + filenames.add(resource); + } + } } } return filenames.toArray(new String[0]); @@ -277,16 +278,19 @@ private String[] getFilenames(String path) throws IOException { * @throws IOException when an I/O error occurs. */ private byte[] readAllBytes(InputStream inputStream) throws IOException { - ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(); - byte[] buffer = new byte[1024]; - while (true) { - int r = inputStream.read(buffer); - if (r == -1) { - break; + byte[] bytes; + try (ByteArrayOutputStream byteOutput = new ByteArrayOutputStream()) { + byte[] buffer = new byte[1024]; + while (true) { + int r = inputStream.read(buffer); + if (r == -1) { + break; + } + byteOutput.write(buffer, 0, r); } - byteOutput.write(buffer, 0, r); + bytes = byteOutput.toByteArray(); } - return byteOutput.toByteArray(); + return bytes; } /** @@ -307,12 +311,12 @@ private void sideLoad() { try { CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate certificate = (X509Certificate) cf.generateCertificate( - new ByteArrayInputStream(bytes)); + new ByteArrayInputStream(bytes)); engineSetCertificateEntry(alias, certificate); LOGGER.log(INFO, "Side loaded certificate: {0} from: {1}", - new Object[] { alias, filename }); + new Object[]{alias, filename}); } catch (CertificateException e) { - LOGGER.log(WARNING, "Unable to side-load certificate", e); + LOGGER.log(WARNING, "Unable to side-load certificate from: " + filename, e); } } } diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultLoadStoreParameter.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultLoadStoreParameter.java index 5a1e616eb168..b7900e044c62 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultLoadStoreParameter.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultLoadStoreParameter.java @@ -6,7 +6,7 @@ import java.security.KeyStore; /** - * The Azure KeyVault LoadStoreParameter of the KeyStoreSpi. + * The Azure Key Vault LoadStoreParameter of the KeyStoreSpi. */ public class KeyVaultLoadStoreParameter implements KeyStore.LoadStoreParameter { @@ -33,7 +33,7 @@ public class KeyVaultLoadStoreParameter implements KeyStore.LoadStoreParameter { /** * Constructor. * - * @param uri the KeyVault URI. + * @param uri the Azure Key Vault URI. * @param tenantId the tenant ID. * @param clientId the client ID. * @param clientSecret the client secret. diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManager.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManager.java index 0a35624aeb87..69db2137ee90 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManager.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManager.java @@ -17,9 +17,9 @@ import javax.net.ssl.X509ExtendedTrustManager; /** - * The KeyVault variant of the X509TrustManager. + * The Azure Key Vault variant of the X509TrustManager. */ -public class KeyVaultTrustManager extends X509ExtendedTrustManager implements X509TrustManager { +public class KeyVaultTrustManager extends X509ExtendedTrustManager { /** * Stores the default trust manager. diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManagerFactory.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManagerFactory.java index 73d1e4abe696..1ac87af72425 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManagerFactory.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManagerFactory.java @@ -12,7 +12,7 @@ import java.util.logging.Logger; /** - * The KeyVault variant of the TrustManagerFactory. + * The Azure Key Vault variant of the TrustManagerFactory. */ public class KeyVaultTrustManagerFactory extends TrustManagerFactorySpi { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManagerFactoryProvider.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManagerFactoryProvider.java index a70efe2ca1e6..9c2b5bb44c91 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManagerFactoryProvider.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultTrustManagerFactoryProvider.java @@ -8,7 +8,7 @@ import java.security.Provider; /** - * The Azure KeyVault TrustManagerFactory provider. + * The Azure Key Vault TrustManagerFactory provider. */ public class KeyVaultTrustManagerFactoryProvider extends Provider { @@ -20,7 +20,7 @@ public class KeyVaultTrustManagerFactoryProvider extends Provider { /** * Stores the information. */ - private static final String INFO = "Azure KeyVault TrustManagerFactory Provider"; + private static final String INFO = "Azure Key Vault TrustManagerFactory Provider"; /** * Stores the name. diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/package-info.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/package-info.java index e40cd274cf58..8fcebe98b355 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/package-info.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/package-info.java @@ -2,6 +2,6 @@ // Licensed under the MIT License. /** - * The Azure KeyVault JCA Provider package. + * The Azure Key Vault JCA Provider package. */ package com.azure.security.keyvault.jca; diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/rest/CertificatePolicy.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/rest/CertificatePolicy.java index e678c296b6bb..871d73500038 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/rest/CertificatePolicy.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/rest/CertificatePolicy.java @@ -3,6 +3,7 @@ package com.azure.security.keyvault.jca.rest; +import com.fasterxml.jackson.annotation.JsonProperty; import java.io.Serializable; /** @@ -13,6 +14,7 @@ public class CertificatePolicy implements Serializable { /** * Stores the key properties. */ + @JsonProperty("key_props") private KeyProperties keyProperties; /** @@ -20,7 +22,7 @@ public class CertificatePolicy implements Serializable { * * @return the key properties. */ - public KeyProperties getKey_props() { + public KeyProperties getKeyProperties() { return keyProperties; } @@ -29,7 +31,7 @@ public KeyProperties getKey_props() { * * @param keyProperties the key properties. */ - public void setKey_props(KeyProperties keyProperties) { + public void setKeyProperties(KeyProperties keyProperties) { this.keyProperties = keyProperties; } } diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/rest/OAuthToken.java b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/rest/OAuthToken.java index e394baaa5591..55206bc4070a 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/rest/OAuthToken.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/rest/OAuthToken.java @@ -2,6 +2,7 @@ // Licensed under the MIT License. package com.azure.security.keyvault.jca.rest; +import com.fasterxml.jackson.annotation.JsonProperty; import java.io.Serializable; /** @@ -12,15 +13,16 @@ public class OAuthToken implements Serializable { /** * Stores the access token. */ - private String access_token; + @JsonProperty("access_token") + private String accessToken; /** * Get the access token. * * @return the access token. */ - public String getAccess_token() { - return access_token; + public String getAccessToken() { + return accessToken; } /** @@ -28,7 +30,7 @@ public String getAccess_token() { * * @param accessToken the access token. */ - public void setAccess_token(String accessToken) { - this.access_token = accessToken; + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; } } diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/samples/java/sample/ClientSSLSample.java b/sdk/keyvault/azure-security-keyvault-jca/src/samples/java/sample/ClientSSLSample.java new file mode 100644 index 000000000000..5d9ad11792ea --- /dev/null +++ b/sdk/keyvault/azure-security-keyvault-jca/src/samples/java/sample/ClientSSLSample.java @@ -0,0 +1,76 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package sample; + +import com.azure.security.keyvault.jca.KeyVaultJcaProvider; +import com.azure.security.keyvault.jca.KeyVaultLoadStoreParameter; +import org.apache.hc.client5.http.classic.methods.HttpGet; +import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager; +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder; +import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory; +import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder; +import org.apache.hc.client5.http.ssl.TrustSelfSignedStrategy; +import org.apache.hc.core5.http.ClassicHttpResponse; +import org.apache.hc.core5.http.io.HttpClientResponseHandler; +import org.apache.hc.core5.ssl.SSLContexts; + +import javax.net.ssl.SSLContext; +import java.io.IOException; +import java.security.KeyStore; +import java.security.Security; + +/** + * The ClientSSL sample. + */ +public class ClientSSLSample { + + public void clientSSLSample() throws Exception { + KeyVaultJcaProvider provider = new KeyVaultJcaProvider(); + Security.addProvider(provider); + + KeyStore ks = KeyStore.getInstance("AzureKeyVault"); + KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter( + System.getProperty("azure.keyvault.uri"), + System.getProperty("azure.tenant.id"), + System.getProperty("azure.client.id"), + System.getProperty("azure.client.secret")); + ks.load(parameter); + + SSLContext sslContext = SSLContexts + .custom() + .loadTrustMaterial(ks, new TrustSelfSignedStrategy()) + .build(); + + SSLConnectionSocketFactory sslSocketFactory = SSLConnectionSocketFactoryBuilder + .create() + .setSslContext(sslContext) + .setHostnameVerifier((hostname, session) -> { + return true; + }) + .build(); + + PoolingHttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder + .create() + .setSSLSocketFactory(sslSocketFactory) + .build(); + + String result = null; + + try (CloseableHttpClient client = HttpClients.custom().setConnectionManager(cm).build()) { + HttpGet httpGet = new HttpGet("https://localhost:8766"); + HttpClientResponseHandler responseHandler = (ClassicHttpResponse response) -> { + int status = response.getCode(); + String result1 = "Not success"; + if (status == 204) { + result1 = "Success"; + } + return result1; + }; + result = client.execute(httpGet, responseHandler); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } +} diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/samples/java/sample/ServerSSLSample.java b/sdk/keyvault/azure-security-keyvault-jca/src/samples/java/sample/ServerSSLSample.java new file mode 100644 index 000000000000..e5e0a7ea40a6 --- /dev/null +++ b/sdk/keyvault/azure-security-keyvault-jca/src/samples/java/sample/ServerSSLSample.java @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package sample; + +import com.azure.security.keyvault.jca.KeyVaultJcaProvider; +import com.azure.security.keyvault.jca.KeyVaultLoadStoreParameter; + +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLServerSocket; +import javax.net.ssl.SSLServerSocketFactory; +import java.security.KeyStore; +import java.security.Security; + +/** + * The ServerSSL sample. + */ +public class ServerSSLSample { + + public void serverSSLSample() throws Exception { + KeyVaultJcaProvider provider = new KeyVaultJcaProvider(); + Security.addProvider(provider); + + KeyStore ks = KeyStore.getInstance("AzureKeyVault"); + KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter( + System.getProperty("azure.keyvault.uri"), + System.getProperty("azure.tenant.id"), + System.getProperty("azure.client.id"), + System.getProperty("azure.client.secret")); + ks.load(parameter); + + KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + kmf.init(ks, "".toCharArray()); + + SSLContext context = SSLContext.getInstance("TLS"); + context.init(kmf.getKeyManagers(), null, null); + + SSLServerSocketFactory factory = context.getServerSocketFactory(); + SSLServerSocket serverSocket = (SSLServerSocket) factory.createServerSocket(8765); + } +} diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/AuthClientTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/AuthClientTest.java index c77edab01251..8c37367078c6 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/AuthClientTest.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/AuthClientTest.java @@ -11,8 +11,6 @@ /** * The JUnit test for the AuthClient. - * - * @author Manfred Riem (manfred.riem@microsoft.com) */ public class AuthClientTest { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/DelegateRestClientTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/DelegateRestClientTest.java index 94d534680dfe..fdcf6a250846 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/DelegateRestClientTest.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/DelegateRestClientTest.java @@ -9,8 +9,6 @@ /** * The JUnit tests for the DelegateRestClient class. - * - * @author Manfred Riem (manfred.riem@microsoft.com) */ public class DelegateRestClientTest { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/JacksonJsonConverterTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/JacksonJsonConverterTest.java index 5ad5273d2f7d..2a4ea9e39708 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/JacksonJsonConverterTest.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/JacksonJsonConverterTest.java @@ -12,8 +12,6 @@ /** * The JUnit tests for the JsonbJsonConverter class. - * - * @author Manfred Riem (manfred.riem@microsoft.com) */ public class JacksonJsonConverterTest { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultCertificateTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultCertificateTest.java deleted file mode 100644 index ee521e308f08..000000000000 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultCertificateTest.java +++ /dev/null @@ -1,369 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.security.keyvault.jca; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.io.ByteArrayInputStream; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.ProviderException; -import java.security.PublicKey; -import java.security.SignatureException; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateException; -import java.security.cert.CertificateExpiredException; -import java.security.cert.CertificateFactory; -import java.security.cert.CertificateNotYetValidException; -import java.security.cert.X509Certificate; -import java.util.Base64; -import java.util.Calendar; -import java.util.Date; -import java.util.Set; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - -/** - * The JUnit tests for the KeyVaultCertificate class. - * - * @author Manfred Riem (manfred.riem@microsoft.com) - */ -public class KeyVaultCertificateTest { - - /** - * Stores the CER test certificate (which is valid til 2120). - */ - private static final String TEST_CERTIFICATE - = "MIIDeDCCAmCgAwIBAgIQGghBu97rQJKNnUHPWU7xjDANBgkqhkiG9w0BAQsFADAk" - + "MSIwIAYDVQQDExlodW5kcmVkLXllYXJzLmV4YW1wbGUuY29tMCAXDTIwMDkwMjE3" - + "NDUyNFoYDzIxMjAwOTAyMTc1NTI0WjAkMSIwIAYDVQQDExlodW5kcmVkLXllYXJz" - + "LmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuU14" - + "btkN5wmcO2WKXqm1NUKXzi79EtqiFFkrLgPAwj5NNwMw2Akm3GpdEpwkJ8/q3l7d" - + "frDEVOO9gwZbz7xppyqutjxjllw8CCgjFdfK02btz56CGgh3X25ZZtzPbuMZJM0j" - + "o4mVEdaFNJ0eUeMppS0DcbbuTWCF7Jf1gvr8GVqx+E0IJUFkE+D4kdTbnJSaeK0A" - + "KEt94z88MPX18h8ud14uRVmUCYVZrZeswdE2tO1BpazrXELHuXCtrjGxsDDjDzeP" - + "98aFI9kblkqoJS4TsmloLEjwZLm80cyJDEmpXXMtR7C0FFXFI1BAtIa4mxSgBLsT" - + "L4GVPEGNANR8COYkHQIDAQABo4GjMIGgMA4GA1UdDwEB/wQEAwIFoDAJBgNVHRME" - + "AjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAkBgNVHREEHTAbghlo" - + "dW5kcmVkLXllYXJzLmV4YW1wbGUuY29tMB8GA1UdIwQYMBaAFOGTt4H3ho30O4e+" - + "hebwJjm2VMvIMB0GA1UdDgQWBBThk7eB94aN9DuHvoXm8CY5tlTLyDANBgkqhkiG" - + "9w0BAQsFAAOCAQEAGp8mCioVCmM+kZv6r+K2j2uog1k4HBwN1NfRoSsibDB8+QXF" - + "bmNf3M0imiuR/KJgODyuROwaa/AalxNFMOP8XTL2YmP7XsddBs9ONHHQXKjY/Ojl" - + "PsIPR7vZjwYPfEB+XEKl2fOIxDQQ921POBV7M6DdTC49T5X+FsLR1AIIfinVetT9" - + "QmNuvzulBX0T0rea/qpcPK4HTj7ToyImOaf8sXRv2s2ODLUrKWu5hhTNH2l6RIkQ" - + "U/aIAdQRfDaSE9jhtcVu5d5kCgBs7nz5AzeCisDPo5zIt4Mxej3iVaAJ79oEbHOE" - + "p192KLXLV/pscA4Wgb+PJ8AAEa5B6xq8p9JO+Q=="; - - /** - * Stores the X.509 certificate. - */ - private X509Certificate x509Certificate; - - /** - * Setup before each test. - * - */ - @BeforeEach - public void setUp() { - try { - byte[] certificateBytes = Base64.getDecoder().decode(TEST_CERTIFICATE); - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - x509Certificate = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(certificateBytes)); - } catch (CertificateException e) { - throw new ProviderException(e); - } - } - - /** - * Test checkValidity method. - */ - @Test - public void testCheckValidity() { - try { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - certificate.checkValidity(); - } catch (CertificateExpiredException | CertificateNotYetValidException cnyve) { - fail(); - } - } - - /** - * Test checkValidity method. - */ - @Test - public void testCheckValidity2() { - try { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - certificate.checkValidity(new Date(100, Calendar.FEBRUARY, 1)); - fail(); - } catch (CertificateExpiredException ex) { - fail(); - } catch (CertificateNotYetValidException exception) { - // expecting this as the TEST_CERTIFICATE is not valid against given date. - } - } - - /** - * Test checkValidity method. - */ - @Test - public void testCheckValidity3() { - try { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - certificate.checkValidity(new Date(200, Calendar.FEBRUARY, 1)); - } catch (CertificateExpiredException | CertificateNotYetValidException exception) { - fail(); - } - } - - /** - * Test getBasicConstraints method. - */ - @Test - public void testGetBasicConstraints() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertEquals(-1, certificate.getBasicConstraints()); - } - - /** - * Test getCriticalExtensionOIDs method. - */ - @Test - public void testGetCriticalExtensionOIDs() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - Set criticalExtensions = certificate.getCriticalExtensionOIDs(); - assertFalse(criticalExtensions.isEmpty()); - assertTrue(criticalExtensions.contains("2.5.29.15")); - } - - /** - * Test getEncoded method. - */ - @Test - public void testGetEncoded() { - try { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNotNull(certificate.getEncoded()); - } catch (CertificateEncodingException cee) { - fail(); - } - } - - /** - * Test getExtensionValue method. - */ - @Test - public void testGetExtensionValue() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNotNull(certificate.getExtensionValue("2.5.29.15")); - } - - /** - * Test getIssuerDN method. - */ - @Test - public void testGetIssuerDN() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertEquals("CN=hundred-years.example.com", certificate.getIssuerDN().getName()); - } - - /** - * Test getIssuerUniqueID method. - */ - @Test - public void testGetIssuerUniqueID() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNull(certificate.getIssuerUniqueID()); - } - - /** - * Test getKeyUsage method. - */ - @Test - public void testGetKeyUsage() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNotNull(certificate.getKeyUsage()); - } - - /** - * Test getNonCriticalExtensionOIDs method. - */ - @Test - public void testGetNonCriticalExtensionOIDs() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - Set nonCriticalExtensions = certificate.getNonCriticalExtensionOIDs(); - assertFalse(nonCriticalExtensions.isEmpty()); - } - - /** - * Test getNotAfter method. - */ - @Test - public void testGetNotAfter() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - Date notAfter = certificate.getNotAfter(); - assertTrue(new Date().before(notAfter)); - } - - /** - * Test getNotBefore method. - */ - @Test - public void testGetNotBefore() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - Date notBefore = certificate.getNotBefore(); - assertTrue(new Date().after(notBefore)); - } - - /** - * Test getPublicKey method. - */ - @Test - public void testGetPublicKey() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNotNull(certificate.getPublicKey()); - } - - /** - * Test getSerialNumber method. - */ - @Test - public void testGetSerialNumber() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNotNull(certificate.getSerialNumber()); - } - - /** - * Test getSigAlgName method. - */ - @Test - public void testGetSigAlgName() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertEquals("SHA256withRSA", certificate.getSigAlgName()); - } - - /** - * Test getSigAlgOID method. - */ - @Test - public void testGetSigAlgOID() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertEquals("1.2.840.113549.1.1.11", certificate.getSigAlgOID()); - } - - /** - * Test getSigAlgParams method. - */ - @Test - public void testGetSigAlgParams() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNull(certificate.getSigAlgParams()); - } - - /** - * Test getSignature method. - */ - @Test - public void testGetSignature() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNotNull(certificate.getSignature()); - } - - /** - * Test getSubjectDN method. - */ - @Test - public void testGetSubjectDN() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertEquals("CN=hundred-years.example.com", certificate.getSubjectDN().getName()); - } - - /** - * Test getSubjectUniqueID method. - */ - @Test - public void testGetSubjectUniqueID() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNull(certificate.getSubjectUniqueID()); - } - - /** - * Test getTBSCertificate method. - */ - @Test - public void testGetTBSCertificate() { - try { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNotNull(certificate.getTBSCertificate()); - } catch (CertificateEncodingException cee) { - fail(); - } - } - - /** - * Test getVersion method. - */ - @Test - public void testGetVersion() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertEquals(3, certificate.getVersion()); - } - - /** - * Test hasUnsupportedCriticalExtension method. - */ - @Test - public void testHasUnsupportedCriticalExtension() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertFalse(certificate.hasUnsupportedCriticalExtension()); - } - - /** - * Test toString method. - */ - @Test - public void testToString() { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - assertNotNull(certificate.toString()); - } - - /** - * Test verify method. - */ - @Test - public void testVerify() { - try { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - PublicKey publicKey = certificate.getPublicKey(); - certificate.verify(publicKey); - } catch (CertificateException | NoSuchAlgorithmException - | InvalidKeyException | NoSuchProviderException - | SignatureException e) { - fail(); - } - } - - /** - * Test verify method. - */ - @Test - public void testVerify2() { - try { - KeyVaultCertificate certificate = new KeyVaultCertificate(x509Certificate); - PublicKey publicKey = certificate.getPublicKey(); - certificate.verify(publicKey, "SunRsaSign"); - } catch (CertificateException | NoSuchAlgorithmException - | InvalidKeyException | NoSuchProviderException - | SignatureException e) { - fail(); - } - } -} diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultJcaProviderTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultJcaProviderTest.java index 7940baa2c917..4fdd9ceaed87 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultJcaProviderTest.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultJcaProviderTest.java @@ -13,8 +13,6 @@ /** * The JUnit tests for the KeyVaultProvider class. - * - * @author Manfred Riem (manfred.riem@microsoft.com) */ public class KeyVaultJcaProviderTest { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultKeyStoreTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultKeyStoreTest.java index 1d016bf85f0a..073cfb99a4b4 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultKeyStoreTest.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultKeyStoreTest.java @@ -19,8 +19,6 @@ /** * The JUnit tests for the KeyVaultKeyStore class. - * - * @author Manfred Riem (manfred.riem@microsoft.com) */ public class KeyVaultKeyStoreTest { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultLoadStoreParameterTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultLoadStoreParameterTest.java index 727dca026e32..68912a740c48 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultLoadStoreParameterTest.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultLoadStoreParameterTest.java @@ -9,8 +9,6 @@ /** * The JUnit tests for the KeyVaultLoadStoreParameter class. - * - * @author Manfred Riem (manfred.riem@microsoft.com) */ public class KeyVaultLoadStoreParameterTest { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/LegacyRestClientTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/LegacyRestClientTest.java index 730a6867f19e..643930bbe643 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/LegacyRestClientTest.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/LegacyRestClientTest.java @@ -9,8 +9,6 @@ /** * The JUnit tests for the LegacyRestClient class. - * - * @author Manfred Riem (manfred.riem@microsoft.com) */ public class LegacyRestClientTest { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/RestClientFactoryTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/RestClientFactoryTest.java index c99550db7609..c22b88ebad91 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/RestClientFactoryTest.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/RestClientFactoryTest.java @@ -9,8 +9,6 @@ /** * The JUnit tests for the RestClientFactory class. - * - * @author Manfred Riem (manfred.riem@microsoft.com) */ public class RestClientFactoryTest { diff --git a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/ServerSocketTest.java b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/ServerSocketTest.java index 4b2f4c1e9f50..13690522dfb7 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/ServerSocketTest.java +++ b/sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/ServerSocketTest.java @@ -30,9 +30,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /** - * The unit test validating the ServerSocket is created using a certificate from Azure KeyVault. - * - * @author Manfred Riem (manfred.riem@microsoft.com) + * The unit test validating the ServerSocket is created using a certificate + * from Azure Key Vault. */ public class ServerSocketTest { @@ -53,7 +52,7 @@ public void testServerSocket() throws Exception { /* * Setup server side. * - * - Create an Azure KeyVault specific instance of a KeyStore. + * - Create an Azure Key Vault specific instance of a KeyStore. * - Set the KeyManagerFactory to use that KeyStore. * - Set the SSL context to use the KeyManagerFactory. * - Create the SSLServerSocket using th SSL context. @@ -158,7 +157,7 @@ public void testServerSocketWithSelfSignedClientTrust() throws Exception { /* * Setup server side. * - * - Create an Azure KeyVault specific instance of a KeyStore. + * - Create an Azure Key Vault specific instance of a KeyStore. * - Set the KeyManagerFactory to use that KeyStore. * - Set the SSL context to use the KeyManagerFactory. * - Create the SSLServerSocket using th SSL context. diff --git a/sdk/resourcemanager/azure-resourcemanager-appplatform/src/test/java/com/azure/resourcemanager/appplatform/SpringCloudLiveOnlyTest.java b/sdk/resourcemanager/azure-resourcemanager-appplatform/src/test/java/com/azure/resourcemanager/appplatform/SpringCloudLiveOnlyTest.java index e600066f9633..1d6af96dad10 100644 --- a/sdk/resourcemanager/azure-resourcemanager-appplatform/src/test/java/com/azure/resourcemanager/appplatform/SpringCloudLiveOnlyTest.java +++ b/sdk/resourcemanager/azure-resourcemanager-appplatform/src/test/java/com/azure/resourcemanager/appplatform/SpringCloudLiveOnlyTest.java @@ -3,21 +3,19 @@ package com.azure.resourcemanager.appplatform; +import com.azure.core.management.Region; import com.azure.core.test.annotation.DoNotRecord; import com.azure.resourcemanager.appplatform.models.RuntimeVersion; import com.azure.resourcemanager.appplatform.models.SpringApp; import com.azure.resourcemanager.appplatform.models.SpringAppDeployment; import com.azure.resourcemanager.appplatform.models.SpringService; -import com.azure.resourcemanager.appservice.models.AppServiceCertificateOrder; import com.azure.resourcemanager.appservice.models.AppServiceDomain; import com.azure.resourcemanager.dns.models.DnsZone; import com.azure.resourcemanager.keyvault.models.CertificatePermissions; -import com.azure.resourcemanager.keyvault.models.Secret; import com.azure.resourcemanager.keyvault.models.SecretPermissions; import com.azure.resourcemanager.keyvault.models.Vault; import com.azure.resourcemanager.resources.fluentcore.arm.CountryIsoCode; import com.azure.resourcemanager.resources.fluentcore.arm.CountryPhoneCode; -import com.azure.core.management.Region; import com.azure.security.keyvault.certificates.CertificateClient; import com.azure.security.keyvault.certificates.CertificateClientBuilder; import com.azure.security.keyvault.certificates.models.ImportCertificateOptions; @@ -28,19 +26,33 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; import javax.xml.bind.DatatypeConverter; +import java.io.BufferedReader; import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.security.KeyManagementException; import java.security.KeyStore; import java.security.MessageDigest; -import java.util.Base64; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; +import java.util.List; public class SpringCloudLiveOnlyTest extends AppPlatformTest { private static final String PIGGYMETRICS_CONFIG_URL = "https://github.com/Azure-Samples/piggymetrics-config"; @@ -150,6 +162,14 @@ public void canCreateCustomDomainWithSsl() throws Exception { String appName = "gateway"; Region region = Region.US_EAST; + allowAllSSL(); + String cerPassword = password(); + String cerPath = this.getClass().getResource("/").getPath() + domainName + ".cer"; + String pfxPath = this.getClass().getResource("/").getPath() + domainName + ".pfx"; + createCertificate(cerPath, pfxPath, domainName, cerPassword, "ssl." + domainName, "ssl." + domainName); + + byte[] certificate = readAllBytes(new FileInputStream(pfxPath)); + appPlatformManager.resourceManager().resourceGroups().define(rgName) .withRegion(region) .create(); @@ -178,17 +198,9 @@ public void canCreateCustomDomainWithSsl() throws Exception { .withExistingDnsZone(dnsZone) .create(); - AppServiceCertificateOrder certificateOrder = appServiceManager.certificateOrders().define(certOrderName) + Vault vault = keyVaultManager.vaults().define(vaultName) + .withRegion(region) .withExistingResourceGroup(rgName) - .withHostName(String.format("*.%s", domainName)) - .withWildcardSku() - .withDomainVerification(domain) - .withNewKeyVault(vaultName, region) - .withAutoRenew(true) - .create(); - - Vault vault = keyVaultManager.vaults().getByResourceGroup(rgName, vaultName); - vault.update() .defineAccessPolicy() .forServicePrincipal(clientIdFromFile()) .allowSecretAllPermissions() @@ -199,11 +211,7 @@ public void canCreateCustomDomainWithSsl() throws Exception { .allowCertificatePermissions(CertificatePermissions.GET, CertificatePermissions.LIST) .allowSecretPermissions(SecretPermissions.GET, SecretPermissions.LIST) .attach() - .apply(); - - Secret secret = vault.secrets().getByName(certOrderName); - - byte[] certificate = Base64.getDecoder().decode(secret.getValue()); + .create(); // upload certificate CertificateClient certificateClient = new CertificateClientBuilder() @@ -213,12 +221,13 @@ public void canCreateCustomDomainWithSsl() throws Exception { certificateClient.importCertificate( new ImportCertificateOptions(certName, certificate) + .setPassword(cerPassword) .setEnabled(true) ); // get thumbprint KeyStore store = KeyStore.getInstance("PKCS12"); - store.load(new ByteArrayInputStream(certificate), null); + store.load(new ByteArrayInputStream(certificate), cerPassword.toCharArray()); String alias = Collections.list(store.aliases()).get(0); String thumbprint = DatatypeConverter.printHexBinary(MessageDigest.getInstance("SHA-1").digest(store.getCertificate(alias).getEncoded())); @@ -275,4 +284,123 @@ private void extraTarGzSource(File folder, URL url) throws IOException { connection.disconnect(); } } + + private byte[] readAllBytes(InputStream inputStream) throws IOException { + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + byte[] data = new byte[4096]; + while (true) { + int size = inputStream.read(data); + if (size > 0) { + outputStream.write(data, 0, size); + } else { + return outputStream.toByteArray(); + } + } + } + } + + public static void createCertificate(String certPath, String pfxPath, + String alias, String password, String cnName, String dnsName) throws IOException { + if (new File(pfxPath).exists()) { + return; + } + String validityInDays = "3650"; + String keyAlg = "RSA"; + String sigAlg = "SHA1withRSA"; + String keySize = "2048"; + String storeType = "pkcs12"; + String command = "keytool"; + String jdkPath = System.getProperty("java.home"); + if (jdkPath != null && !jdkPath.isEmpty()) { + jdkPath = jdkPath.concat("\\bin"); + if (new File(jdkPath).isDirectory()) { + command = String.format("%s%s%s", jdkPath, File.separator, command); + } + } else { + return; + } + + // Create Pfx file + String[] commandArgs = {command, "-genkey", "-alias", alias, + "-keystore", pfxPath, "-storepass", password, "-validity", + validityInDays, "-keyalg", keyAlg, "-sigalg", sigAlg, "-keysize", keySize, + "-storetype", storeType, "-dname", "CN=" + cnName, "-ext", "EKU=1.3.6.1.5.5.7.3.1"}; + if (dnsName != null) { + List args = new ArrayList<>(Arrays.asList(commandArgs)); + args.add("-ext"); + args.add("san=dns:" + dnsName); + commandArgs = args.toArray(new String[0]); + } + cmdInvocation(commandArgs, true); + + // Create cer file i.e. extract public key from pfx + File pfxFile = new File(pfxPath); + if (pfxFile.exists()) { + String[] certCommandArgs = {command, "-export", "-alias", alias, + "-storetype", storeType, "-keystore", pfxPath, + "-storepass", password, "-rfc", "-file", certPath}; + // output of keytool export command is going to error stream + // although command is + // executed successfully, hence ignoring error stream in this case + cmdInvocation(certCommandArgs, true); + + // Check if file got created or not + File cerFile = new File(pfxPath); + if (!cerFile.exists()) { + throw new IOException( + "Error occurred while creating certificate" + + String.join(" ", certCommandArgs)); + } + } else { + throw new IOException("Error occurred while creating certificates" + + String.join(" ", commandArgs)); + } + } + + public static String cmdInvocation(String[] command, + boolean ignoreErrorStream) throws IOException { + String result = ""; + String error = ""; + + Process process = new ProcessBuilder(command).start(); + try ( + InputStream inputStream = process.getInputStream(); + InputStream errorStream = process.getErrorStream(); + BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); + BufferedReader ebr = new BufferedReader(new InputStreamReader(errorStream, StandardCharsets.UTF_8)); + ) { + result = br.readLine(); + process.waitFor(); + error = ebr.readLine(); + if (error != null && (!error.equals(""))) { + // To do - Log error message + + if (!ignoreErrorStream) { + throw new IOException(error, null); + } + } + } catch (Exception e) { + throw new RuntimeException("Exception occurred while invoking command", e); + } + return result; + } + + private static void allowAllSSL() throws NoSuchAlgorithmException, KeyManagementException { + TrustManager[] trustAllCerts = new TrustManager[]{ + new X509TrustManager() { + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return null; + } + public void checkClientTrusted( + java.security.cert.X509Certificate[] certs, String authType) { + } + public void checkServerTrusted( + java.security.cert.X509Certificate[] certs, String authType) { + } + } + }; + SSLContext sslContext = SSLContext.getInstance("SSL"); + sslContext.init(null, trustAllCerts, new SecureRandom()); + HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); + } } diff --git a/sdk/resourcemanager/azure-resourcemanager-resources/src/main/java/com/azure/resourcemanager/resources/fluentcore/AzureServiceClient.java b/sdk/resourcemanager/azure-resourcemanager-resources/src/main/java/com/azure/resourcemanager/resources/fluentcore/AzureServiceClient.java index 48a1a772f2db..b9687f8d558b 100644 --- a/sdk/resourcemanager/azure-resourcemanager-resources/src/main/java/com/azure/resourcemanager/resources/fluentcore/AzureServiceClient.java +++ b/sdk/resourcemanager/azure-resourcemanager-resources/src/main/java/com/azure/resourcemanager/resources/fluentcore/AzureServiceClient.java @@ -54,10 +54,15 @@ public abstract class AzureServiceClient { protected AzureServiceClient(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, AzureEnvironment environment) { - sdkName = this.getClass().getPackage().getName(); - this.httpPipeline = httpPipeline; this.serializerAdapter = serializerAdapter; + + String packageName = this.getClass().getPackage().getName(); + String implementationSegment = ".implementation"; + if (packageName.endsWith(implementationSegment)) { + packageName = packageName.substring(0, packageName.length() - implementationSegment.length()); + } + this.sdkName = packageName; } /** diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appplatform/samples/ManageSpringCloud.java b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appplatform/samples/ManageSpringCloud.java index 4cce0601d20c..5d477cfde58e 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appplatform/samples/ManageSpringCloud.java +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appplatform/samples/ManageSpringCloud.java @@ -187,19 +187,17 @@ // .withCNameRecordSet("ssl", gateway.fqdn()) // .apply(); // -// System.out.printf("Purchasing a certificate for *.%s and save to %s in key vault named %s ...%n", domainName, certOrderName, vaultName); -// AppServiceCertificateOrder certificateOrder = azureResourceManager.appServiceCertificateOrders().define(certOrderName) -// .withExistingResourceGroup(rgName) -// .withHostName(String.format("*.%s", domainName)) -// .withWildcardSku() -// .withDomainVerification(domain) -// .withNewKeyVault(vaultName, region) -// .withAutoRenew(true) -// .create(); -// System.out.printf("Purchased certificate: *.%s ...%n", domain.name()); -// Utils.print(certificateOrder); +// // Please use a trusted certificate for actual use +// System.out.printf("Generate a self-signed certificate for ssl.%s %n", domainName); +// allowAllSSL(); +// String cerPassword = password(); +// String cerPath = ManageSpringCloud.class.getResource("/").getPath() + domainName + ".cer"; +// String pfxPath = ManageSpringCloud.class.getClass().getResource("/").getPath() + domainName + ".pfx"; +// createCertificate(cerPath, pfxPath, domainName, cerPassword, "ssl." + domainName, "ssl." + domainName); +// +// byte[] certificate = readAllBytes(new FileInputStream(pfxPath)); // -// System.out.printf("Updating key vault %s with access from %s, %s%n", vaultName, clientId, SPRING_CLOUD_SERVICE_PRINCIPAL); +// System.out.printf("Creating key vault %s with access from %s, %s%n", vaultName, clientId, SPRING_CLOUD_SERVICE_PRINCIPAL); // Vault vault = azureResourceManager.vaults().getByResourceGroup(rgName, vaultName); // vault.update() // .defineAccessPolicy() @@ -213,20 +211,13 @@ // .allowSecretPermissions(SecretPermissions.GET, SecretPermissions.LIST) // .attach() // .apply(); -// System.out.printf("Updated key vault %s%n", vault.name()); +// System.out.printf("Created key vault %s%n", vault.name()); // Utils.print(vault); // -// Secret secret = vault.secrets().getByName(certOrderName); -// -// byte[] certificate = Base64.getDecoder().decode(secret.getValue()); -// -// String thumbprint = secret.tags().get("Thumbprint"); -// if (thumbprint == null || thumbprint.isEmpty()) { -// KeyStore store = KeyStore.getInstance("PKCS12"); -// store.load(new ByteArrayInputStream(certificate), null); -// String alias = Collections.list(store.aliases()).get(0); -// thumbprint = DatatypeConverter.printHexBinary(MessageDigest.getInstance("SHA-1").digest(store.getCertificate(alias).getEncoded())); -// } +// KeyStore store = KeyStore.getInstance("PKCS12"); +// store.load(new ByteArrayInputStream(certificate), cerPassword.toCharArray()); +// String alias = Collections.list(store.aliases()).get(0); +// thumbprint = DatatypeConverter.printHexBinary(MessageDigest.getInstance("SHA-1").digest(store.getCertificate(alias).getEncoded())); // // System.out.printf("Get certificate: %s%n", secret.getValue()); // System.out.printf("Certificate Thumbprint: %s%n", thumbprint); @@ -240,6 +231,7 @@ // System.out.printf("Uploading certificate to %s in key vault ...%n", certName); // certificateClient.importCertificate( // new ImportCertificateOptions(certName, certificate) +// .setPassword(cerPassword) // .setEnabled(true) // ); // @@ -323,4 +315,23 @@ // connection.disconnect(); // } // } +// +// private static void allowAllSSL() throws NoSuchAlgorithmException, KeyManagementException { +// TrustManager[] trustAllCerts = new TrustManager[]{ +// new X509TrustManager() { +// public java.security.cert.X509Certificate[] getAcceptedIssuers() { +// return null; +// } +// public void checkClientTrusted( +// java.security.cert.X509Certificate[] certs, String authType) { +// } +// public void checkServerTrusted( +// java.security.cert.X509Certificate[] certs, String authType) { +// } +// } +// }; +// SSLContext sslContext = SSLContext.getInstance("SSL"); +// sslContext.init(null, trustAllCerts, new SecureRandom()); +// HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); +// } //} diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageFunctionAppWithDomainSsl.java b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageFunctionAppWithDomainSsl.java index 6dff00bf7722..95b966ac3ea8 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageFunctionAppWithDomainSsl.java +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageFunctionAppWithDomainSsl.java @@ -120,7 +120,7 @@ public static boolean runSample(AzureResourceManager azureResourceManager) throw System.out.println("Creating a self-signed certificate " + pfxPath + "..."); - Utils.createCertificate(cerPath, pfxPath, domainName, certPassword, "*." + domainName); + Utils.createCertificate(cerPath, pfxPath, domainName, certPassword, "*." + domainName, null); System.out.println("Created self-signed certificate " + pfxPath); diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageLinuxWebAppWithDomainSsl.java b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageLinuxWebAppWithDomainSsl.java index 5f76377120ac..1b6278ba7d3c 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageLinuxWebAppWithDomainSsl.java +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageLinuxWebAppWithDomainSsl.java @@ -127,7 +127,7 @@ public static boolean runSample(AzureResourceManager azureResourceManager) throw System.out.println("Creating a self-signed certificate " + pfxPath + "..."); - Utils.createCertificate(cerPath, pfxPath, domainName, certPassword, "*." + domainName); + Utils.createCertificate(cerPath, pfxPath, domainName, certPassword, "*." + domainName, null); System.out.println("Created self-signed certificate " + pfxPath); diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageWebAppWithDomainSsl.java b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageWebAppWithDomainSsl.java index 6f778547430c..d60972ed3e07 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageWebAppWithDomainSsl.java +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/appservice/samples/ManageWebAppWithDomainSsl.java @@ -124,7 +124,7 @@ public static boolean runSample(AzureResourceManager azureResourceManager) throw System.out.println("Creating a self-signed certificate " + pfxPath + "..."); - Utils.createCertificate(cerPath, pfxPath, domainName, certPassword, "*." + domainName); + Utils.createCertificate(cerPath, pfxPath, domainName, certPassword, "*." + domainName, null); System.out.println("Created self-signed certificate " + pfxPath); diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/resources/samples/DeployUsingARMTemplateWithTags.java b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/resources/samples/DeployUsingARMTemplateWithTags.java index bc9e9671934f..533c501cb135 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/resources/samples/DeployUsingARMTemplateWithTags.java +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/resources/samples/DeployUsingARMTemplateWithTags.java @@ -144,7 +144,7 @@ private static String getTemplate(AzureResourceManager azureResourceManager) thr final String hostingPlanName = Utils.randomResourceName(azureResourceManager, "hpRSAT", 24); final String webappName = Utils.randomResourceName(azureResourceManager, "wnRSAT", 24); - try (InputStream embeddedTemplate = DeployUsingARMTemplateWithProgress.class.getResourceAsStream("/templateValue.json")) { + try (InputStream embeddedTemplate = DeployUsingARMTemplateWithTags.class.getResourceAsStream("/templateValue.json")) { final ObjectMapper mapper = new ObjectMapper(); final JsonNode tmp = mapper.readTree(embeddedTemplate); diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/resources/samples/DeployVirtualMachineUsingARMTemplate.java b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/resources/samples/DeployVirtualMachineUsingARMTemplate.java index 15fbd29c37b1..742864ffea64 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/resources/samples/DeployVirtualMachineUsingARMTemplate.java +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/resources/samples/DeployVirtualMachineUsingARMTemplate.java @@ -126,7 +126,7 @@ private static String getTemplate(AzureResourceManager azureResourceManager) thr final String adminPassword = Utils.password(); final String osDiskName = Utils.randomResourceName(azureResourceManager, "osdisk-", 24); - try (InputStream embeddedTemplate = DeployUsingARMTemplateWithProgress.class.getResourceAsStream("/virtualMachineWithManagedDisksTemplate.json")) { + try (InputStream embeddedTemplate = DeployVirtualMachineUsingARMTemplate.class.getResourceAsStream("/virtualMachineWithManagedDisksTemplate.json")) { final ObjectMapper mapper = new ObjectMapper(); final JsonNode tmp = mapper.readTree(embeddedTemplate); diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/samples/Utils.java b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/samples/Utils.java index f4e3e407c3e7..93a3eb756d96 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/samples/Utils.java +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/samples/Utils.java @@ -166,6 +166,7 @@ import java.time.Duration; import java.time.temporal.ChronoUnit; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; @@ -1589,11 +1590,12 @@ public static String getSecondaryServicePrincipalSecret(String envSecondaryServi * @param alias User alias * @param password alias password * @param cnName domain name + * @param dnsName dns name in subject alternate name * @throws Exception exceptions from the creation * @throws IOException IO Exception */ - public static void createCertificate(String certPath, String pfxPath, - String alias, String password, String cnName) throws IOException { + public static void createCertificate(String certPath, String pfxPath, String alias, + String password, String cnName, String dnsName) throws IOException { if (new File(pfxPath).exists()) { return; } @@ -1618,6 +1620,12 @@ public static void createCertificate(String certPath, String pfxPath, "-keystore", pfxPath, "-storepass", password, "-validity", validityInDays, "-keyalg", keyAlg, "-sigalg", sigAlg, "-keysize", keySize, "-storetype", storeType, "-dname", "CN=" + cnName, "-ext", "EKU=1.3.6.1.5.5.7.3.1"}; + if (dnsName != null) { + List args = new ArrayList<>(Arrays.asList(commandArgs)); + args.add("-ext"); + args.add("san=dns:" + dnsName); + commandArgs = args.toArray(new String[0]); + } Utils.cmdInvocation(commandArgs, true); // Create cer file i.e. extract public key from pfx diff --git a/sdk/resourcemanager/docs/SAMPLE.md b/sdk/resourcemanager/docs/SAMPLE.md index 6a803f651f7a..38aa49b76a5d 100644 --- a/sdk/resourcemanager/docs/SAMPLE.md +++ b/sdk/resourcemanager/docs/SAMPLE.md @@ -84,46 +84,46 @@ You can create a virtual machine scale set instance by using a `define() … cre Virtual Machines Virtual Machines - parallel execution Virtual Machine Scale Sets @@ -208,20 +208,20 @@ ApplicationGateway applicationGateway = azure.applicationGateways().define("myFi Networking @@ -229,22 +229,22 @@ ApplicationGateway applicationGateway = azure.applicationGateways().define("myFi DNS Application Gateway Express Route @@ -277,30 +277,30 @@ WebApp webApp = azure.webApps() Web Apps on Windows Web Apps on Linux @@ -309,11 +309,11 @@ WebApp webApp = azure.webApps() Functions @@ -378,9 +378,9 @@ SqlDatabase database = azure.sqlServers().databases().define("myNewDatabase") Storage @@ -405,11 +405,11 @@ SqlDatabase database = azure.sqlServers().databases().define("myNewDatabase") Cosmos DB @@ -426,10 +426,10 @@ SqlDatabase database = azure.sqlServers().databases().define("myNewDatabase") Active Directory @@ -438,9 +438,9 @@ SqlDatabase database = azure.sqlServers().databases().define("myNewDatabase")
  • Manage container registry
  • Manage container registry with Web hooks
  • -
  • Manage Kubernetes cluster (AKS)
  • +
  • Manage Kubernetes cluster (AKS)
  • Deploy an image from container registry to Kubernetes cluster (AKS)
  • -
  • Manage Kubernetes clusters with advanced networking
  • +
  • Manage Kubernetes clusters with advanced networking
  • Key Vault Monitor diff --git a/sdk/spring/azure-spring-boot-samples/azure-spring-boot-sample-active-directory/src/main/java/com/azure/spring/sample/aad/controller/TodoListController.java b/sdk/spring/azure-spring-boot-samples/azure-spring-boot-sample-active-directory/src/main/java/com/azure/spring/sample/aad/controller/TodoListController.java index f17af46fda28..4a2f001b5186 100644 --- a/sdk/spring/azure-spring-boot-samples/azure-spring-boot-sample-active-directory/src/main/java/com/azure/spring/sample/aad/controller/TodoListController.java +++ b/sdk/spring/azure-spring-boot-samples/azure-spring-boot-sample-active-directory/src/main/java/com/azure/spring/sample/aad/controller/TodoListController.java @@ -5,7 +5,7 @@ import com.azure.spring.sample.aad.model.TodoItem; import com.azure.spring.autoconfigure.aad.AADAuthenticationProperties; -import com.azure.spring.autoconfigure.aad.MemberShip; +import com.azure.spring.autoconfigure.aad.Membership; import com.azure.spring.autoconfigure.aad.UserPrincipal; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -96,11 +96,11 @@ public ResponseEntity updateTodoItem(@RequestBody TodoItem item) { public ResponseEntity deleteTodoItem(@PathVariable("id") int id, PreAuthenticatedAuthenticationToken authToken) { final UserPrincipal current = (UserPrincipal) authToken.getPrincipal(); - MemberShip memberShip = new MemberShip( + Membership membership = new Membership( "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", - MemberShip.OBJECT_TYPE_GROUP, + Membership.OBJECT_TYPE_GROUP, "group1"); - if (current.isMemberOf(aadAuthenticationProperties, memberShip.getDisplayName())) { + if (current.isMemberOf(aadAuthenticationProperties, membership.getDisplayName())) { return todoList.stream() .filter(i -> i.getID() == id) .findFirst() diff --git a/sdk/spring/azure-spring-boot-samples/azure-spring-boot-sample-keyvault-certificates/src/main/resources/application.properties b/sdk/spring/azure-spring-boot-samples/azure-spring-boot-sample-keyvault-certificates/src/main/resources/application.properties index 932545d08d83..5f83c4b43b25 100644 --- a/sdk/spring/azure-spring-boot-samples/azure-spring-boot-sample-keyvault-certificates/src/main/resources/application.properties +++ b/sdk/spring/azure-spring-boot-samples/azure-spring-boot-sample-keyvault-certificates/src/main/resources/application.properties @@ -1,20 +1,20 @@ -# The URI to the Azure KeyVault used +# The URI to the Azure Key Vault used azure.keyvault.uri=${AZURE_KEYVAULT_URI} -# The alias corresponding to the certificate in Azure KeyVault. +# The alias corresponding to the certificate in Azure Key Vault. server.ssl.key-alias=${SERVER_SSL_KEY_ALIAS} -# The keystore type that enables the use of Azure KeyVault for your server-side +# The keystore type that enables the use of Azure Key Vault for your server-side # SSL certificate. server.ssl.key-store-type=AzureKeyVault -# The truststore type that enables the use of Azure KeyVault for trusted +# The truststore type that enables the use of Azure Key Vault for trusted # certificates, a.k.a the ones you trust when making an outbound SSL connection # server.ssl.trust-store-type=AzureKeyVault -# The Tenant ID for your Azure KeyVault (needed if you are not using managed +# The Tenant ID for your Azure Key Vault (needed if you are not using managed # identity). azure.keyvault.tenantId=${AZURE_KEYVAULT_TENTANT_ID} -# The Client ID that has been setup with access to your Azure KeyVault (needed +# The Client ID that has been setup with access to your Azure Key Vault (needed # if you are not using managed identity). azure.keyvault.clientId=${AZURE_KEYVAULT_CLIENT_ID} -# The Client Secret that will be used for accessing your Azure KeyVault (needed +# The Client Secret that will be used for accessing your Azure Key Vault (needed # if you are not using managed identity). azure.keyvault.clientSecret=${AZURE_KEYVAULT_CLIENT_SECRET} # The server port. diff --git a/sdk/spring/azure-spring-boot-starter-keyvault-certificates/README.md b/sdk/spring/azure-spring-boot-starter-keyvault-certificates/README.md index e32959f329f4..24f5341cc998 100644 --- a/sdk/spring/azure-spring-boot-starter-keyvault-certificates/README.md +++ b/sdk/spring/azure-spring-boot-starter-keyvault-certificates/README.md @@ -5,16 +5,16 @@ ### Using a managed identity To use the starter for server side SSL, you will need to add the following to -your application.properties (if the application is using Spring Cloud Config -Server for its configuration add it to the bootstrap.yml of the application) +your `application.properties` (if the application is using Spring Cloud Config +Server for its configuration add it to the `bootstrap.yml` of the application) ``` -azure.keyvault.uri= -server.ssl.key-alias= +azure.keyvault.uri= +server.ssl.key-alias= server.ssl.key-store-type=AzureKeyVault ``` -Note: make sure the managed identity has access to the Azure KeyVault to access +Note: make sure the managed identity has access to the Azure Key Vault to access keys, secrets and certificates. Add then add the following Maven dependency to your POM file. @@ -29,19 +29,19 @@ Add then add the following Maven dependency to your POM file. ### Using a client ID and client secret To use the starter for server side SSL, you will need to add the following to -your application.properties (if the application is using Spring Cloud Config -Server for its configuration add it to the bootstrap.yml of the application) +your `application.properties` (if the application is using Spring Cloud Config +Server for its configuration add it to the `bootstrap.yml` of the application) ``` -azure.keyvault.uri= +azure.keyvault.uri= azure.keyvault.tenantId= -azure.keyvault.clientId= +azure.keyvault.clientId= azure.keyvault.clientSecret= -server.ssl.key-alias= +server.ssl.key-alias= server.ssl.key-store-type=AzureKeyVault ``` -Note: make sure the client ID has access to the Azure KeyVault to access +Note: make sure the client ID has access to the Azure Key Vault to access keys, secrets and certificates. Add then add the following Maven dependency to your POM file. @@ -58,13 +58,13 @@ Add then add the following Maven dependency to your POM file. ### Using a managed identity To use the starter for client side SSL, you will need to add the following to -your application.properties (if the application is using Spring Cloud Config -Server for its configuration add it to the bootstrap.yml of the application) +your `application.properties` (if the application is using Spring Cloud Config +Server for its configuration add it to the `bootstrap.yml` of the application) ``` -azure.keyvault.uri= +azure.keyvault.uri= ``` -Note: make sure the managed identity has access to the Azure KeyVault to access +Note: make sure the managed identity has access to the Azure Key Vault to access keys, secrets and certificates. Add then add the following Maven dependency to your POM file. @@ -76,7 +76,7 @@ Add then add the following Maven dependency to your POM file. ``` -If you are using RestTemplate use code similar to the example below. +If you are using `RestTemplate` use code similar to the example below. ```java @Bean @@ -104,17 +104,17 @@ If you are using RestTemplate use code similar to the example below. ### Using a client ID and client secret To use the starter for client side SSL, you will need to add the following to -your application.properties (if the application is using Spring Cloud Config -Server for its configuration add it to the bootstrap.yml of the application) +your `application.properties` (if the application is using Spring Cloud Config +Server for its configuration add it to the `bootstrap.yml` of the application) ``` -azure.keyvault.uri= +azure.keyvault.uri= azure.keyvault.tenantId= -azure.keyvault.clientId= +azure.keyvault.clientId= azure.keyvault.clientSecret= ``` -Note: make sure the client ID has access to the Azure KeyVault to access +Note: make sure the client ID has access to the Azure Key Vault to access keys, secrets and certificates. Add then add the following Maven dependency to your POM file. @@ -126,7 +126,7 @@ Add then add the following Maven dependency to your POM file. ``` -Then if you are using RestTemplate use the code below as a starting +Then if you are using `RestTemplate` use the code below as a starting point: ```java @@ -161,7 +161,7 @@ to add the following configuration: ```yaml azure: keyvault: - uri: + uri: jca: overrideTrustManagerFactory: true ``` @@ -180,8 +180,8 @@ azure: ``` If you are developing you can completely disable the certificate and hostname -validation altogether by using the configuration below. Note this is NOT -recommended for production! +validation altogether by using the configuration below. **Note this is NOT +recommended for production!** ```yaml spring: @@ -194,7 +194,7 @@ spring: ## Creating an Azure Key Vault -To create an Azure KeyVault use the command line below: +To create an Azure Key Vault use the command line below: ```shell export KEY_VAULT=mykeyvault @@ -246,14 +246,14 @@ Notes: 1. The alias (certificate name) is constructed from the filename of the certificate (minus the extension). So if your filename is `mycert.x509` the certificate will be added with the alias of `mycert`. -2. Certificates coming from Azure KeyVault take precedence over +2. Certificates coming from Azure Key Vault take precedence over side-loaded certificates. ## Testing the current version under development If you want to test the current version under development you will have to -1. Build and install the [Microsoft Azure JCA Provider] for KeyVault +1. Build and install the [Azure Key Vault JCA client library for Java](https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/keyvault/azure-security-keyvault-jca/README.md) 1. Build and install this starter. To build and install the starter use the following command line: @@ -263,7 +263,7 @@ To build and install the starter use the following command line: ``` -# Azure KeyVault Certificates client library for Java +# Azure Key Vault Certificates client library for Java # Getting started diff --git a/sdk/spring/azure-spring-boot-starter-keyvault-certificates/src/main/java/com/azure/spring/security/keyvault/certificates/starter/KeyVaultCertificatesEnvironmentPostProcessor.java b/sdk/spring/azure-spring-boot-starter-keyvault-certificates/src/main/java/com/azure/spring/security/keyvault/certificates/starter/KeyVaultCertificatesEnvironmentPostProcessor.java index 6d76e12b4619..b1e9a2504ac7 100644 --- a/sdk/spring/azure-spring-boot-starter-keyvault-certificates/src/main/java/com/azure/spring/security/keyvault/certificates/starter/KeyVaultCertificatesEnvironmentPostProcessor.java +++ b/sdk/spring/azure-spring-boot-starter-keyvault-certificates/src/main/java/com/azure/spring/security/keyvault/certificates/starter/KeyVaultCertificatesEnvironmentPostProcessor.java @@ -7,7 +7,6 @@ import java.security.Security; import java.util.Properties; -import java.util.logging.Logger; import javax.net.ssl.HttpsURLConnection; import org.springframework.boot.SpringApplication; @@ -22,11 +21,6 @@ @Order(LOWEST_PRECEDENCE) public class KeyVaultCertificatesEnvironmentPostProcessor implements EnvironmentPostProcessor { - /** - * Stores the logger. - */ - private static final Logger LOGGER = Logger.getLogger(KeyVaultCertificatesEnvironmentPostProcessor.class.getName()); - @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { @@ -100,9 +94,7 @@ public void postProcessEnvironment(ConfigurableEnvironment environment, enabled = environment.getProperty("azure.keyvault.jca.disableHostnameVerification"); if (Boolean.parseBoolean(enabled)) { - HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> { - return true; - }); + HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true); } } } diff --git a/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/AADAuthenticationProperties.java b/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/AADAuthenticationProperties.java index 02cce164facd..9f02a1d0e583 100644 --- a/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/AADAuthenticationProperties.java +++ b/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/AADAuthenticationProperties.java @@ -136,7 +136,7 @@ public static class UserGroupProperties { * Node is a UserGroup. */ @NotEmpty - private String value = MemberShip.OBJECT_TYPE_GROUP; + private String value = Membership.OBJECT_TYPE_GROUP; /** * Key of the JSON Node containing the Azure Object ID for the {@code UserGroup}. diff --git a/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/AzureADGraphClient.java b/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/AzureADGraphClient.java index c85e50a73f85..9fe91e8ea36d 100644 --- a/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/AzureADGraphClient.java +++ b/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/AzureADGraphClient.java @@ -122,22 +122,22 @@ public Set getGroups(String graphApiToken) throws IOException { String aadMembershipRestUri = serviceEndpoints.getAadMembershipRestUri(); while (aadMembershipRestUri != null) { String membershipsJson = getUserMemberships(graphApiToken, aadMembershipRestUri); - MemberShips memberShips = objectMapper.readValue(membershipsJson, MemberShips.class); - memberShips.getValue() + Memberships memberships = objectMapper.readValue(membershipsJson, Memberships.class); + memberships.getValue() .stream() .filter(this::isGroupObject) - .map(MemberShip::getDisplayName) + .map(Membership::getDisplayName) .forEach(groups::add); - aadMembershipRestUri = Optional.of(memberShips) - .map(MemberShips::getOdataNextLink) + aadMembershipRestUri = Optional.of(memberships) + .map(Memberships::getOdataNextLink) .map(this::getUrlStringFromODataNextLink) .orElse(null); } return groups; } - private boolean isGroupObject(final MemberShip memberShip) { - return memberShip.getObjectType().equals(aadAuthenticationProperties.getUserGroup().getValue()); + private boolean isGroupObject(final Membership membership) { + return membership.getObjectType().equals(aadAuthenticationProperties.getUserGroup().getValue()); } /** diff --git a/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/MemberShip.java b/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/Membership.java similarity index 91% rename from sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/MemberShip.java rename to sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/Membership.java index 043f9650f66f..9911094a1ab8 100644 --- a/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/MemberShip.java +++ b/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/Membership.java @@ -16,7 +16,7 @@ * Refs: https://docs.microsoft.com/en-us/previous-versions/azure/ad/graph/api/api-catalog */ @JsonIgnoreProperties(ignoreUnknown = true) -public class MemberShip implements Serializable { +public class Membership implements Serializable { private static final long serialVersionUID = 9064197572478554735L; public static final String OBJECT_TYPE_GROUP = "Group"; @@ -25,7 +25,7 @@ public class MemberShip implements Serializable { private final String displayName; @JsonCreator - public MemberShip( + public Membership( @JsonProperty("objectId") @JsonAlias("id") String objectID, @JsonProperty("objectType") @JsonAlias("@odata.type") String objectType, @JsonProperty("displayName") String displayName) { @@ -51,10 +51,10 @@ public boolean equals(Object o) { if (o == this) { return true; } - if (!(o instanceof MemberShip)) { + if (!(o instanceof Membership)) { return false; } - final MemberShip group = (MemberShip) o; + final Membership group = (Membership) o; return this.getDisplayName().equals(group.getDisplayName()) && this.getObjectID().equals(group.getObjectID()) && this.getObjectType().equals(group.getObjectType()); diff --git a/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/MemberShips.java b/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/Memberships.java similarity index 81% rename from sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/MemberShips.java rename to sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/Memberships.java index 6f6e3ba66925..08be48301dce 100644 --- a/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/MemberShips.java +++ b/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/aad/Memberships.java @@ -15,15 +15,15 @@ * Refs: https://docs.microsoft.com/en-us/previous-versions/azure/ad/graph/api/api-catalog */ @JsonIgnoreProperties(ignoreUnknown = true) -public class MemberShips { +public class Memberships { private final String odataNextLink; - private final List value; + private final List value; @JsonCreator - public MemberShips( + public Memberships( @JsonProperty("odata.nextLink") String odataNextLink, - @JsonProperty("value") List value) { + @JsonProperty("value") List value) { this.odataNextLink = odataNextLink; this.value = value; } @@ -32,7 +32,7 @@ public String getOdataNextLink() { return odataNextLink; } - public List getValue() { + public List getValue() { return value; } @@ -41,10 +41,10 @@ public boolean equals(Object o) { if (o == this) { return true; } - if (!(o instanceof MemberShips)) { + if (!(o instanceof Memberships)) { return false; } - final MemberShips groups = (MemberShips) o; + final Memberships groups = (Memberships) o; return this.getOdataNextLink().equals(groups.getOdataNextLink()) && this.getValue().equals(groups.getValue()); } diff --git a/sdk/spring/azure-spring-boot/src/test/java/com/azure/spring/autoconfigure/aad/MemberShipTest.java b/sdk/spring/azure-spring-boot/src/test/java/com/azure/spring/autoconfigure/aad/MembershipTest.java similarity index 63% rename from sdk/spring/azure-spring-boot/src/test/java/com/azure/spring/autoconfigure/aad/MemberShipTest.java rename to sdk/spring/azure-spring-boot/src/test/java/com/azure/spring/autoconfigure/aad/MembershipTest.java index 0dafd27e0abd..8c27525c463e 100644 --- a/sdk/spring/azure-spring-boot/src/test/java/com/azure/spring/autoconfigure/aad/MemberShipTest.java +++ b/sdk/spring/azure-spring-boot/src/test/java/com/azure/spring/autoconfigure/aad/MembershipTest.java @@ -6,8 +6,8 @@ import org.junit.Assert; import org.junit.Test; -public class MemberShipTest { - private static final MemberShip GROUP_1 = new MemberShip("12345", MemberShip.OBJECT_TYPE_GROUP, "test"); +public class MembershipTest { + private static final Membership GROUP_1 = new Membership("12345", Membership.OBJECT_TYPE_GROUP, "test"); @Test public void getDisplayName() { @@ -16,7 +16,7 @@ public void getDisplayName() { @Test public void getObjectType() { - Assert.assertEquals(MemberShip.OBJECT_TYPE_GROUP, GROUP_1.getObjectType()); + Assert.assertEquals(Membership.OBJECT_TYPE_GROUP, GROUP_1.getObjectType()); } @Test @@ -26,13 +26,13 @@ public void getObjectID() { @Test public void equals() { - final MemberShip group2 = new MemberShip("12345", MemberShip.OBJECT_TYPE_GROUP, "test"); + final Membership group2 = new Membership("12345", Membership.OBJECT_TYPE_GROUP, "test"); Assert.assertEquals(GROUP_1, group2); } @Test public void hashCodeTest() { - final MemberShip group2 = new MemberShip("12345", MemberShip.OBJECT_TYPE_GROUP, "test"); + final Membership group2 = new Membership("12345", Membership.OBJECT_TYPE_GROUP, "test"); Assert.assertEquals(GROUP_1.hashCode(), group2.hashCode()); } } diff --git a/sdk/storage/azure-storage-blob/CHANGELOG.md b/sdk/storage/azure-storage-blob/CHANGELOG.md index b37dd0b02439..e4d89e6be650 100644 --- a/sdk/storage/azure-storage-blob/CHANGELOG.md +++ b/sdk/storage/azure-storage-blob/CHANGELOG.md @@ -1,7 +1,7 @@ # Release History ## 12.9.0-beta.3 (Unreleased) - +- Fixed a bug where interspersed element types returned by page listing would deserialize incorrectly. ## 12.9.0-beta.2 (2020-10-08) - Added support to specify whether or not a pipeline policy should be added per call or per retry. diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/PageList.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/PageList.java index 6df08b4bc9af..c2f1729e5b6d 100644 --- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/PageList.java +++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/PageList.java @@ -6,7 +6,9 @@ import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; + import java.util.ArrayList; import java.util.List; @@ -15,6 +17,7 @@ */ @JacksonXmlRootElement(localName = "PageList") @Fluent +@JsonDeserialize(using = PageListDeserializer.class) public final class PageList { /* * The pageRange property. diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/PageListDeserializer.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/PageListDeserializer.java new file mode 100644 index 000000000000..d2832b599581 --- /dev/null +++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/PageListDeserializer.java @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.storage.blob.models; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.JsonTokenId; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; +import java.util.ArrayList; + +/** + * Custom Jackson JsonDeserializer that handles deserializing PageList responses. + *

    + * PageList responses intersperse PageRange and ClearRange elements, without this deserializer if we received the + * following response the resulting PageList would only contain one PageRange element and one ClearRange element. + * + *

    + * {@code
    + * 
    + * 
    + *    
    + *       Start Byte
    + *       End Byte
    + *    
    + *    
    + *       Start Byte
    + *       End Byte
    + *    
    + *    
    + *       Start Byte
    + *       End Byte
    + *    
    + * 
    + * }
    + * 
    + * + * With the custom deserializer the response correctly returns two PageRange elements and one ClearRange element. + */ +final class PageListDeserializer extends JsonDeserializer { + @Override + public PageList deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + ArrayList pageRanges = new ArrayList<>(); + ArrayList clearRanges = new ArrayList<>(); + + // Get the deserializer that handles PageRange. + JsonDeserializer pageRangeDeserializer = + ctxt.findRootValueDeserializer(ctxt.constructType(PageRange.class)); + + // Get the deserializer that handles ClearRange. + JsonDeserializer clearRangeDeserializer = + ctxt.findRootValueDeserializer(ctxt.constructType(ClearRange.class)); + + for (JsonToken currentToken = p.nextToken(); currentToken.id() != JsonTokenId.ID_END_OBJECT; + currentToken = p.nextToken()) { + // Get to the root element of the next item. + p.nextToken(); + + if (p.getCurrentName().equals("PageRange")) { + // Current token is the node that begins a PageRange object. + pageRanges.add((PageRange) pageRangeDeserializer.deserialize(p, ctxt)); + } else if (p.getCurrentName().equals("ClearRange")) { + // Current token is the node that begins a ClearRange object. + clearRanges.add((ClearRange) clearRangeDeserializer.deserialize(p, ctxt)); + } + } + + return new PageList().setPageRange(pageRanges).setClearRange(clearRanges); + } +} diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy index 5fe929e0804f..f4fe36c310be 100644 --- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy +++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy @@ -3,11 +3,14 @@ package com.azure.storage.blob.specialized +import com.azure.core.util.serializer.JacksonAdapter +import com.azure.core.util.serializer.SerializerEncoding import com.azure.storage.blob.APISpec import com.azure.storage.blob.BlobContainerAsyncClient import com.azure.storage.blob.BlobUrlParts import com.azure.storage.blob.implementation.util.BlobSasImplUtil import com.azure.storage.blob.models.BlobRange +import com.azure.storage.blob.models.PageList import com.azure.storage.blob.sas.BlobSasPermission import com.azure.storage.blob.sas.BlobSasServiceVersion import com.azure.storage.blob.sas.BlobServiceSasSignatureValues @@ -142,4 +145,30 @@ class HelperTest extends APISpec { .assertNext(){buffer -> assert buffer.compareTo(ByteBuffer.wrap(data)) == 0 } .verifyComplete() } + + def "PageList custom deserializer"() { + setup: + def responseXml = " \n" + + " \n" + + " \n" + + " 0 \n" + + " 511 \n" + + " \n" + + " \n" + + " 512 \n" + + " 1023 \n" + + " \n" + + " \n" + + " 1024 \n" + + " 2047 \n" + + " \n" + + "" + + when: + def pageList = (PageList) new JacksonAdapter().deserialize(responseXml, PageList.class, SerializerEncoding.XML) + + then: + pageList.getPageRange().size() == 2 + pageList.getClearRange().size() == 1 + } } diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/PageBlobAPITest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/PageBlobAPITest.groovy index e4973a38e9c8..e593df2d90e6 100644 --- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/PageBlobAPITest.groovy +++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/PageBlobAPITest.groovy @@ -4,22 +4,25 @@ package com.azure.storage.blob.specialized import com.azure.core.exception.UnexpectedLengthException +import com.azure.core.util.CoreUtils import com.azure.storage.blob.APISpec import com.azure.storage.blob.BlobContainerClient -import com.azure.storage.blob.models.PageBlobCopyIncrementalRequestConditions import com.azure.storage.blob.models.BlobErrorCode import com.azure.storage.blob.models.BlobHttpHeaders import com.azure.storage.blob.models.BlobRange import com.azure.storage.blob.models.BlobRequestConditions import com.azure.storage.blob.models.BlobStorageException +import com.azure.storage.blob.models.ClearRange import com.azure.storage.blob.models.CopyStatusType -import com.azure.storage.blob.options.BlobGetTagsOptions -import com.azure.storage.blob.options.PageBlobCopyIncrementalOptions -import com.azure.storage.blob.options.PageBlobCreateOptions +import com.azure.storage.blob.models.PageBlobCopyIncrementalRequestConditions import com.azure.storage.blob.models.PageBlobRequestConditions import com.azure.storage.blob.models.PageRange import com.azure.storage.blob.models.PublicAccessType import com.azure.storage.blob.models.SequenceNumberActionType +import com.azure.storage.blob.options.BlobGetTagsOptions +import com.azure.storage.blob.options.PageBlobCopyIncrementalOptions +import com.azure.storage.blob.options.PageBlobCreateOptions +import com.azure.storage.common.implementation.Constants import spock.lang.Ignore import spock.lang.Unroll @@ -196,7 +199,7 @@ class PageBlobAPITest extends APISpec { null | null | garbageEtag | null | null | null null | null | null | receivedEtag | null | null null | null | null | null | garbageLeaseID | null - null | null | null | null | null | "\"notfoo\" = 'notbar'" + null | null | null | null | null | "\"notfoo\" = 'notbar'" } def "Create error"() { @@ -756,7 +759,7 @@ class PageBlobAPITest extends APISpec { null | null | garbageEtag | null | null | null null | null | null | receivedEtag | null | null null | null | null | null | garbageLeaseID | null - null | null | null | null | null | "\"notfoo\" = 'notbar'" + null | null | null | null | null | "\"notfoo\" = 'notbar'" } def "Get page ranges error"() { @@ -770,32 +773,81 @@ class PageBlobAPITest extends APISpec { thrown(BlobStorageException) } + @Unroll def "Get page ranges diff"() { setup: - bc.create(PageBlobClient.PAGE_BYTES * 2, true) + bc.create(4 * Constants.MB, true) - bc.uploadPages(new PageRange().setStart(PageBlobClient.PAGE_BYTES).setEnd(PageBlobClient.PAGE_BYTES * 2 - 1), - new ByteArrayInputStream(getRandomByteArray(PageBlobClient.PAGE_BYTES))) + bc.uploadPages(new PageRange().setStart(0).setEnd(4 * Constants.MB - 1), + new ByteArrayInputStream(getRandomByteArray(4 * Constants.MB))) def snapId = bc.createSnapshot().getSnapshotId() - bc.uploadPages(new PageRange().setStart(0).setEnd(PageBlobClient.PAGE_BYTES - 1), - new ByteArrayInputStream(getRandomByteArray(PageBlobClient.PAGE_BYTES))) + rangesToUpdate.forEach({ + bc.uploadPages(it, new ByteArrayInputStream(getRandomByteArray((int) (it.getEnd() - it.getStart()) + 1))) + }) - bc.clearPages(new PageRange().setStart(PageBlobClient.PAGE_BYTES).setEnd(PageBlobClient.PAGE_BYTES * 2 - 1)) + rangesToClear.forEach({ bc.clearPages(it) }) when: - def response = bc.getPageRangesDiffWithResponse(new BlobRange(0, PageBlobClient.PAGE_BYTES * 2), snapId, null, null, null) + def response = bc.getPageRangesDiffWithResponse(new BlobRange(0, 4 * Constants.MB), snapId, null, null, null) then: - response.getValue().getPageRange().size() == 1 - response.getValue().getPageRange().get(0).getStart() == 0 - response.getValue().getPageRange().get(0).getEnd() == PageBlobClient.PAGE_BYTES - 1 - response.getValue().getClearRange().size() == 1 - response.getValue().getClearRange().get(0).getStart() == PageBlobClient.PAGE_BYTES - response.getValue().getClearRange().get(0).getEnd() == PageBlobClient.PAGE_BYTES * 2 - 1 validateBasicHeaders(response.getHeaders()) - Integer.parseInt(response.getHeaders().getValue("x-ms-blob-content-length")) == PageBlobClient.PAGE_BYTES * 2 + response.getValue().getPageRange().size() == expectedPageRanges.size() + response.getValue().getClearRange().size() == expectedClearRanges.size() + + for (def i = 0; i < expectedPageRanges.size(); i++) { + def actualRange = response.getValue().getPageRange().get(i) + def expectedRange = expectedPageRanges.get(i) + expectedRange.getStart() == actualRange.getStart() + expectedRange.getEnd() == actualRange.getEnd() + } + + for (def i = 0; i < expectedClearRanges.size(); i++) { + def actualRange = response.getValue().getClearRange().get(i) + def expectedRange = expectedClearRanges.get(i) + expectedRange.getStart() == actualRange.getStart() + expectedRange.getEnd() == actualRange.getEnd() + } + + Integer.parseInt(response.getHeaders().getValue("x-ms-blob-content-length")) == 4 * Constants.MB + + where: + rangesToUpdate | rangesToClear | expectedPageRanges | expectedClearRanges + createPageRanges() | createPageRanges() | createPageRanges() | createClearRanges() + createPageRanges(0, 511) | createPageRanges() | createPageRanges(0, 511) | createClearRanges() + createPageRanges() | createPageRanges(0, 511) | createPageRanges() | createClearRanges(0, 511) + createPageRanges(0, 511) | createPageRanges(512, 1023) | createPageRanges(0, 511) | createClearRanges(512, 1023) + createPageRanges(0, 511, 1024, 1535) | createPageRanges(512, 1023, 1536, 2047) | createPageRanges(0, 511, 1024, 1535) | createClearRanges(512, 1023, 1536, 2047) + } + + static def createPageRanges(long... offsets) { + def pageRanges = [] as List + + if (CoreUtils.isNullOrEmpty(offsets)) { + return pageRanges + } + + for (def i = 0; i < offsets.length / 2; i++) { + pageRanges.add(new PageRange().setStart(offsets[i * 2]).setEnd(offsets[i * 2 + 1])) + } + + return pageRanges + } + + static def createClearRanges(long... offsets) { + def clearRanges = [] as List + + if (CoreUtils.isNullOrEmpty(offsets)) { + return clearRanges + } + + for (def i = 0; i < offsets.length / 2; i++) { + clearRanges.add(new ClearRange().setStart(offsets[i * 2]).setEnd(offsets[i * 2 + 1])) + } + + return clearRanges } def "Get page ranges diff min"() { @@ -867,7 +919,7 @@ class PageBlobAPITest extends APISpec { null | null | garbageEtag | null | null | null null | null | null | receivedEtag | null | null null | null | null | null | garbageLeaseID | null - null | null | null | null | null | "\"notfoo\" = 'notbar'" + null | null | null | null | null | "\"notfoo\" = 'notbar'" } def "Get page ranges diff error"() { @@ -1178,13 +1230,13 @@ class PageBlobAPITest extends APISpec { bu2.copyIncrementalWithResponse(new PageBlobCopyIncrementalOptions(bc.getBlobUrl(), snapshot).setRequestConditions(mac), null, null).getStatusCode() == 202 where: - modified | unmodified | match | noneMatch | tags - null | null | null | null | null - oldDate | null | null | null | null - null | newDate | null | null | null - null | null | receivedEtag | null | null - null | null | null | garbageEtag | null - null | null | null | null | "\"foo\" = 'bar'" + modified | unmodified | match | noneMatch | tags + null | null | null | null | null + oldDate | null | null | null | null + null | newDate | null | null | null + null | null | receivedEtag | null | null + null | null | null | garbageEtag | null + null | null | null | null | "\"foo\" = 'bar'" } @Unroll @@ -1204,18 +1256,18 @@ class PageBlobAPITest extends APISpec { .setTagsConditions(tags) when: - bu2.copyIncrementalWithResponse(new PageBlobCopyIncrementalOptions(bc.getBlobUrl(), snapshot).setRequestConditions(mac),null, null) + bu2.copyIncrementalWithResponse(new PageBlobCopyIncrementalOptions(bc.getBlobUrl(), snapshot).setRequestConditions(mac), null, null) then: thrown(BlobStorageException) where: - modified | unmodified | match | noneMatch | tags - newDate | null | null | null | null - null | oldDate | null | null | null - null | null | garbageEtag | null | null - null | null | null | receivedEtag | null - null | null | null | null | "\"notfoo\" = 'notbar'" + modified | unmodified | match | noneMatch | tags + newDate | null | null | null | null + null | oldDate | null | null | null + null | null | garbageEtag | null | null + null | null | null | receivedEtag | null + null | null | null | null | "\"notfoo\" = 'notbar'" } def "Start incremental copy error"() { diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestpagelistcustomdeserializer.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestpagelistcustomdeserializer.json new file mode 100644 index 000000000000..e78a62326efc --- /dev/null +++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestpagelistcustomdeserializer.json @@ -0,0 +1,67 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcpagelistcustomdeserializer0983603c0fdf6584964d?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "966b1253-e957-4f27-84fb-c3c9d9cfb539" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D876CD36648A7A", + "Last-Modified" : "Thu, 22 Oct 2020 20:58:22 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "46435c5d-d01e-00f3-80b6-a8e31f000000", + "Date" : "Thu, 22 Oct 2020 20:58:21 GMT", + "x-ms-client-request-id" : "966b1253-e957-4f27-84fb-c3c9d9cfb539" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net?prefix=jtcpagelistcustomdeserializer&comp=list", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e38068eb-1e45-4701-848f-4919f2cfeefe" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "Access-Control-Allow-Origin" : "*", + "retry-after" : "0", + "StatusCode" : "200", + "x-ms-request-id" : "4643a2d6-d01e-00f3-51b6-a8e31f000000", + "Body" : "jtcpagelistcustomdeserializerjtcpagelistcustomdeserializer0983603c0fdf6584964dThu, 22 Oct 2020 20:58:22 GMT\"0x8D876CD36648A7A\"unlockedavailable$account-encryption-keyfalsefalsefalse", + "Date" : "Thu, 22 Oct 2020 21:00:23 GMT", + "x-ms-client-request-id" : "e38068eb-1e45-4701-848f-4919f2cfeefe", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcpagelistcustomdeserializer0983603c0fdf6584964d?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a372d6b7-71ea-47d7-8dda-6d87d2ed519d" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "x-ms-request-id" : "4643a2e2-d01e-00f3-59b6-a8e31f000000", + "Date" : "Thu, 22 Oct 2020 21:00:23 GMT", + "x-ms-client-request-id" : "a372d6b7-71ea-47d7-8dda-6d87d2ed519d" + }, + "Exception" : null + } ], + "variables" : [ "jtcpagelistcustomdeserializer0983603c0fdf6584964d" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[0].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[0].json new file mode 100644 index 000000000000..a1a912a26659 --- /dev/null +++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[0].json @@ -0,0 +1,185 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff951744775?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "d8ace183-1be6-46cf-9013-e4c3da9b923e" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A1464F0F", + "Last-Modified" : "Fri, 23 Oct 2020 18:29:51 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c4c5e-c01e-00ce-5c6a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:29:50 GMT", + "x-ms-client-request-id" : "d8ace183-1be6-46cf-9013-e4c3da9b923e" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff951744775/javablobgetpagerangesdiff1414537ab5c849b3ff44b0", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "5496780e-cb50-41af-af74-80e3a8796ac4" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A16D1110", + "Last-Modified" : "Fri, 23 Oct 2020 18:29:51 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c4cb2-c01e-00ce-216a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:29:50 GMT", + "x-ms-client-request-id" : "5496780e-cb50-41af-af74-80e3a8796ac4" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff951744775/javablobgetpagerangesdiff1414537ab5c849b3ff44b0", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e69f7a0f-93be-47b6-a6ff-c6cdf742ac5d" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A1774CC0", + "Last-Modified" : "Fri, 23 Oct 2020 18:29:51 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c4cc2-c01e-00ce-316a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:29:50 GMT", + "x-ms-client-request-id" : "e69f7a0f-93be-47b6-a6ff-c6cdf742ac5d" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff951744775/javablobgetpagerangesdiff1414537ab5c849b3ff44b0?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a5732c34-8b6f-4c50-a106-40765456c596", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "KLABNSKwPwQ=", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:29:57 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:29:56 GMT", + "ETag" : "0x8D87781A4E7F5C3", + "Content-Length" : "0", + "x-ms-request-id" : "ee1c4cdf-c01e-00ce-456a-a95639000000", + "x-ms-client-request-id" : "a5732c34-8b6f-4c50-a106-40765456c596" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff951744775/javablobgetpagerangesdiff1414537ab5c849b3ff44b0?comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "ae42281e-c199-4087-b22e-e925d47d15d3" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T18:29:57.4867608Z", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A4E7F5C3", + "Last-Modified" : "Fri, 23 Oct 2020 18:29:57 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c53e8-c01e-00ce-566a-a95639000000", + "x-ms-request-server-encrypted" : "false", + "Date" : "Fri, 23 Oct 2020 18:29:56 GMT", + "x-ms-client-request-id" : "ae42281e-c199-4087-b22e-e925d47d15d3" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff951744775/javablobgetpagerangesdiff1414537ab5c849b3ff44b0?prevsnapshot=2020-10-23T18%3A29%3A57.4867608Z&comp=pagelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e68ba305-e8b6-4fbe-a2cc-a0b33ebd1f85" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-blob-content-length" : "4194304", + "Access-Control-Allow-Origin" : "*", + "Last-Modified" : "Fri, 23 Oct 2020 18:29:57 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 18:29:56 GMT", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "ETag" : "0x8D87781A4E7F5C3", + "x-ms-request-id" : "ee1c53fe-c01e-00ce-676a-a95639000000", + "Body" : "", + "x-ms-client-request-id" : "e68ba305-e8b6-4fbe-a2cc-a0b33ebd1f85", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net?prefix=jtcgetpagerangesdiff&comp=list", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "c5cafb87-bc16-4515-838f-1aff3cce6c5f" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "Access-Control-Allow-Origin" : "*", + "retry-after" : "0", + "StatusCode" : "200", + "x-ms-request-id" : "ee1c5432-c01e-00ce-106a-a95639000000", + "Body" : "jtcgetpagerangesdiffjtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff951744775Fri, 23 Oct 2020 18:29:51 GMT\"0x8D87781A1464F0F\"unlockedavailable$account-encryption-keyfalsefalsefalse", + "Date" : "Fri, 23 Oct 2020 18:29:56 GMT", + "x-ms-client-request-id" : "c5cafb87-bc16-4515-838f-1aff3cce6c5f", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff951744775?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "5c5ce396-94be-4687-8080-690a99e4ef3b" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "x-ms-request-id" : "ee1c544a-c01e-00ce-236a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:29:56 GMT", + "x-ms-client-request-id" : "5c5ce396-94be-4687-8080-690a99e4ef3b" + }, + "Exception" : null + } ], + "variables" : [ "jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff951744775", "javablobgetpagerangesdiff1414537ab5c849b3ff44b0", "ef2297af-747d-4e79-ac2b-9e1896da1144" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[1].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[1].json new file mode 100644 index 000000000000..30e4a7ed9e2c --- /dev/null +++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[1].json @@ -0,0 +1,210 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "25cf2a8e-d21a-4f91-8dbe-930000aa6879" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A52604CF", + "Last-Modified" : "Fri, 23 Oct 2020 18:29:57 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c545f-c01e-00ce-356a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:29:57 GMT", + "x-ms-client-request-id" : "25cf2a8e-d21a-4f91-8dbe-930000aa6879" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127/javablobgetpagerangesdiff115541f331cc6cbd2745dc", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a1f02e09-4c16-4f1f-a613-84a589658efb" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A52CFED6", + "Last-Modified" : "Fri, 23 Oct 2020 18:29:57 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c5476-c01e-00ce-466a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:29:57 GMT", + "x-ms-client-request-id" : "a1f02e09-4c16-4f1f-a613-84a589658efb" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127/javablobgetpagerangesdiff115541f331cc6cbd2745dc", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a92fb514-37b9-4df6-b89f-0ee20cc6ec5d" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A5342C7E", + "Last-Modified" : "Fri, 23 Oct 2020 18:29:57 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c5487-c01e-00ce-556a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:29:57 GMT", + "x-ms-client-request-id" : "a92fb514-37b9-4df6-b89f-0ee20cc6ec5d" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127/javablobgetpagerangesdiff115541f331cc6cbd2745dc?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "9cd58e52-0b6d-4b8d-974b-72ff1f336796", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "HKzsv2qN0jc=", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:03 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:02 GMT", + "ETag" : "0x8D87781A89C6F02", + "Content-Length" : "0", + "x-ms-request-id" : "ee1c54b3-c01e-00ce-796a-a95639000000", + "x-ms-client-request-id" : "9cd58e52-0b6d-4b8d-974b-72ff1f336796" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127/javablobgetpagerangesdiff115541f331cc6cbd2745dc?comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "813f95c7-3b0e-4937-a7f0-ae8e072769c8" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T18:30:03.6956707Z", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A89C6F02", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:03 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c5ddd-c01e-00ce-6a6a-a95639000000", + "x-ms-request-server-encrypted" : "false", + "Date" : "Fri, 23 Oct 2020 18:30:02 GMT", + "x-ms-client-request-id" : "813f95c7-3b0e-4937-a7f0-ae8e072769c8" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127/javablobgetpagerangesdiff115541f331cc6cbd2745dc?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "34f58426-2c6a-480b-a363-6cc5359a19b1", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "PIjD7cc1O88=", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:03 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:02 GMT", + "ETag" : "0x8D87781A8AFAD8A", + "Content-Length" : "0", + "x-ms-request-id" : "ee1c5e00-c01e-00ce-056a-a95639000000", + "x-ms-client-request-id" : "34f58426-2c6a-480b-a363-6cc5359a19b1" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127/javablobgetpagerangesdiff115541f331cc6cbd2745dc?prevsnapshot=2020-10-23T18%3A30%3A03.6956707Z&comp=pagelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "f0026ab8-1a03-4c33-a380-f0ef22c4b5b1" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-blob-content-length" : "4194304", + "Access-Control-Allow-Origin" : "*", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:03 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 18:30:02 GMT", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "ETag" : "0x8D87781A8AFAD8A", + "x-ms-request-id" : "ee1c5e12-c01e-00ce-136a-a95639000000", + "Body" : "0511", + "x-ms-client-request-id" : "f0026ab8-1a03-4c33-a380-f0ef22c4b5b1", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net?prefix=jtcgetpagerangesdiff&comp=list", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "3363f50a-64b6-4cf7-bd69-944488e8e028" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "Access-Control-Allow-Origin" : "*", + "retry-after" : "0", + "StatusCode" : "200", + "x-ms-request-id" : "ee1c5e2a-c01e-00ce-276a-a95639000000", + "Body" : "jtcgetpagerangesdiffjtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127Fri, 23 Oct 2020 18:29:57 GMT\"0x8D87781A52604CF\"unlockedavailable$account-encryption-keyfalsefalsefalse", + "Date" : "Fri, 23 Oct 2020 18:30:03 GMT", + "x-ms-client-request-id" : "3363f50a-64b6-4cf7-bd69-944488e8e028", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "8f00712a-a24c-41be-b85e-29c1f56db346" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "x-ms-request-id" : "ee1c5e37-c01e-00ce-326a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:03 GMT", + "x-ms-client-request-id" : "8f00712a-a24c-41be-b85e-29c1f56db346" + }, + "Exception" : null + } ], + "variables" : [ "jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff1d5757127", "javablobgetpagerangesdiff115541f331cc6cbd2745dc", "c55fe123-ffa3-48ab-9811-859f9991d7fb", "f7eeeee4-265b-4367-a01b-cd84c150ed83" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[2].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[2].json new file mode 100644 index 000000000000..e78d0a87ede8 --- /dev/null +++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[2].json @@ -0,0 +1,207 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384b?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "0868ce82-a562-437c-a384-a43137148a9a" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A8CBB041", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:03 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c5e52-c01e-00ce-496a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:03 GMT", + "x-ms-client-request-id" : "0868ce82-a562-437c-a384-a43137148a9a" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384b/javablobgetpagerangesdiff1196179d8ab59ce69d47ed", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "44236b6d-9cb3-4de2-aa4b-6436c68fe838" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A8D23213", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:03 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c5e61-c01e-00ce-566a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:03 GMT", + "x-ms-client-request-id" : "44236b6d-9cb3-4de2-aa4b-6436c68fe838" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384b/javablobgetpagerangesdiff1196179d8ab59ce69d47ed", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a2427a9c-4eba-419e-b201-3bc28441c425" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781A8D89C48", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:04 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c5e76-c01e-00ce-666a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:03 GMT", + "x-ms-client-request-id" : "a2427a9c-4eba-419e-b201-3bc28441c425" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384b/javablobgetpagerangesdiff1196179d8ab59ce69d47ed?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "da64ee1e-e915-4076-afe4-d01a65e1f12e", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "4XsU0IKECEc=", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:09 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:08 GMT", + "ETag" : "0x8D87781AC3A9BB3", + "Content-Length" : "0", + "x-ms-request-id" : "ee1c5e91-c01e-00ce-7b6a-a95639000000", + "x-ms-client-request-id" : "da64ee1e-e915-4076-afe4-d01a65e1f12e" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384b/javablobgetpagerangesdiff1196179d8ab59ce69d47ed?comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "ab4776b7-5acb-41fa-907a-2a4b7bfa2241" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T18:30:09.7634469Z", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781AC3A9BB3", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:09 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c6875-c01e-00ce-1d6a-a95639000000", + "x-ms-request-server-encrypted" : "false", + "Date" : "Fri, 23 Oct 2020 18:30:08 GMT", + "x-ms-client-request-id" : "ab4776b7-5acb-41fa-907a-2a4b7bfa2241" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384b/javablobgetpagerangesdiff1196179d8ab59ce69d47ed?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "983f8c53-9ecf-46b9-81a6-3012a534b288" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781AC4C050C", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:09 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c688c-c01e-00ce-336a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:08 GMT", + "x-ms-client-request-id" : "983f8c53-9ecf-46b9-81a6-3012a534b288" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384b/javablobgetpagerangesdiff1196179d8ab59ce69d47ed?prevsnapshot=2020-10-23T18%3A30%3A09.7634469Z&comp=pagelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "80a2da27-820a-41ca-9336-6c5ea92644f2" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-blob-content-length" : "4194304", + "Access-Control-Allow-Origin" : "*", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:09 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 18:30:09 GMT", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "ETag" : "0x8D87781AC4C050C", + "x-ms-request-id" : "ee1c689c-c01e-00ce-436a-a95639000000", + "Body" : "0511", + "x-ms-client-request-id" : "80a2da27-820a-41ca-9336-6c5ea92644f2", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net?prefix=jtcgetpagerangesdiff&comp=list", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "8636f340-98e1-40d6-ab18-295f66022566" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "Access-Control-Allow-Origin" : "*", + "retry-after" : "0", + "StatusCode" : "200", + "x-ms-request-id" : "ee1c68bd-c01e-00ce-626a-a95639000000", + "Body" : "jtcgetpagerangesdiffjtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384bFri, 23 Oct 2020 18:30:03 GMT\"0x8D87781A8CBB041\"unlockedavailable$account-encryption-keyfalsefalsefalse", + "Date" : "Fri, 23 Oct 2020 18:30:09 GMT", + "x-ms-client-request-id" : "8636f340-98e1-40d6-ab18-295f66022566", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384b?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "1c5f19c1-249f-498f-94b2-8914b9480300" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "x-ms-request-id" : "ee1c68d5-c01e-00ce-766a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:09 GMT", + "x-ms-client-request-id" : "1c5f19c1-249f-498f-94b2-8914b9480300" + }, + "Exception" : null + } ], + "variables" : [ "jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff2b908384b", "javablobgetpagerangesdiff1196179d8ab59ce69d47ed", "a35d2b8f-23e4-4788-b4c9-92f0b7bafba7" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[3].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[3].json new file mode 100644 index 000000000000..3c3d10af29fc --- /dev/null +++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[3].json @@ -0,0 +1,232 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e883719a-2424-42f7-8dca-f6e48af1b577" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781AC67E3B9", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:09 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c68ee-c01e-00ce-0b6a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:09 GMT", + "x-ms-client-request-id" : "e883719a-2424-42f7-8dca-f6e48af1b577" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895/javablobgetpagerangesdiff189414bcfecd4ea50f4ff7", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "6580cdd2-3eef-42e1-a380-e23e406f518f" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781AC6E89B2", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:10 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c6901-c01e-00ce-1b6a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:09 GMT", + "x-ms-client-request-id" : "6580cdd2-3eef-42e1-a380-e23e406f518f" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895/javablobgetpagerangesdiff189414bcfecd4ea50f4ff7", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e0a6bad4-5f13-4cdd-a94c-c55bdcee623a" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781AC7541F4", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:10 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c6920-c01e-00ce-326a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:09 GMT", + "x-ms-client-request-id" : "e0a6bad4-5f13-4cdd-a94c-c55bdcee623a" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895/javablobgetpagerangesdiff189414bcfecd4ea50f4ff7?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "b1bd7265-e5b0-4193-81e9-e9f303cca680", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "yNKI+KPfNUQ=", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:15 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:14 GMT", + "ETag" : "0x8D87781AFD7B6F0", + "Content-Length" : "0", + "x-ms-request-id" : "ee1c6950-c01e-00ce-5c6a-a95639000000", + "x-ms-client-request-id" : "b1bd7265-e5b0-4193-81e9-e9f303cca680" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895/javablobgetpagerangesdiff189414bcfecd4ea50f4ff7?comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "b390e77e-9453-4c63-b7e8-d1b2a736eaf9" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T18:30:15.8302279Z", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781AFD7B6F0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:15 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c733a-c01e-00ce-5f6a-a95639000000", + "x-ms-request-server-encrypted" : "false", + "Date" : "Fri, 23 Oct 2020 18:30:15 GMT", + "x-ms-client-request-id" : "b390e77e-9453-4c63-b7e8-d1b2a736eaf9" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895/javablobgetpagerangesdiff189414bcfecd4ea50f4ff7?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "18a7c7df-3f79-4bf2-8a78-489473b3687a", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "7cBhePr62ZU=", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:15 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:15 GMT", + "ETag" : "0x8D87781AFE9E3C2", + "Content-Length" : "0", + "x-ms-request-id" : "ee1c7344-c01e-00ce-676a-a95639000000", + "x-ms-client-request-id" : "18a7c7df-3f79-4bf2-8a78-489473b3687a" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895/javablobgetpagerangesdiff189414bcfecd4ea50f4ff7?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "b477f3f6-3a6c-4f8b-89aa-1965bced3586" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781AFEFB18C", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:15 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c7356-c01e-00ce-766a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:15 GMT", + "x-ms-client-request-id" : "b477f3f6-3a6c-4f8b-89aa-1965bced3586" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895/javablobgetpagerangesdiff189414bcfecd4ea50f4ff7?prevsnapshot=2020-10-23T18%3A30%3A15.8302279Z&comp=pagelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "123383b8-f36d-483c-9430-ef57dc0f47d3" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-blob-content-length" : "4194304", + "Access-Control-Allow-Origin" : "*", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:15 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 18:30:15 GMT", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "ETag" : "0x8D87781AFEFB18C", + "x-ms-request-id" : "ee1c736e-c01e-00ce-0a6a-a95639000000", + "Body" : "05115121023", + "x-ms-client-request-id" : "123383b8-f36d-483c-9430-ef57dc0f47d3", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net?prefix=jtcgetpagerangesdiff&comp=list", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "96294756-3d23-41d4-aafb-3b024d5e6c8d" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "Access-Control-Allow-Origin" : "*", + "retry-after" : "0", + "StatusCode" : "200", + "x-ms-request-id" : "ee1c7382-c01e-00ce-196a-a95639000000", + "Body" : "jtcgetpagerangesdiffjtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895Fri, 23 Oct 2020 18:30:09 GMT\"0x8D87781AC67E3B9\"unlockedavailable$account-encryption-keyfalsefalsefalse", + "Date" : "Fri, 23 Oct 2020 18:30:15 GMT", + "x-ms-client-request-id" : "96294756-3d23-41d4-aafb-3b024d5e6c8d", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "cd0b7899-15c9-4899-be4e-d69649fd676b" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "x-ms-request-id" : "ee1c738f-c01e-00ce-246a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:15 GMT", + "x-ms-client-request-id" : "cd0b7899-15c9-4899-be4e-d69649fd676b" + }, + "Exception" : null + } ], + "variables" : [ "jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiffe63969895", "javablobgetpagerangesdiff189414bcfecd4ea50f4ff7", "f344e7b0-c396-42b0-bd4b-1d970e75d57a", "fd8c4c6b-b8c6-4cbf-9328-c9e52741ccaf" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[4].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[4].json new file mode 100644 index 000000000000..0b035d2e3061 --- /dev/null +++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetpagerangesdiff[4].json @@ -0,0 +1,279 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "5616519c-16d5-4be0-9993-31cde0e36158" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781B00B6BD2", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:16 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c73a2-c01e-00ce-366a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:15 GMT", + "x-ms-client-request-id" : "5616519c-16d5-4be0-9993-31cde0e36158" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e/javablobgetpagerangesdiff110215b26d03ead2e94975", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a666f0a2-dd07-4034-af48-e994ee20630d" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781B01347C6", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:16 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c73ac-c01e-00ce-3f6a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:15 GMT", + "x-ms-client-request-id" : "a666f0a2-dd07-4034-af48-e994ee20630d" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e/javablobgetpagerangesdiff110215b26d03ead2e94975", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "c864d31f-85ac-4a29-8e30-f19b79e2135a" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781B01C71C1", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:16 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c73cc-c01e-00ce-5b6a-a95639000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:15 GMT", + "x-ms-client-request-id" : "c864d31f-85ac-4a29-8e30-f19b79e2135a" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e/javablobgetpagerangesdiff110215b26d03ead2e94975?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "00370d0d-ca07-4f7d-90c8-f8dba82314bc", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "SkN3THoGiP0=", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:21 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:21 GMT", + "ETag" : "0x8D87781B383C9A8", + "Content-Length" : "0", + "x-ms-request-id" : "ee1c73e5-c01e-00ce-6e6a-a95639000000", + "x-ms-client-request-id" : "00370d0d-ca07-4f7d-90c8-f8dba82314bc" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e/javablobgetpagerangesdiff110215b26d03ead2e94975?comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "4af1b117-6092-46c1-9db9-ec23b4e462c5" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T18:30:21.9920928Z", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781B383C9A8", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:21 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c7d99-c01e-00ce-546a-a95639000000", + "x-ms-request-server-encrypted" : "false", + "Date" : "Fri, 23 Oct 2020 18:30:21 GMT", + "x-ms-client-request-id" : "4af1b117-6092-46c1-9db9-ec23b4e462c5" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e/javablobgetpagerangesdiff110215b26d03ead2e94975?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "92fe77b4-c37c-4c9d-863a-5b7b58b8c3d1", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "R+7y7u/mlmU=", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:22 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:21 GMT", + "ETag" : "0x8D87781B395CF70", + "Content-Length" : "0", + "x-ms-request-id" : "ee1c7dad-c01e-00ce-676a-a95639000000", + "x-ms-client-request-id" : "92fe77b4-c37c-4c9d-863a-5b7b58b8c3d1" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e/javablobgetpagerangesdiff110215b26d03ead2e94975?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "9ab62d75-3b70-481b-871f-7c3fc71ed1a0", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-crc64" : "zpW0pVt4+9c=", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:22 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 18:30:21 GMT", + "ETag" : "0x8D87781B39C60B3", + "Content-Length" : "0", + "x-ms-request-id" : "ee1c7dc8-c01e-00ce-7e6a-a95639000000", + "x-ms-client-request-id" : "9ab62d75-3b70-481b-871f-7c3fc71ed1a0" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e/javablobgetpagerangesdiff110215b26d03ead2e94975?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "7702fa6d-8ebe-4972-9131-4b5b8604e068" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781B3A38E61", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:22 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c7dd9-c01e-00ce-0f6a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:21 GMT", + "x-ms-client-request-id" : "7702fa6d-8ebe-4972-9131-4b5b8604e068" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e/javablobgetpagerangesdiff110215b26d03ead2e94975?comp=page", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "2f9966ee-c64d-4443-9bcc-82e56b05678f" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87781B3A9D17E", + "x-ms-blob-sequence-number" : "0", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:22 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "ee1c7ddf-c01e-00ce-156a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:21 GMT", + "x-ms-client-request-id" : "2f9966ee-c64d-4443-9bcc-82e56b05678f" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e/javablobgetpagerangesdiff110215b26d03ead2e94975?prevsnapshot=2020-10-23T18%3A30%3A21.9920928Z&comp=pagelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "11efcea2-b86b-454e-860c-5f8c366fc7e2" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-blob-content-length" : "4194304", + "Access-Control-Allow-Origin" : "*", + "Last-Modified" : "Fri, 23 Oct 2020 18:30:22 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 18:30:21 GMT", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "ETag" : "0x8D87781B3A9D17E", + "x-ms-request-id" : "ee1c7df1-c01e-00ce-256a-a95639000000", + "Body" : "051151210231024153515362047", + "x-ms-client-request-id" : "11efcea2-b86b-454e-860c-5f8c366fc7e2", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.blob.core.windows.net?prefix=jtcgetpagerangesdiff&comp=list", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "df8cb1ba-7fcc-422e-af2f-ed06d04af5fd" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Access-Control-Expose-Headers" : "x-ms-client-request-id", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "Access-Control-Allow-Origin" : "*", + "retry-after" : "0", + "StatusCode" : "200", + "x-ms-request-id" : "ee1c7e08-c01e-00ce-386a-a95639000000", + "Body" : "jtcgetpagerangesdiffjtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411eFri, 23 Oct 2020 18:30:16 GMT\"0x8D87781B00B6BD2\"unlockedavailable$account-encryption-keyfalsefalsefalse", + "Date" : "Fri, 23 Oct 2020 18:30:21 GMT", + "x-ms-client-request-id" : "df8cb1ba-7fcc-422e-af2f-ed06d04af5fd", + "Content-Type" : "application/xml" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.blob.core.windows.net/jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e?restype=container", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-blob/12.9.0-beta.3 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "dcf7bcae-2017-456f-9bab-0e63fac6118f" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "202", + "x-ms-request-id" : "ee1c7e1c-c01e-00ce-476a-a95639000000", + "Date" : "Fri, 23 Oct 2020 18:30:21 GMT", + "x-ms-client-request-id" : "dcf7bcae-2017-456f-9bab-0e63fac6118f" + }, + "Exception" : null + } ], + "variables" : [ "jtcgetpagerangesdiff0pageblobapitestgetpagerangesdiff8e940411e", "javablobgetpagerangesdiff110215b26d03ead2e94975", "f0b8a9f3-02f0-48f7-9922-1c22951ef40e", "e1054127-05aa-4568-8571-e776cb204c7e", "6dde5b1e-8e0f-4f60-992a-b0c4adcc85d7" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-blob/swagger/README.md b/sdk/storage/azure-storage-blob/swagger/README.md index 70b01c2d531b..0d8b599f815d 100644 --- a/sdk/storage/azure-storage-blob/swagger/README.md +++ b/sdk/storage/azure-storage-blob/swagger/README.md @@ -894,6 +894,21 @@ directive: "@JsonDeserialize(using = CustomHierarchicalListingDeserializer.class)\npublic final class BlobHierarchyListSegment {"); ``` +### Add the PageListDeserializer attribute +``` yaml +directive: +- from: PageList.java + where: $ + transform: > + return $. + replace( + "import com.fasterxml.jackson.annotation.JsonProperty;", + "import com.fasterxml.jackson.annotation.JsonProperty;\nimport com.fasterxml.jackson.databind.annotation.JsonDeserialize;"). + replace( + "public final class PageList {", + "@JsonDeserialize(using = PageListDeserializer.class)\npublic final class PageList {"); +``` + ### Add EncryptionKeySha256 to PageBlobUploadPagesFromURLHeaders ``` yaml directive: diff --git a/sdk/storage/azure-storage-file-share/CHANGELOG.md b/sdk/storage/azure-storage-file-share/CHANGELOG.md index 6b5c3d7f4f0f..3c36c8a58832 100644 --- a/sdk/storage/azure-storage-file-share/CHANGELOG.md +++ b/sdk/storage/azure-storage-file-share/CHANGELOG.md @@ -4,15 +4,17 @@ - Added support to specify whether or not a pipeline policy should be added per call or per retry. - Added support for setting access tier on a share through ShareClient.create, ShareClient.setAccessTier. - Added support for getting access tier on a share through ShareClient.getProperties, ShareServiceClient.listShares +- Fixed a bug where interspersed element types returned by range diff listing would deserialize incorrectly. - Renamed setAccessTier to setProperties and deprecated setQuotaInGb in favor of setProperties. - Renamed DeleteSnapshotsOptionType to ShareSnapshotsDeleteOptionType in ShareClient.delete +- Removed ability to create a ShareLeaseClient for a Share or Share Snapshot. This feature has been rescheduled for future release. ## 12.7.0-beta.1 (2020-10-01) - Added support for the 2020-02-10 service version. - Added support to getFileRanges on a previous snapshot by adding the getFileRangesDiff API. - Added support to set whether or not smb multichannel is enabled. - Added support to lease shares and snapshot shares. -- Added support to specify a lease id for share operations. +- Added support to specify a lease id for share operations. - Fixed a bug where getProperties on a file client would throw a HttpResponseException instead of ShareStorageException. - Fixed a bug where snapshot would be appended to a share snapshot instead of sharesnapshot. - Fixed a bug that would cause auth failures when building a client by passing an endpoint which had a sas token with protocol set to https,http diff --git a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/models/ShareFileRangeList.java b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/models/ShareFileRangeList.java index cedb2f7987d8..94cc8d543036 100644 --- a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/models/ShareFileRangeList.java +++ b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/models/ShareFileRangeList.java @@ -6,6 +6,7 @@ import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import java.util.ArrayList; import java.util.List; @@ -15,6 +16,7 @@ */ @JacksonXmlRootElement(localName = "ShareFileRangeList") @Fluent +@JsonDeserialize(using = ShareFileRangeListDeserializer.class) public final class ShareFileRangeList { /* * The ranges property. diff --git a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/models/ShareFileRangeListDeserializer.java b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/models/ShareFileRangeListDeserializer.java new file mode 100644 index 000000000000..a6e912f49a57 --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/models/ShareFileRangeListDeserializer.java @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.storage.file.share.models; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.JsonTokenId; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; +import java.util.ArrayList; + +/** + * Custom Jackson JsonDeserializer that handles deserializing ShareFileRangeList responses. + *

    + * ShareFileRangeList responses intersperse FileRange and ClearRange elements, without this deserializer if we received + * the following response the resulting ShareFileRangeList would only contain one FileRange element and one ClearRange + * element. + * + *

    + * {@code
    + * 
    + * 
    + *    
    + *       Start Byte
    + *       End Byte
    + *    
    + *    
    + *       Start Byte
    + *       End Byte
    + *    
    + *    
    + *       Start Byte
    + *       End Byte
    + *    
    + * 
    + * }
    + * 
    + * + * With the custom deserializer the response correctly returns two FileRange elements and one ClearRange element. + */ +final class ShareFileRangeListDeserializer extends JsonDeserializer { + @Override + public ShareFileRangeList deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + ArrayList pageRanges = new ArrayList<>(); + ArrayList clearRanges = new ArrayList<>(); + + // Get the deserializer that handles PageRange. + JsonDeserializer pageRangeDeserializer = + ctxt.findRootValueDeserializer(ctxt.constructType(FileRange.class)); + + // Get the deserializer that handles ClearRange. + JsonDeserializer clearRangeDeserializer = + ctxt.findRootValueDeserializer(ctxt.constructType(ClearRange.class)); + + for (JsonToken currentToken = p.nextToken(); currentToken.id() != JsonTokenId.ID_END_OBJECT; + currentToken = p.nextToken()) { + // Get to the root element of the next item. + p.nextToken(); + + if (p.getCurrentName().equals("Range")) { + // Current token is the node that begins a FileRange object. + pageRanges.add((FileRange) pageRangeDeserializer.deserialize(p, ctxt)); + } else if (p.getCurrentName().equals("ClearRange")) { + // Current token is the node that begins a ClearRange object. + clearRanges.add((ClearRange) clearRangeDeserializer.deserialize(p, ctxt)); + } + } + + return new ShareFileRangeList().setRanges(pageRanges).setClearRanges(clearRanges); + } +} diff --git a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/specialized/ShareLeaseClientBuilder.java b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/specialized/ShareLeaseClientBuilder.java index cce3a5c8954c..1dae3d679e44 100644 --- a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/specialized/ShareLeaseClientBuilder.java +++ b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/specialized/ShareLeaseClientBuilder.java @@ -112,7 +112,7 @@ public ShareLeaseClientBuilder fileAsyncClient(ShareFileAsyncClient fileAsyncCli * @return the updated ShareLeaseClientBuilder object * @throws NullPointerException If {@code fileClient} is {@code null}. */ - public ShareLeaseClientBuilder shareClient(ShareClient shareClient) { + ShareLeaseClientBuilder shareClient(ShareClient shareClient) { Objects.requireNonNull(shareClient); this.pipeline = shareClient.getHttpPipeline(); this.url = shareClient.getShareUrl(); @@ -130,7 +130,7 @@ public ShareLeaseClientBuilder shareClient(ShareClient shareClient) { * @return the updated ShareLeaseClientBuilder object * @throws NullPointerException If {@code fileAsyncClient} is {@code null}. */ - public ShareLeaseClientBuilder shareAsyncClient(ShareAsyncClient shareAsyncClient) { + ShareLeaseClientBuilder shareAsyncClient(ShareAsyncClient shareAsyncClient) { Objects.requireNonNull(shareAsyncClient); this.pipeline = shareAsyncClient.getHttpPipeline(); this.url = shareAsyncClient.getShareUrl(); diff --git a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAPITests.groovy b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAPITests.groovy index 38cb162e7920..935f2fe1e52e 100644 --- a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAPITests.groovy +++ b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAPITests.groovy @@ -31,6 +31,16 @@ import java.time.LocalDateTime import java.time.OffsetDateTime import java.time.ZoneOffset +import static com.azure.storage.file.share.FileTestHelper.assertExceptionStatusCodeAndMessage +import static com.azure.storage.file.share.FileTestHelper.assertResponseStatusCode +import static com.azure.storage.file.share.FileTestHelper.compareFiles +import static com.azure.storage.file.share.FileTestHelper.createClearRanges +import static com.azure.storage.file.share.FileTestHelper.createFileRanges +import static com.azure.storage.file.share.FileTestHelper.createRandomFileWithLength +import static com.azure.storage.file.share.FileTestHelper.deleteFilesIfExists +import static com.azure.storage.file.share.FileTestHelper.getRandomBuffer +import static com.azure.storage.file.share.FileTestHelper.getRandomFile + class FileAPITests extends APISpec { ShareFileClient primaryFileClient ShareClient shareClient @@ -53,7 +63,7 @@ class FileAPITests extends APISpec { testMetadata = Collections.singletonMap("testmetadata", "value") httpHeaders = new ShareFileHttpHeaders().setContentLanguage("en") .setContentType("application/octet-stream") - smbProperties = new FileSmbProperties().setNtfsFileAttributes(EnumSet.of(NtfsFileAttributes.NORMAL)) + smbProperties = new FileSmbProperties().setNtfsFileAttributes(EnumSet. of(NtfsFileAttributes.NORMAL)) } def "Get file URL"() { @@ -112,12 +122,12 @@ class FileAPITests extends APISpec { def "Create file"() { expect: - FileTestHelper.assertResponseStatusCode(primaryFileClient.createWithResponse(1024, null, null, null, null, null, null), 201) + assertResponseStatusCode(primaryFileClient.createWithResponse(1024, null, null, null, null, null, null), 201) } def "Create file 4TB"() { expect: - FileTestHelper.assertResponseStatusCode(primaryFileClient.createWithResponse(4 * Constants.TB, null, null, null, null, null, null), 201) + assertResponseStatusCode(primaryFileClient.createWithResponse(4 * Constants.TB, null, null, null, null, null, null), 201) } def "Create file error"() { @@ -126,7 +136,7 @@ class FileAPITests extends APISpec { then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) + assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) } def "Create file with args fpk"() { @@ -139,7 +149,7 @@ class FileAPITests extends APISpec { def resp = primaryFileClient.createWithResponse(1024, httpHeaders, smbProperties, null, testMetadata, null, null) then: - FileTestHelper.assertResponseStatusCode(resp, 201) + assertResponseStatusCode(resp, 201) resp.getValue().getETag() resp.getValue().getLastModified() resp.getValue().getSmbProperties() @@ -158,7 +168,7 @@ class FileAPITests extends APISpec { .setFileLastWriteTime(getUTCNow()) def resp = primaryFileClient.createWithResponse(1024, httpHeaders, smbProperties, filePermission, testMetadata, null, null) then: - FileTestHelper.assertResponseStatusCode(resp, 201) + assertResponseStatusCode(resp, 201) resp.getValue().getETag() resp.getValue().getLastModified() resp.getValue().getSmbProperties() @@ -176,7 +186,7 @@ class FileAPITests extends APISpec { primaryFileClient.createWithResponse(-1, null, null, null, testMetadata, null, null) then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) + assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) } @Unroll @@ -189,7 +199,7 @@ class FileAPITests extends APISpec { where: filePermissionKey | permission "filePermissionKey" | filePermission - null | new String(FileTestHelper.getRandomBuffer(9 * Constants.KB)) + null | new String(getRandomBuffer(9 * Constants.KB)) } def "Upload and download data"() { @@ -203,9 +213,9 @@ class FileAPITests extends APISpec { def headers = downloadResponse.getDeserializedHeaders() then: - FileTestHelper.assertResponseStatusCode(uploadResponse, 201) - FileTestHelper.assertResponseStatusCode(downloadResponse, 200) - headers.getContentLength() == dataLength + assertResponseStatusCode(uploadResponse, 201) + assertResponseStatusCode(downloadResponse, 200) + headers.getContentLength() == (long) dataLength headers.getETag() headers.getLastModified() headers.getFilePermissionKey() @@ -229,9 +239,9 @@ class FileAPITests extends APISpec { def downloadResponse = primaryFileClient.downloadWithResponse(stream, new ShareFileRange(1, dataLength), true, null, null) then: - FileTestHelper.assertResponseStatusCode(uploadResponse, 201) - FileTestHelper.assertResponseStatusCode(downloadResponse, 206) - downloadResponse.getDeserializedHeaders().getContentLength() == dataLength + assertResponseStatusCode(uploadResponse, 201) + assertResponseStatusCode(downloadResponse, 206) + downloadResponse.getDeserializedHeaders().getContentLength() == (long) dataLength data == stream.toByteArray() } @@ -247,9 +257,9 @@ class FileAPITests extends APISpec { def downloadResponse = primaryFileClient.downloadWithResponse(stream, new ShareFileRange(fileSize - dataLength, fileSize), true, null, null) then: - FileTestHelper.assertResponseStatusCode(uploadResponse, 201) - FileTestHelper.assertResponseStatusCode(downloadResponse, 206) - downloadResponse.getDeserializedHeaders().getContentLength() == dataLength + assertResponseStatusCode(uploadResponse, 201) + assertResponseStatusCode(downloadResponse, 206) + downloadResponse.getDeserializedHeaders().getContentLength() == (long) dataLength } def "Upload data error"() { @@ -258,10 +268,10 @@ class FileAPITests extends APISpec { then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 404, ShareErrorCode.RESOURCE_NOT_FOUND) + assertExceptionStatusCodeAndMessage(e, 404, ShareErrorCode.RESOURCE_NOT_FOUND) } - def "Upload and clear range" () { + def "Upload and clear range"() { given: def fullInfoString = "please clear the range" def fullInfoData = getInputStream(fullInfoString.getBytes(StandardCharsets.UTF_8)) @@ -279,7 +289,7 @@ class FileAPITests extends APISpec { } } - def "Upload and clear range with args" () { + def "Upload and clear range with args"() { given: def fullInfoString = "please clear the range" def fullInfoData = getInputStream(fullInfoString.getBytes(StandardCharsets.UTF_8)) @@ -297,7 +307,7 @@ class FileAPITests extends APISpec { } } - def "Clear range error" () { + def "Clear range error"() { given: def fullInfoString = "please clear the range" def fullInfoData = getInputStream(fullInfoString.getBytes(StandardCharsets.UTF_8)) @@ -309,10 +319,10 @@ class FileAPITests extends APISpec { then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 416, ShareErrorCode.INVALID_RANGE) + assertExceptionStatusCodeAndMessage(e, 416, ShareErrorCode.INVALID_RANGE) } - def "Clear range error args" () { + def "Clear range error args"() { given: def fullInfoString = "please clear the range" def fullInfoData = getInputStream(fullInfoString.getBytes(StandardCharsets.UTF_8)) @@ -324,7 +334,7 @@ class FileAPITests extends APISpec { then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 416, ShareErrorCode.INVALID_RANGE) + assertExceptionStatusCodeAndMessage(e, 416, ShareErrorCode.INVALID_RANGE) } @Unroll @@ -341,8 +351,8 @@ class FileAPITests extends APISpec { where: size | errMsg - 6 | "more than" - 8 | "less than" + 6 | "more than" + 8 | "less than" } def "Download data error"() { @@ -351,7 +361,7 @@ class FileAPITests extends APISpec { then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 404, ShareErrorCode.RESOURCE_NOT_FOUND) + assertExceptionStatusCodeAndMessage(e, 404, ShareErrorCode.RESOURCE_NOT_FOUND) } def "Upload file does not exist"() { @@ -370,12 +380,13 @@ class FileAPITests extends APISpec { ex.getCause() instanceof NoSuchFileException cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } /* * Tests downloading a file using a default client that doesn't have a HttpClient passed to it. */ + @Requires({ liveMode() }) @Unroll def "Download file buffer copy"() { @@ -387,7 +398,7 @@ class FileAPITests extends APISpec { def fileClient = shareServiceClient.getShareClient(shareName) .createFile(filePath, fileSize) - def file = FileTestHelper.getRandomFile(fileSize) + def file = getRandomFile(fileSize) fileClient.uploadFromFile(file.toPath().toString()) def outFile = new File(testResourceName.randomName(methodName, 60) + ".txt") if (outFile.exists()) { @@ -398,7 +409,7 @@ class FileAPITests extends APISpec { fileClient.downloadToFile(outFile.toPath().toString()) then: - FileTestHelper.compareFiles(file, outFile, 0, fileSize) + compareFiles(file, outFile, 0, fileSize) cleanup: shareServiceClient.deleteShare(shareName) @@ -434,7 +445,7 @@ class FileAPITests extends APISpec { ex.getCause() instanceof FileAlreadyExistsException cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Upload and download to file does not exist"() { @@ -458,7 +469,7 @@ class FileAPITests extends APISpec { scanner.close() cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } @Unroll @@ -487,14 +498,14 @@ class FileAPITests extends APISpec { .buildFileClient() client.create(1024) - client.uploadRangeFromUrl(length, destinationOffset, sourceOffset, primaryFileClient.getFileUrl() +"?" + sasToken) + client.uploadRangeFromUrl(length, destinationOffset, sourceOffset, primaryFileClient.getFileUrl() + "?" + sasToken) then: def stream = new ByteArrayOutputStream() client.download(stream) def result = new String(stream.toByteArray()) - for(int i = 0; i < length; i++) { + for (int i = 0; i < length; i++) { result.charAt(destinationOffset + i) == data.charAt(sourceOffset + i) } where: @@ -514,8 +525,8 @@ class FileAPITests extends APISpec { when: SyncPoller poller = primaryFileClient.beginCopy(sourceURL, - null, - null) + null, + null) def pollResponse = poller.poll() @@ -566,13 +577,13 @@ class FileAPITests extends APISpec { when: SyncPoller poller = primaryFileClient.beginCopy("some url", - testMetadata, - null) + testMetadata, + null) poller.waitForCompletion() then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.INVALID_HEADER_VALUE) + assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.INVALID_HEADER_VALUE) } @Ignore @@ -585,7 +596,7 @@ class FileAPITests extends APISpec { primaryFileClient.createWithResponse(1024, null, null, null, null, null, null) expect: - FileTestHelper.assertResponseStatusCode(primaryFileClient.deleteWithResponse(null, null), 202) + assertResponseStatusCode(primaryFileClient.deleteWithResponse(null, null), 202) } def "Delete file error"() { @@ -594,7 +605,7 @@ class FileAPITests extends APISpec { then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 404, ShareErrorCode.RESOURCE_NOT_FOUND) + assertExceptionStatusCodeAndMessage(e, 404, ShareErrorCode.RESOURCE_NOT_FOUND) } def "Get properties"() { @@ -607,7 +618,7 @@ class FileAPITests extends APISpec { def resp = primaryFileClient.getPropertiesWithResponse(null, null) then: - FileTestHelper.assertResponseStatusCode(resp, 200) + assertResponseStatusCode(resp, 200) resp.getValue().getETag() resp.getValue().getLastModified() resp.getValue().getSmbProperties() @@ -639,7 +650,7 @@ class FileAPITests extends APISpec { def resp = primaryFileClient.setPropertiesWithResponse(512, httpHeaders, smbProperties, null, null, null) then: - FileTestHelper.assertResponseStatusCode(resp, 200) + assertResponseStatusCode(resp, 200) resp.getValue().getETag() resp.getValue().getLastModified() resp.getValue().getSmbProperties() @@ -661,7 +672,7 @@ class FileAPITests extends APISpec { def resp = primaryFileClient.setPropertiesWithResponse(512, httpHeaders, smbProperties, filePermission, null, null) then: - FileTestHelper.assertResponseStatusCode(resp, 200) + assertResponseStatusCode(resp, 200) resp.getValue().getETag() resp.getValue().getLastModified() resp.getValue().getSmbProperties() @@ -681,7 +692,7 @@ class FileAPITests extends APISpec { primaryFileClient.setPropertiesWithResponse(-1, null, null, null, null, null) then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) + assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) } def "Set metadata"() { @@ -696,7 +707,7 @@ class FileAPITests extends APISpec { then: testMetadata == getPropertiesBefore.getMetadata() - FileTestHelper.assertResponseStatusCode(setPropertiesResponse, 200) + assertResponseStatusCode(setPropertiesResponse, 200) updatedMetadata == getPropertiesAfter.getMetadata() } @@ -710,14 +721,14 @@ class FileAPITests extends APISpec { then: def e = thrown(ShareStorageException) - FileTestHelper.assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.EMPTY_METADATA_KEY) + assertExceptionStatusCodeAndMessage(e, 400, ShareErrorCode.EMPTY_METADATA_KEY) } def "List ranges"() { given: def fileName = testResourceName.randomName("file", 60) primaryFileClient.create(1024) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileClient.uploadFromFile(uploadFile) expect: @@ -727,14 +738,14 @@ class FileAPITests extends APISpec { } cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "List ranges with range"() { given: def fileName = testResourceName.randomName("file", 60) primaryFileClient.create(1024) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileClient.uploadFromFile(uploadFile) expect: @@ -744,14 +755,14 @@ class FileAPITests extends APISpec { } cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "List ranges snapshot"() { given: def fileName = testResourceName.randomName("file", 60) primaryFileClient.create(1024) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileClient.uploadFromFile(uploadFile) def snapInfo = shareClient.createSnapshot() @@ -767,14 +778,14 @@ class FileAPITests extends APISpec { } cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "List ranges snapshot fail"() { given: def fileName = testResourceName.randomName("file", 60) primaryFileClient.create(1024) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileClient.uploadFromFile(uploadFile) primaryFileClient = fileBuilderHelper(interceptorManager, shareName, filePath) @@ -791,38 +802,64 @@ class FileAPITests extends APISpec { def e = thrown(ShareStorageException) cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } - @Requires( { playbackMode() } ) + @Unroll def "List ranges diff"() { - given: - primaryFileClient.create(1024) - primaryFileClient.uploadWithResponse(new ByteArrayInputStream(FileTestHelper.getRandomBuffer(512)),512, 512, null, null) - def snapInfo = shareClient.createSnapshot() - primaryFileClient.uploadWithResponse(new ByteArrayInputStream(FileTestHelper.getRandomBuffer(512)),512, 0, null, null) - - primaryFileClient.clearRangeWithResponse(512, 512, null, null) + setup: + primaryFileClient.create(4 * Constants.MB) + primaryFileClient.upload(new ByteArrayInputStream(getRandomBuffer(4 * Constants.MB)), 4 * Constants.MB) + def snapshotId = primaryFileServiceClient.getShareClient(primaryFileClient.getShareName()) + .createSnapshot() + .getSnapshot() + + rangesToUpdate.forEach({ + def size = it.getEnd() - it.getStart() + 1 + primaryFileClient.uploadWithResponse(new ByteArrayInputStream(getRandomBuffer((int) size)), size, + it.getStart(), null, null) + }) + + rangesToClear.forEach({ + def size = it.getEnd() - it.getStart() + 1 + primaryFileClient.clearRangeWithResponse(size, it.getStart(), null, null) + }) when: - def response = primaryFileClient.listRangesDiffWithResponse(new ShareFileListRangesDiffOptions(snapInfo.getSnapshot()).setRange(new ShareFileRange(0, 1024)), null, null) + def rangeDiff = primaryFileClient.listRangesDiff(snapshotId) then: - response.getValue().getRanges().size() == 1 - response.getValue().getRanges().get(0).getStart() == 0 - response.getValue().getRanges().get(0).getEnd() == 511 - response.getValue().getClearRanges().size() == 1 - response.getValue().getClearRanges().get(0).getStart() == 512 - response.getValue().getClearRanges().get(0).getEnd() == 1023 - validateBasicHeaders(response.getHeaders()) - Integer.parseInt(response.getHeaders().getValue("x-ms-content-length")) == 1024 + rangeDiff.getRanges().size() == expectedRanges.size() + rangeDiff.getClearRanges().size() == expectedClearRanges.size() + + for (def i = 0; i < expectedRanges.size(); i++) { + def actualRange = rangeDiff.getRanges().get(i) + def expectedRange = expectedRanges.get(i) + expectedRange.getStart() == actualRange.getStart() + expectedRange.getEnd() == actualRange.getEnd() + } + + for (def i = 0; i < expectedClearRanges.size(); i++) { + def actualRange = rangeDiff.getClearRanges().get(i) + def expectedRange = expectedClearRanges.get(i) + expectedRange.getStart() == actualRange.getStart() + expectedRange.getEnd() == actualRange.getEnd() + } + + where: + rangesToUpdate | rangesToClear | expectedRanges | expectedClearRanges + createFileRanges() | createFileRanges() | createFileRanges() | createClearRanges() + createFileRanges(0, 511) | createFileRanges() | createFileRanges(0, 511) | createClearRanges() + createFileRanges() | createFileRanges(0, 511) | createFileRanges() | createClearRanges(0, 511) + createFileRanges(0, 511) | createFileRanges(512, 1023) | createFileRanges(0, 511) | createClearRanges(512, 1023) + createFileRanges(0, 511, 1024, 1535) | createFileRanges(512, 1023, 1536, 2047) | createFileRanges(0, 511, 1024, 1535) | createClearRanges(512, 1023, 1536, 2047) } def "List ranges diff with range"() { given: def fileName = testResourceName.randomName("file", 60) primaryFileClient.create(1024 + dataLength) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileClient.uploadFromFile(uploadFile) def snapInfo = shareClient.createSnapshot() @@ -837,15 +874,15 @@ class FileAPITests extends APISpec { range.getEnd() == 1026 cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } - @Requires( { playbackMode() } ) + @Requires({ playbackMode() }) def "List ranges diff lease"() { given: def fileName = testResourceName.randomName("file", 60) primaryFileClient.create(1024 + dataLength) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileClient.uploadFromFile(uploadFile) def snapInfo = shareClient.createSnapshot() @@ -861,14 +898,14 @@ class FileAPITests extends APISpec { range.getEnd() == 1030 cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "List ranges diff lease fail"() { given: def fileName = testResourceName.randomName("file", 60) primaryFileClient.create(1024 + dataLength) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileClient.uploadFromFile(uploadFile) def snapInfo = shareClient.createSnapshot() @@ -882,15 +919,15 @@ class FileAPITests extends APISpec { thrown(ShareStorageException) cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } - @Requires( { playbackMode() } ) + @Requires({ playbackMode() }) def "List ranges diff fail"() { given: def fileName = testResourceName.randomName("file", 60) primaryFileClient.create(1024) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileClient.uploadFromFile(uploadFile) when: @@ -900,7 +937,7 @@ class FileAPITests extends APISpec { thrown(ShareStorageException) cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "List handles"() { diff --git a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAsyncAPITests.groovy b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAsyncAPITests.groovy index c1c29ac8c2d8..df527fc925a3 100644 --- a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAsyncAPITests.groovy +++ b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAsyncAPITests.groovy @@ -33,6 +33,8 @@ import java.time.LocalDateTime import java.time.OffsetDateTime import java.time.ZoneOffset +import static com.azure.storage.file.share.FileTestHelper.* + class FileAsyncAPITests extends APISpec { ShareFileAsyncClient primaryFileAsyncClient ShareClient shareClient @@ -52,7 +54,7 @@ class FileAsyncAPITests extends APISpec { testMetadata = Collections.singletonMap("testmetadata", "value") httpHeaders = new ShareFileHttpHeaders().setContentLanguage("en") .setContentType("application/octet-stream") - smbProperties = new FileSmbProperties().setNtfsFileAttributes(EnumSet.of(NtfsFileAttributes.NORMAL)) + smbProperties = new FileSmbProperties().setNtfsFileAttributes(EnumSet. of(NtfsFileAttributes.NORMAL)) } def "Get file URL"() { @@ -71,7 +73,7 @@ class FileAsyncAPITests extends APISpec { expect: StepVerifier.create(primaryFileAsyncClient.createWithResponse(1024, null, null, null, null)) .assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 201) + assert assertResponseStatusCode(it, 201) }.verifyComplete() } @@ -81,7 +83,7 @@ class FileAsyncAPITests extends APISpec { then: createFileErrorVerifier.verifyErrorSatisfies { - assert FileTestHelper.assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) + assert assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) } } @@ -95,7 +97,7 @@ class FileAsyncAPITests extends APISpec { expect: StepVerifier.create(primaryFileAsyncClient.createWithResponse(1024, httpHeaders, smbProperties, null, testMetadata)) .assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 201) + assert assertResponseStatusCode(it, 201) assert it.getValue().getLastModified() assert it.getValue().getSmbProperties() assert it.getValue().getSmbProperties().getFilePermissionKey() @@ -116,7 +118,7 @@ class FileAsyncAPITests extends APISpec { expect: StepVerifier.create(primaryFileAsyncClient.createWithResponse(1024, httpHeaders, smbProperties, filePermission, testMetadata)) .assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 201) + assert assertResponseStatusCode(it, 201) assert it.getValue().getLastModified() assert it.getValue().getSmbProperties() assert it.getValue().getSmbProperties().getFilePermissionKey() @@ -135,7 +137,7 @@ class FileAsyncAPITests extends APISpec { then: createFileErrorVerifier.verifyErrorSatisfies { - assert FileTestHelper.assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) + assert assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) } } @@ -168,6 +170,7 @@ class FileAsyncAPITests extends APISpec { /* * Tests downloading a file using a default client that doesn't have a HttpClient passed to it. */ + @Requires({ liveMode() }) @Unroll def "Download file buffer copy"() { @@ -179,7 +182,7 @@ class FileAsyncAPITests extends APISpec { def fileClient = shareServiceAsyncClient.getShareAsyncClient(shareName) .createFile(filePath, fileSize).block() - def file = FileTestHelper.getRandomFile(fileSize) + def file = getRandomFile(fileSize) fileClient.uploadFromFile(file.toPath().toString()).block() def outFile = new File(testResourceName.randomName(methodName, 60) + ".txt") if (outFile.exists()) { @@ -190,7 +193,7 @@ class FileAsyncAPITests extends APISpec { fileClient.downloadToFile(outFile.toPath().toString()).block() then: - FileTestHelper.compareFiles(file, outFile, 0, fileSize) + compareFiles(file, outFile, 0, fileSize) cleanup: shareServiceAsyncClient.deleteShare(shareName).block() @@ -216,11 +219,11 @@ class FileAsyncAPITests extends APISpec { then: uploadVerifier.assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 201) + assert assertResponseStatusCode(it, 201) }.verifyComplete() downloadVerifier.assertNext({ response -> - assert FileTestHelper.assertResponseStatusCode(response, 200) + assert assertResponseStatusCode(response, 200) def headers = response.getDeserializedHeaders() assert headers.getContentLength() == defaultDataLength assert headers.getETag() @@ -252,14 +255,14 @@ class FileAsyncAPITests extends APISpec { then: uploadVerifier.assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 201) + assert assertResponseStatusCode(it, 201) }.verifyComplete() downloadVerifier.assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 206) + assert assertResponseStatusCode(it, 206) assert it.getDeserializedHeaders().getContentLength() == defaultDataLength FluxUtil.collectBytesInByteBufferStream(it.getValue()) - .flatMap({ data -> assert data == defaultData.array()}) + .flatMap({ data -> assert data == defaultData.array() }) }.verifyComplete() cleanup: @@ -272,7 +275,7 @@ class FileAsyncAPITests extends APISpec { then: updateDataErrorVerifier.verifyErrorSatisfies { - assert FileTestHelper.assertExceptionStatusCodeAndMessage(it, 404, ShareErrorCode.RESOURCE_NOT_FOUND) + assert assertExceptionStatusCodeAndMessage(it, 404, ShareErrorCode.RESOURCE_NOT_FOUND) } cleanup: @@ -335,7 +338,7 @@ class FileAsyncAPITests extends APISpec { then: downloadDataErrorVerifier.verifyErrorSatisfies({ - assert FileTestHelper.assertExceptionStatusCodeAndMessage(it, 404, ShareErrorCode.RESOURCE_NOT_FOUND) + assert assertExceptionStatusCodeAndMessage(it, 404, ShareErrorCode.RESOURCE_NOT_FOUND) }) } @@ -376,7 +379,7 @@ class FileAsyncAPITests extends APISpec { then: clearRangeVerifier.assertNext { - FileTestHelper.assertResponseStatusCode(it, 201) + assertResponseStatusCode(it, 201) }.verifyComplete() downloadResponseVerifier.assertNext { @@ -402,7 +405,7 @@ class FileAsyncAPITests extends APISpec { then: clearRangeVerifier.assertNext { - FileTestHelper.assertResponseStatusCode(it, 201) + assertResponseStatusCode(it, 201) }.verifyComplete() downloadResponseVerifier.assertNext { @@ -430,7 +433,7 @@ class FileAsyncAPITests extends APISpec { then: clearRangeErrorVerifier.verifyErrorSatisfies { - FileTestHelper.assertExceptionStatusCodeAndMessage(it, 416, ShareErrorCode.INVALID_RANGE) + assertExceptionStatusCodeAndMessage(it, 416, ShareErrorCode.INVALID_RANGE) } } @@ -446,7 +449,7 @@ class FileAsyncAPITests extends APISpec { then: clearRangeErrorVerifier.verifyErrorSatisfies { - FileTestHelper.assertExceptionStatusCodeAndMessage(it, 416, ShareErrorCode.INVALID_RANGE) + assertExceptionStatusCodeAndMessage(it, 416, ShareErrorCode.INVALID_RANGE) } cleanup: @@ -492,7 +495,7 @@ class FileAsyncAPITests extends APISpec { uploadFromFileErrorVerifier.verifyErrorSatisfies({ it instanceof NoSuchFileException }) cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Upload and download file exists"() { @@ -516,7 +519,7 @@ class FileAsyncAPITests extends APISpec { downloadToFileErrorVerifier.verifyErrorSatisfies({ it instanceof FileAlreadyExistsException }) cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Upload and download to file does not exist"() { @@ -543,7 +546,7 @@ class FileAsyncAPITests extends APISpec { scanner.close() cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Upload from file lease"() { @@ -551,7 +554,7 @@ class FileAsyncAPITests extends APISpec { primaryFileAsyncClient.create(1024).block() def leaseId = createLeaseClient(primaryFileAsyncClient).acquireLease().block() def fileName = testResourceName.randomName("file", 60) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) when: def verifier = StepVerifier.create(primaryFileAsyncClient.uploadFromFile(uploadFile, new ShareRequestConditions().setLeaseId(leaseId))) @@ -560,7 +563,7 @@ class FileAsyncAPITests extends APISpec { verifier.verifyComplete() cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Upload from file lease fail"() { @@ -568,7 +571,7 @@ class FileAsyncAPITests extends APISpec { primaryFileAsyncClient.create(defaultDataLength).block() createLeaseClient(primaryFileAsyncClient).acquireLease().block() def fileName = testResourceName.randomName("file", 60) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) when: @@ -579,7 +582,7 @@ class FileAsyncAPITests extends APISpec { verifier.verifyError(ShareStorageException) cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Download to file lease"() { @@ -598,7 +601,7 @@ class FileAsyncAPITests extends APISpec { verifier.verifyComplete() cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Download to file lease fail"() { @@ -616,7 +619,7 @@ class FileAsyncAPITests extends APISpec { verifier.verifyError(ShareStorageException) cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Upload range from URL"() { @@ -688,7 +691,7 @@ class FileAsyncAPITests extends APISpec { verifier.verifyComplete() cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Upload range from URL lease fail"() { @@ -722,7 +725,7 @@ class FileAsyncAPITests extends APISpec { verifier.verifyError(ShareStorageException) cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "Start copy"() { @@ -846,7 +849,7 @@ class FileAsyncAPITests extends APISpec { expect: StepVerifier.create(primaryFileAsyncClient.deleteWithResponse()) .assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 202) + assert assertResponseStatusCode(it, 202) }.verifyComplete() } @@ -856,7 +859,7 @@ class FileAsyncAPITests extends APISpec { then: deleteFileErrorVerifier.verifyErrorSatisfies { - assert FileTestHelper.assertExceptionStatusCodeAndMessage(it, 404, ShareErrorCode.RESOURCE_NOT_FOUND) + assert assertExceptionStatusCodeAndMessage(it, 404, ShareErrorCode.RESOURCE_NOT_FOUND) } } @@ -868,7 +871,7 @@ class FileAsyncAPITests extends APISpec { expect: StepVerifier.create(primaryFileAsyncClient.deleteWithResponse(new ShareRequestConditions().setLeaseId(leaseId))) .assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 202) + assert assertResponseStatusCode(it, 202) }.verifyComplete() } @@ -891,7 +894,7 @@ class FileAsyncAPITests extends APISpec { then: getPropertiesVerifier.assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 200) + assert assertResponseStatusCode(it, 200) assert it.getValue().getETag() assert it.getValue().getLastModified() assert it.getValue().getLastModified() @@ -952,7 +955,7 @@ class FileAsyncAPITests extends APISpec { expect: StepVerifier.create(primaryFileAsyncClient.setPropertiesWithResponse(512, httpHeaders, smbProperties, null)) .assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 200) + assert assertResponseStatusCode(it, 200) assert it.getValue().getSmbProperties() assert it.getValue().getSmbProperties().getFilePermissionKey() assert it.getValue().getSmbProperties().getNtfsFileAttributes() @@ -973,7 +976,7 @@ class FileAsyncAPITests extends APISpec { expect: StepVerifier.create(primaryFileAsyncClient.setPropertiesWithResponse(512, httpHeaders, smbProperties, filePermission)) .assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 200) + assert assertResponseStatusCode(it, 200) assert it.getValue().getSmbProperties() assert it.getValue().getSmbProperties().getFilePermissionKey() assert it.getValue().getSmbProperties().getNtfsFileAttributes() @@ -1015,7 +1018,7 @@ class FileAsyncAPITests extends APISpec { then: setHttpHeaderVerifier.verifyErrorSatisfies { - assert FileTestHelper.assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) + assert assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.OUT_OF_RANGE_INPUT) } } @@ -1034,7 +1037,7 @@ class FileAsyncAPITests extends APISpec { assert testMetadata == it.getMetadata() }.verifyComplete() setPropertiesVerifier.assertNext { - assert FileTestHelper.assertResponseStatusCode(it, 200) + assert assertResponseStatusCode(it, 200) }.verifyComplete() getPropertiesAfterVerifier.assertNext { assert updatedMetadata == it.getMetadata() @@ -1051,7 +1054,7 @@ class FileAsyncAPITests extends APISpec { then: setMetadataErrorVerifier.verifyErrorSatisfies { - assert FileTestHelper.assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.EMPTY_METADATA_KEY) + assert assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.EMPTY_METADATA_KEY) } } @@ -1087,7 +1090,7 @@ class FileAsyncAPITests extends APISpec { given: primaryFileAsyncClient.createWithResponse(1024, null, null, null, null).block() def fileName = testResourceName.randomName("file", 60) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileAsyncClient.uploadFromFile(uploadFile).block() expect: @@ -1098,14 +1101,14 @@ class FileAsyncAPITests extends APISpec { }.verifyComplete() cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "List ranges with range"() { given: primaryFileAsyncClient.createWithResponse(1024, null, null, null, null).block() def fileName = testResourceName.randomName("file", 60) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileAsyncClient.uploadFromFile(uploadFile).block() expect: @@ -1116,14 +1119,14 @@ class FileAsyncAPITests extends APISpec { }.verifyComplete() cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "List ranges lease"() { given: primaryFileAsyncClient.createWithResponse(1024, null, null, null, null).block() def fileName = testResourceName.randomName("file", 60) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileAsyncClient.uploadFromFile(uploadFile).block() def leaseId = createLeaseClient(primaryFileAsyncClient).acquireLease().block() @@ -1132,14 +1135,14 @@ class FileAsyncAPITests extends APISpec { .expectNextCount(1).verifyComplete() cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) } def "List ranges lease fail"() { given: primaryFileAsyncClient.createWithResponse(1024, null, null, null, null).block() def fileName = testResourceName.randomName("file", 60) - def uploadFile = FileTestHelper.createRandomFileWithLength(1024, testFolder, fileName) + def uploadFile = createRandomFileWithLength(1024, testFolder, fileName) primaryFileAsyncClient.uploadFromFile(uploadFile).block() createLeaseClient(primaryFileAsyncClient).acquireLease().block() @@ -1148,7 +1151,60 @@ class FileAsyncAPITests extends APISpec { .verifyError(ShareStorageException) cleanup: - FileTestHelper.deleteFilesIfExists(testFolder.getPath()) + deleteFilesIfExists(testFolder.getPath()) + } + + @Unroll + def "List ranges diff"() { + setup: + def snapshotId = primaryFileAsyncClient.create(4 * Constants.MB) + .then(primaryFileAsyncClient.upload(Flux.just(getRandomByteBuffer(4 * Constants.MB)), 4 * Constants.MB)) + .then(primaryFileServiceAsyncClient.getShareAsyncClient(primaryFileAsyncClient.getShareName()) + .createSnapshot() + .map({ it.getSnapshot() })) + .block() + + Flux.fromIterable(rangesToUpdate) + .flatMap({ + def size = it.getEnd() - it.getStart() + 1 + primaryFileAsyncClient.uploadWithResponse(Flux.just(getRandomByteBuffer((int) size)), size, it.getStart()) + }).blockLast() + + Flux.fromIterable(rangesToClear) + .flatMap({ + primaryFileAsyncClient.clearRangeWithResponse(it.getEnd() - it.getStart() + 1, it.getStart()) + }) + .blockLast() + + expect: + StepVerifier.create(primaryFileAsyncClient.listRangesDiff(snapshotId)) + .assertNext({ + it.getRanges().size() == expectedRanges.size() + it.getClearRanges().size() == expectedClearRanges.size() + + for (def i = 0; i < expectedRanges.size(); i++) { + def actualRange = it.getRanges().get(i) + def expectedRange = expectedRanges.get(i) + expectedRange.getStart() == actualRange.getStart() + expectedRange.getEnd() == actualRange.getEnd() + } + + for (def i = 0; i < expectedClearRanges.size(); i++) { + def actualRange = it.getClearRanges().get(i) + def expectedRange = expectedClearRanges.get(i) + expectedRange.getStart() == actualRange.getStart() + expectedRange.getEnd() == actualRange.getEnd() + } + }) + .verifyComplete() + + where: + rangesToUpdate | rangesToClear | expectedRanges | expectedClearRanges + createFileRanges() | createFileRanges() | createFileRanges() | createClearRanges() + createFileRanges(0, 511) | createFileRanges() | createFileRanges(0, 511) | createClearRanges() + createFileRanges() | createFileRanges(0, 511) | createFileRanges() | createClearRanges(0, 511) + createFileRanges(0, 511) | createFileRanges(512, 1023) | createFileRanges(0, 511) | createClearRanges(512, 1023) + createFileRanges(0, 511, 1024, 1535) | createFileRanges(512, 1023, 1536, 2047) | createFileRanges(0, 511, 1024, 1535) | createClearRanges(512, 1023, 1536, 2047) } def "List handles"() { @@ -1187,7 +1243,7 @@ class FileAsyncAPITests extends APISpec { expect: StepVerifier.create(primaryFileAsyncClient.forceCloseHandle("invalidHandleId")) - .verifyErrorSatisfies({ it instanceof ShareStorageException }) + .verifyErrorSatisfies({ it instanceof ShareStorageException }) } def "Force close all handles min"() { diff --git a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileTestHelper.groovy b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileTestHelper.groovy index db4f916cabce..a2cb7721d1ab 100644 --- a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileTestHelper.groovy +++ b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileTestHelper.groovy @@ -4,8 +4,11 @@ package com.azure.storage.file.share import com.azure.core.http.rest.Response +import com.azure.core.util.CoreUtils import com.azure.core.util.logging.ClientLogger import com.azure.storage.common.implementation.Constants +import com.azure.storage.file.share.models.ClearRange +import com.azure.storage.file.share.models.FileRange import com.azure.storage.file.share.models.ShareCorsRule import com.azure.storage.file.share.models.ShareErrorCode import com.azure.storage.file.share.models.ShareItem @@ -14,6 +17,7 @@ import com.azure.storage.file.share.models.ShareRetentionPolicy import com.azure.storage.file.share.models.ShareServiceProperties import com.azure.storage.file.share.models.ShareStorageException +import java.nio.ByteBuffer import java.nio.file.Files import java.nio.file.Path @@ -178,6 +182,10 @@ class FileTestHelper { return file } + static ByteBuffer getRandomByteBuffer(int length) { + return ByteBuffer.wrap(getRandomBuffer(length)) + } + // TODO : Move this into a common package test class? static byte[] getRandomBuffer(int length) { final Random randGenerator = new Random() @@ -219,4 +227,32 @@ class FileTestHelper { stream2.close() } } + + static def createFileRanges(long ... offsets) { + def fileRanges = [] as List + + if (CoreUtils.isNullOrEmpty(offsets)) { + return fileRanges + } + + for (def i = 0; i < offsets.length / 2; i++) { + fileRanges.add(new FileRange().setStart(offsets[i * 2]).setEnd(offsets[i * 2 + 1])) + } + + return fileRanges + } + + static def createClearRanges(long ... offsets) { + def clearRanges = [] as List + + if (CoreUtils.isNullOrEmpty(offsets)) { + return clearRanges + } + + for (def i = 0; i < offsets.length / 2; i++) { + clearRanges.add(new ClearRange().setStart(offsets[i * 2]).setEnd(offsets[i * 2 + 1])) + } + + return clearRanges + } } diff --git a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/ShareAPITests.groovy b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/ShareAPITests.groovy index cb45eabd81d9..c66d1f7b520a 100644 --- a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/ShareAPITests.groovy +++ b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/ShareAPITests.groovy @@ -24,7 +24,7 @@ import com.azure.storage.file.share.options.ShareGetStatisticsOptions import com.azure.storage.file.share.options.ShareSetAccessPolicyOptions import com.azure.storage.file.share.options.ShareSetPropertiesOptions import com.azure.storage.file.share.options.ShareSetMetadataOptions - +import spock.lang.Requires import spock.lang.Unroll import java.time.LocalDateTime @@ -236,6 +236,7 @@ class ShareAPITests extends APISpec { thrown(ShareStorageException) } + @Requires( { playbackMode() } ) def "Delete share lease"() { setup: primaryShareClient.create() @@ -245,6 +246,7 @@ class ShareAPITests extends APISpec { FileTestHelper.assertResponseStatusCode(primaryShareClient.deleteWithResponse(new ShareDeleteOptions().setRequestConditions(new ShareRequestConditions().setLeaseId(leaseID)), null, null), 202) } + @Requires( { playbackMode() } ) def "Delete share lease error"() { setup: primaryShareClient.create() @@ -279,6 +281,7 @@ class ShareAPITests extends APISpec { getPropertiesResponse.getValue().getQuota() == 1 } + @Requires( { playbackMode() } ) def "Get properties lease"() { setup: primaryShareClient.create() @@ -288,6 +291,7 @@ class ShareAPITests extends APISpec { FileTestHelper.assertResponseStatusCode(primaryShareClient.getPropertiesWithResponse(new ShareGetPropertiesOptions().setRequestConditions(new ShareRequestConditions().setLeaseId(leaseID)),null, null), 200) } + @Requires( { playbackMode() } ) def "Get properties lease error"() { setup: primaryShareClient.create() @@ -381,6 +385,7 @@ class ShareAPITests extends APISpec { id1.getAccessPolicy().getPermissions() == identifier2.getAccessPolicy().getPermissions() } + @Requires( { playbackMode() } ) def "Set access policy lease"() { setup: primaryShareClient.create() @@ -390,6 +395,7 @@ class ShareAPITests extends APISpec { primaryShareClient.setAccessPolicyWithResponse(new ShareSetAccessPolicyOptions().setRequestConditions(new ShareRequestConditions().setLeaseId(leaseID)), null, null).getStatusCode() == 200 } + @Requires( { playbackMode() } ) def "Set access policy lease error"() { setup: primaryShareClient.create() @@ -434,6 +440,7 @@ class ShareAPITests extends APISpec { id.getAccessPolicy().getPermissions() == identifier.getAccessPolicy().getPermissions() } + @Requires( { playbackMode() } ) def "Get access policy lease"() { setup: primaryShareClient.create() @@ -446,6 +453,7 @@ class ShareAPITests extends APISpec { !response.iterator().hasNext() } + @Requires( { playbackMode() } ) def "Get access policy lease error"() { setup: primaryShareClient.create() @@ -501,6 +509,7 @@ class ShareAPITests extends APISpec { getAccessTierAfterResponse.getAccessTierTransitionState() == "pending-from-hot" } + @Requires( { playbackMode() } ) def "Set properties lease"() { given: primaryShareClient.createWithResponse(new ShareCreateOptions().setAccessTier(ShareAccessTier.HOT), null, null) @@ -514,6 +523,7 @@ class ShareAPITests extends APISpec { FileTestHelper.assertResponseStatusCode(setAccessTierResponse, 200) } + @Requires( { playbackMode() } ) def "Set properties lease error"() { given: primaryShareClient.createWithResponse(new ShareCreateOptions().setAccessTier(ShareAccessTier.HOT), null, null) @@ -551,6 +561,7 @@ class ShareAPITests extends APISpec { metadataAfterSet == getMetadataAfterResponse.getMetadata() } + @Requires( { playbackMode() } ) def "Set metadata lease"() { given: primaryShareClient.createWithResponse(null, 1, null, null) @@ -563,6 +574,7 @@ class ShareAPITests extends APISpec { FileTestHelper.assertResponseStatusCode(resp, 200) } + @Requires( { playbackMode() } ) def "Set metadata lease error"() { given: primaryShareClient.createWithResponse(null, 1, null, null) @@ -607,6 +619,7 @@ class ShareAPITests extends APISpec { (long) 3 * Constants.GB || 3 } + @Requires( { playbackMode() } ) def "Get statistics lease"() { setup: primaryShareClient.create() @@ -619,6 +632,7 @@ class ShareAPITests extends APISpec { FileTestHelper.assertResponseStatusCode(resp, 200) } + @Requires( { playbackMode() } ) def "Get statistics lease error"() { setup: primaryShareClient.create() diff --git a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/specialized/LeaseAPITest.groovy b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/specialized/LeaseAPITest.groovy index 6d973daf52ad..d68c70a53786 100644 --- a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/specialized/LeaseAPITest.groovy +++ b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/specialized/LeaseAPITest.groovy @@ -11,6 +11,7 @@ import com.azure.storage.file.share.models.LeaseStateType import com.azure.storage.file.share.models.ShareStorageException import com.azure.storage.file.share.options.ShareAcquireLeaseOptions import com.azure.storage.file.share.options.ShareBreakLeaseOptions +import spock.lang.Requires import spock.lang.Unroll import java.time.Duration @@ -159,6 +160,7 @@ class LeaseAPITest extends APISpec { } @Unroll + @Requires( { playbackMode() } ) def "Acquire share lease"() { setup: def leaseResponse = createLeaseClient(shareClient, proposedID).acquireLeaseWithResponse(new ShareAcquireLeaseOptions().setDuration(leaseTime), null, null) @@ -179,11 +181,13 @@ class LeaseAPITest extends APISpec { UUID.randomUUID().toString() | -1 || LeaseStateType.LEASED | LeaseDurationType.INFINITE } + @Requires( { playbackMode() } ) def "Acquire share lease min"() { expect: createLeaseClient(shareClient).acquireLeaseWithResponse(null, null, null).getStatusCode() == 201 } + @Requires( { playbackMode() } ) def "Acquire share lease snapshot"() { setup: def shareSnapshot = shareClient.createSnapshot().getSnapshot() @@ -197,6 +201,7 @@ class LeaseAPITest extends APISpec { createLeaseClient(shareClient, resp.getValue()).releaseLeaseWithResponse(null, null) } + @Requires( { playbackMode() } ) def "Acquire share lease snapshot fail"() { setup: def shareSnapshot = "2020-08-19T19:26:08.0000000Z" @@ -210,6 +215,7 @@ class LeaseAPITest extends APISpec { } @Unroll + @Requires( { playbackMode() } ) def "Acquire share lease duration fail"() { setup: def leaseClient = createLeaseClient(shareClient) @@ -227,6 +233,7 @@ class LeaseAPITest extends APISpec { 70 | _ } + @Requires( { playbackMode() } ) def "Acquire share lease error"() { setup: shareClient = shareBuilderHelper(interceptorManager, generateShareName()).buildClient() @@ -238,6 +245,7 @@ class LeaseAPITest extends APISpec { thrown(ShareStorageException) } + @Requires( { playbackMode() } ) def "Renew share lease"() { setup: def leaseID = setupShareLeaseCondition(shareClient, receivedLeaseID) @@ -251,6 +259,7 @@ class LeaseAPITest extends APISpec { validateBasicHeaders(renewLeaseResponse.getHeaders()) } + @Requires( { playbackMode() } ) def "Renew share lease min"() { setup: def leaseID = setupShareLeaseCondition(shareClient, receivedLeaseID) @@ -259,6 +268,7 @@ class LeaseAPITest extends APISpec { createLeaseClient(shareClient, leaseID).renewLeaseWithResponse(null, null).getStatusCode() == 200 } + @Requires( { playbackMode() } ) def "Renew share lease snapshot"() { setup: def shareSnapshot = shareClient.createSnapshot().getSnapshot() @@ -273,6 +283,7 @@ class LeaseAPITest extends APISpec { createLeaseClient(shareClient, resp.getValue()).releaseLeaseWithResponse(null, null) } + @Requires( { playbackMode() } ) def "Renew share lease snapshot fail"() { setup: def shareSnapshot = "2020-08-19T19:26:08.0000000Z" @@ -285,6 +296,7 @@ class LeaseAPITest extends APISpec { thrown(ShareStorageException) } + @Requires( { playbackMode() } ) def "Renew share lease error"() { setup: shareClient = shareBuilderHelper(interceptorManager, generateShareName()).buildClient() @@ -296,6 +308,7 @@ class LeaseAPITest extends APISpec { thrown(ShareStorageException) } + @Requires( { playbackMode() } ) def "Release share lease"() { setup: def leaseID = setupShareLeaseCondition(shareClient, receivedLeaseID) @@ -307,6 +320,7 @@ class LeaseAPITest extends APISpec { validateBasicHeaders(releaseLeaseResponse.getHeaders()) } + @Requires( { playbackMode() } ) def "Release share lease min"() { setup: def leaseID = setupShareLeaseCondition(shareClient, receivedLeaseID) @@ -315,6 +329,7 @@ class LeaseAPITest extends APISpec { createLeaseClient(shareClient, leaseID).releaseLeaseWithResponse(null, null).getStatusCode() == 200 } + @Requires( { playbackMode() } ) def "Release share lease snapshot"() { setup: def shareSnapshot = shareClient.createSnapshot().getSnapshot() @@ -325,6 +340,7 @@ class LeaseAPITest extends APISpec { createLeaseClient(shareClient, leaseID).releaseLeaseWithResponse(null, null).getStatusCode() == 200 } + @Requires( { playbackMode() } ) def "Release share lease snapshot fail"() { setup: def shareSnapshot = "2020-08-19T19:26:08.0000000Z" @@ -337,6 +353,7 @@ class LeaseAPITest extends APISpec { thrown(ShareStorageException) } + @Requires( { playbackMode() } ) def "Release share lease error"() { setup: shareClient = shareBuilderHelper(interceptorManager, generateShareName()).buildClient() @@ -349,6 +366,7 @@ class LeaseAPITest extends APISpec { } @Unroll + @Requires( { playbackMode() } ) def "Break share lease"() { setup: def leaseClient = createLeaseClient(shareClient, getRandomUUID()) @@ -374,6 +392,7 @@ class LeaseAPITest extends APISpec { } + @Requires( { playbackMode() } ) def "Break share lease min"() { setup: setupShareLeaseCondition(shareClient, receivedLeaseID) @@ -382,6 +401,7 @@ class LeaseAPITest extends APISpec { createLeaseClient(shareClient).breakLeaseWithResponse(new ShareBreakLeaseOptions(), null, null).getStatusCode() == 202 } + @Requires( { playbackMode() } ) def "Break share lease snapshot"() { setup: def shareSnapshot = shareClient.createSnapshot().getSnapshot() @@ -396,6 +416,7 @@ class LeaseAPITest extends APISpec { } + @Requires( { playbackMode() } ) def "Break share lease snapshot fail"() { setup: def shareSnapshot = "2020-08-19T19:26:08.0000000Z" @@ -408,6 +429,7 @@ class LeaseAPITest extends APISpec { thrown(ShareStorageException) } + @Requires( { playbackMode() } ) def "Break share lease error"() { setup: shareClient = shareBuilderHelper(interceptorManager, generateShareName()).buildClient() @@ -419,6 +441,7 @@ class LeaseAPITest extends APISpec { thrown(ShareStorageException) } + @Requires( { playbackMode() } ) def "Change share lease"() { setup: def leaseID = setupShareLeaseCondition(shareClient, receivedLeaseID) @@ -431,6 +454,7 @@ class LeaseAPITest extends APISpec { validateBasicHeaders(changeLeaseResponse.getHeaders()) } + @Requires( { playbackMode() } ) def "Change share lease min"() { setup: def leaseID = setupShareLeaseCondition(shareClient, receivedLeaseID) @@ -439,6 +463,7 @@ class LeaseAPITest extends APISpec { createLeaseClient(shareClient, leaseID).changeLeaseWithResponse(getRandomUUID(), null, null).getStatusCode() == 200 } + @Requires( { playbackMode() } ) def "Change share lease snapshot"() { setup: def shareSnapshot = shareClient.createSnapshot().getSnapshot() @@ -453,6 +478,7 @@ class LeaseAPITest extends APISpec { createLeaseClient(shareClient, resp.getValue()).releaseLeaseWithResponse(null, null) } + @Requires( { playbackMode() } ) def "Change share lease snapshot fail"() { setup: def shareSnapshot = "2020-08-19T19:26:08.0000000Z" @@ -465,6 +491,7 @@ class LeaseAPITest extends APISpec { thrown(ShareStorageException) } + @Requires( { playbackMode() } ) def "Change share lease error"() { setup: shareClient = shareBuilderHelper(interceptorManager, generateShareName()).buildClient() diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff0.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff0.json new file mode 100644 index 000000000000..2a9b960ce33e --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff0.json @@ -0,0 +1,124 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff0971801727945a710044?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e792dd6c-e987-4c92-8ab9-2c35df85a857" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778ACEBEA2F0", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:33 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd11-601a-0004-1c73-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:35:32 GMT", + "x-ms-client-request-id" : "e792dd6c-e987-4c92-8ab9-2c35df85a857" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff0971801727945a710044/fileapitestslistrangesdiff0917599b270cd1e34646", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a9a5800f-76fc-42f1-8aca-78e61abb4e63" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:35:33.4561852Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:33 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:35:32 GMT", + "ETag" : "0x8D8778ACEF94C3C", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:35:33.4561852Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "0b80fd14-601a-0004-1d73-a9c5f4000000", + "x-ms-client-request-id" : "a9a5800f-76fc-42f1-8aca-78e61abb4e63", + "x-ms-file-last-write-time" : "2020-10-23T19:35:33.4561852Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff0971801727945a710044/fileapitestslistrangesdiff0917599b270cd1e34646?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "fff0abc7-171e-4f96-916c-a8c74df3020f", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AD2B9FF6A", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:39 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd16-601a-0004-1e73-a9c5f4000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:35:39 GMT", + "x-ms-client-request-id" : "fff0abc7-171e-4f96-916c-a8c74df3020f", + "Content-MD5" : "MgQDh41UFaq3Gg+VfMUSbQ==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff0971801727945a710044?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "7d93098d-f6ad-4720-9977-3dc96a40d2d6" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:35:40.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778ACEBEA2F0", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:33 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd1f-601a-0004-2173-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:35:41 GMT", + "x-ms-client-request-id" : "7d93098d-f6ad-4720-9977-3dc96a40d2d6" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff0971801727945a710044/fileapitestslistrangesdiff0917599b270cd1e34646?prevsharesnapshot=2020-10-23T19%3A35%3A40.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "8b8f04f7-a5ce-4724-bcfc-a2146462b5f0" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:39 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:35:42 GMT", + "ETag" : "0x8D8778AD2B9FF6A", + "x-ms-request-id" : "0b80fd23-601a-0004-2373-a9c5f4000000", + "Body" : "", + "x-ms-client-request-id" : "8b8f04f7-a5ce-4724-bcfc-a2146462b5f0", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileapitestslistrangesdiff0971801727945a710044", "fileapitestslistrangesdiff0917599b270cd1e34646" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff1.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff1.json new file mode 100644 index 000000000000..4ad6595fe2f0 --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff1.json @@ -0,0 +1,148 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff1319141ec76abaf1be42?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "de075f54-5bc7-4fa6-bb3a-2bc228ce2464" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AD4C608C0", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:43 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd25-601a-0004-2473-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:35:42 GMT", + "x-ms-client-request-id" : "de075f54-5bc7-4fa6-bb3a-2bc228ce2464" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff1319141ec76abaf1be42/fileapitestslistrangesdiff117588ed300b26df5b41", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "24c4bc70-6df9-4b72-827f-f6a9fcb5b92c" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:35:43.2515840Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:43 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:35:42 GMT", + "ETag" : "0x8D8778AD4CFF500", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:35:43.2515840Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "0b80fd27-601a-0004-2573-a9c5f4000000", + "x-ms-client-request-id" : "24c4bc70-6df9-4b72-827f-f6a9fcb5b92c", + "x-ms-file-last-write-time" : "2020-10-23T19:35:43.2515840Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff1319141ec76abaf1be42/fileapitestslistrangesdiff117588ed300b26df5b41?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "c14e3f84-2e5b-4e92-8c2b-43380fbd0c37", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AD85193E9", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:49 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd28-601a-0004-2673-a9c5f4000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:35:48 GMT", + "x-ms-client-request-id" : "c14e3f84-2e5b-4e92-8c2b-43380fbd0c37", + "Content-MD5" : "2it+8RrlSjbf0Nji0z53pA==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff1319141ec76abaf1be42?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "aff54343-7cf5-418c-80dd-ef48ed6b54cc" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:35:49.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AD4C608C0", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:43 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd35-601a-0004-2973-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:35:48 GMT", + "x-ms-client-request-id" : "aff54343-7cf5-418c-80dd-ef48ed6b54cc" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff1319141ec76abaf1be42/fileapitestslistrangesdiff117588ed300b26df5b41?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "04eafe15-8807-4305-ab3a-7526ed405c67", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AD86807A3", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:49 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd38-601a-0004-2a73-a9c5f4000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:35:48 GMT", + "x-ms-client-request-id" : "04eafe15-8807-4305-ab3a-7526ed405c67", + "Content-MD5" : "RykPAEIXETChfv9QuDbC+w==" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff1319141ec76abaf1be42/fileapitestslistrangesdiff117588ed300b26df5b41?prevsharesnapshot=2020-10-23T19%3A35%3A49.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "d3918e72-cd22-4d4d-b27d-0e02ff3a0839" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:49 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:35:48 GMT", + "ETag" : "0x8D8778AD86807A3", + "x-ms-request-id" : "0b80fd39-601a-0004-2b73-a9c5f4000000", + "Body" : "0511", + "x-ms-client-request-id" : "d3918e72-cd22-4d4d-b27d-0e02ff3a0839", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileapitestslistrangesdiff1319141ec76abaf1be42", "fileapitestslistrangesdiff117588ed300b26df5b41" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff2.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff2.json new file mode 100644 index 000000000000..7d794c632bd9 --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff2.json @@ -0,0 +1,145 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff2222061495944aac5046?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "fc0d2430-55b1-45ab-83d8-7eb615cbec4e" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AD888BB85", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:49 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd3b-601a-0004-2c73-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:35:48 GMT", + "x-ms-client-request-id" : "fc0d2430-55b1-45ab-83d8-7eb615cbec4e" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff2222061495944aac5046/fileapitestslistrangesdiff208495e147e9cf965f43", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "787ce6e1-09cc-411b-affc-7ec6023d4de8" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:35:49.5606402Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:49 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:35:48 GMT", + "ETag" : "0x8D8778AD892A482", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:35:49.5606402Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "0b80fd3d-601a-0004-2d73-a9c5f4000000", + "x-ms-client-request-id" : "787ce6e1-09cc-411b-affc-7ec6023d4de8", + "x-ms-file-last-write-time" : "2020-10-23T19:35:49.5606402Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff2222061495944aac5046/fileapitestslistrangesdiff208495e147e9cf965f43?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e981af9c-88a9-41dc-a567-6d95a0d9f832", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778ADC1358D1", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:55 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd3e-601a-0004-2e73-a9c5f4000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:35:54 GMT", + "x-ms-client-request-id" : "e981af9c-88a9-41dc-a567-6d95a0d9f832", + "Content-MD5" : "Q2Vj31zCIHQI23xIHDX31g==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff2222061495944aac5046?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a0e97407-e7f1-47f2-b9e0-a51aa0a4b0b1" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:35:55.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AD888BB85", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:49 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd46-601a-0004-3073-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:35:54 GMT", + "x-ms-client-request-id" : "a0e97407-e7f1-47f2-b9e0-a51aa0a4b0b1" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff2222061495944aac5046/fileapitestslistrangesdiff208495e147e9cf965f43?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "13312b50-cc36-455b-840b-8a8158780a6e" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778ADC32F687", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:55 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd48-601a-0004-3273-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:35:54 GMT", + "x-ms-client-request-id" : "13312b50-cc36-455b-840b-8a8158780a6e" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff2222061495944aac5046/fileapitestslistrangesdiff208495e147e9cf965f43?prevsharesnapshot=2020-10-23T19%3A35%3A55.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "3ef484e4-e96a-4ff4-ba44-44bd5dda04d0" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:55 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:35:54 GMT", + "ETag" : "0x8D8778ADC32F687", + "x-ms-request-id" : "0b80fd49-601a-0004-3373-a9c5f4000000", + "Body" : "0511", + "x-ms-client-request-id" : "3ef484e4-e96a-4ff4-ba44-44bd5dda04d0", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileapitestslistrangesdiff2222061495944aac5046", "fileapitestslistrangesdiff208495e147e9cf965f43" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff3.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff3.json new file mode 100644 index 000000000000..f2eee160fc07 --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff3.json @@ -0,0 +1,169 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff3566829989544019f841?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "d2901544-75a0-44ac-a773-9c5bf9d83790" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778ADC52C39A", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:55 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd4b-601a-0004-3473-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:35:55 GMT", + "x-ms-client-request-id" : "d2901544-75a0-44ac-a773-9c5bf9d83790" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff3566829989544019f841/fileapitestslistrangesdiff3860919fba80a59d1941", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "7a7a6d53-1c5e-45d6-9e72-494488834d80" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:35:55.9107350Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:55 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:35:55 GMT", + "ETag" : "0x8D8778ADC5B9716", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:35:55.9107350Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "0b80fd4d-601a-0004-3573-a9c5f4000000", + "x-ms-client-request-id" : "7a7a6d53-1c5e-45d6-9e72-494488834d80", + "x-ms-file-last-write-time" : "2020-10-23T19:35:55.9107350Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff3566829989544019f841/fileapitestslistrangesdiff3860919fba80a59d1941?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a30d4c60-9504-48c3-b1d7-c14455bec7b2", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778ADFD2D337", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:01 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd4f-601a-0004-3773-a9c5f4000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:36:01 GMT", + "x-ms-client-request-id" : "a30d4c60-9504-48c3-b1d7-c14455bec7b2", + "Content-MD5" : "ZwbgIHaMJ41wNdywuwKuEA==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff3566829989544019f841?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "334f1d3b-c2a1-48e9-9481-176799ab96ad" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:36:01.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778ADC52C39A", + "Last-Modified" : "Fri, 23 Oct 2020 19:35:55 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd5a-601a-0004-3a73-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:36:01 GMT", + "x-ms-client-request-id" : "334f1d3b-c2a1-48e9-9481-176799ab96ad" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff3566829989544019f841/fileapitestslistrangesdiff3860919fba80a59d1941?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "86f54045-0990-4e52-a633-306d33c7398b", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778ADFF1381B", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:01 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd5b-601a-0004-3b73-a9c5f4000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:36:01 GMT", + "x-ms-client-request-id" : "86f54045-0990-4e52-a633-306d33c7398b", + "Content-MD5" : "M8TGtFtK+E9gEf7aAk0TeA==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff3566829989544019f841/fileapitestslistrangesdiff3860919fba80a59d1941?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "7a273d3f-8de4-4561-aafd-40cbaecef67e" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778ADFF97786", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:01 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd5d-601a-0004-3c73-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:36:01 GMT", + "x-ms-client-request-id" : "7a273d3f-8de4-4561-aafd-40cbaecef67e" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff3566829989544019f841/fileapitestslistrangesdiff3860919fba80a59d1941?prevsharesnapshot=2020-10-23T19%3A36%3A01.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "2f7e27fd-e9dc-42f8-8b26-69a0ed196df8" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:01 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:36:01 GMT", + "ETag" : "0x8D8778ADFF97786", + "x-ms-request-id" : "0b80fd5e-601a-0004-3d73-a9c5f4000000", + "Body" : "05115121023", + "x-ms-client-request-id" : "2f7e27fd-e9dc-42f8-8b26-69a0ed196df8", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileapitestslistrangesdiff3566829989544019f841", "fileapitestslistrangesdiff3860919fba80a59d1941" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff4.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff4.json new file mode 100644 index 000000000000..7e3589c88825 --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsListRangesDiff4.json @@ -0,0 +1,214 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff44520981b52588f8394d?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "95a30f0c-ffe4-4e26-8db4-1bec196de3eb" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AE01772F0", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:02 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd60-601a-0004-3e73-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:36:01 GMT", + "x-ms-client-request-id" : "95a30f0c-ffe4-4e26-8db4-1bec196de3eb" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff44520981b52588f8394d/fileapitestslistrangesdiff43708734f80127cef246", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "45574bf2-bf18-41eb-b26a-6e5dc8626eaf" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:36:02.2688384Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:02 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:36:01 GMT", + "ETag" : "0x8D8778AE025C280", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:36:02.2688384Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "0b80fd62-601a-0004-3f73-a9c5f4000000", + "x-ms-client-request-id" : "45574bf2-bf18-41eb-b26a-6e5dc8626eaf", + "x-ms-file-last-write-time" : "2020-10-23T19:36:02.2688384Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff44520981b52588f8394d/fileapitestslistrangesdiff43708734f80127cef246?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "95109ad8-1c78-4d55-9755-f29e613ddfae", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AE390C698", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:08 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd63-601a-0004-4073-a9c5f4000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:36:07 GMT", + "x-ms-client-request-id" : "95109ad8-1c78-4d55-9755-f29e613ddfae", + "Content-MD5" : "fn0MIQfr1C2U60ck5C1Fkg==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff44520981b52588f8394d?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "0fb44088-dc97-4ee8-897b-1481bf3824b7" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:36:08.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AE01772F0", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:02 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd6c-601a-0004-4373-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:36:07 GMT", + "x-ms-client-request-id" : "0fb44088-dc97-4ee8-897b-1481bf3824b7" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff44520981b52588f8394d/fileapitestslistrangesdiff43708734f80127cef246?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "1114d039-08a9-4928-9397-3b14d67090b6", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AE3AA6F6E", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:08 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd6d-601a-0004-4473-a9c5f4000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:36:07 GMT", + "x-ms-client-request-id" : "1114d039-08a9-4928-9397-3b14d67090b6", + "Content-MD5" : "vz7foak6A9Pwv0HjmPKA4w==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff44520981b52588f8394d/fileapitestslistrangesdiff43708734f80127cef246?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "0a719f51-38a2-4518-ba0b-275cd18b8eea", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AE3B17603", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:08 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd6e-601a-0004-4573-a9c5f4000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:36:07 GMT", + "x-ms-client-request-id" : "0a719f51-38a2-4518-ba0b-275cd18b8eea", + "Content-MD5" : "psgyztntF/eWt6iDy2Cgbw==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff44520981b52588f8394d/fileapitestslistrangesdiff43708734f80127cef246?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "ed7ac37b-a3f6-4bcd-92c6-29a01cf10961" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AE3B98E52", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:08 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd6f-601a-0004-4673-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:36:07 GMT", + "x-ms-client-request-id" : "ed7ac37b-a3f6-4bcd-92c6-29a01cf10961" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff44520981b52588f8394d/fileapitestslistrangesdiff43708734f80127cef246?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "ba648583-dcec-4f50-a346-3767c8d49f73" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778AE3C094E7", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:08 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "0b80fd70-601a-0004-4773-a9c5f4000000", + "Date" : "Fri, 23 Oct 2020 19:36:07 GMT", + "x-ms-client-request-id" : "ba648583-dcec-4f50-a346-3767c8d49f73" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileapitestslistrangesdiff44520981b52588f8394d/fileapitestslistrangesdiff43708734f80127cef246?prevsharesnapshot=2020-10-23T19%3A36%3A08.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "3b8f9dd4-6522-4776-8516-e799d6fe1728" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:36:08 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:36:07 GMT", + "ETag" : "0x8D8778AE3C094E7", + "x-ms-request-id" : "0b80fd71-601a-0004-4873-a9c5f4000000", + "Body" : "051151210231024153515362047", + "x-ms-client-request-id" : "3b8f9dd4-6522-4776-8516-e799d6fe1728", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileapitestslistrangesdiff44520981b52588f8394d", "fileapitestslistrangesdiff43708734f80127cef246" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff0.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff0.json new file mode 100644 index 000000000000..6983442e406f --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff0.json @@ -0,0 +1,124 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff027689f25c969f76c?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "48d4dccc-5e16-44e4-b2f9-bccba2ee4107" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D877895FA5A2FA", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:17 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d814-f01a-0023-2372-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:16 GMT", + "x-ms-client-request-id" : "48d4dccc-5e16-44e4-b2f9-bccba2ee4107" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff027689f25c969f76c/fileasyncapitestslistrangesdiff0855387618dad0f0e", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e4356993-57c0-41f4-bc96-41198da234a1" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:25:17.8266993Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:17 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:17 GMT", + "ETag" : "0x8D877896007B171", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:25:17.8266993Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "c6a9d818-f01a-0023-2472-a95fbd000000", + "x-ms-client-request-id" : "e4356993-57c0-41f4-bc96-41198da234a1", + "x-ms-file-last-write-time" : "2020-10-23T19:25:17.8266993Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff027689f25c969f76c/fileasyncapitestslistrangesdiff0855387618dad0f0e?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "6c24d715-bd62-4511-821b-9b3400f87094", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778963D38AE0", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:24 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d81a-f01a-0023-2572-a95fbd000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:23 GMT", + "x-ms-client-request-id" : "6c24d715-bd62-4511-821b-9b3400f87094", + "Content-MD5" : "el6sFbI5QpqgPcmPL3zvLg==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff027689f25c969f76c?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "57221a69-cb30-42b3-9f80-5c791e0c7645" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:25:24.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D877895FA5A2FA", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:17 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d823-f01a-0023-2972-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:23 GMT", + "x-ms-client-request-id" : "57221a69-cb30-42b3-9f80-5c791e0c7645" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff027689f25c969f76c/fileasyncapitestslistrangesdiff0855387618dad0f0e?prevsharesnapshot=2020-10-23T19%3A25%3A24.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "0fed3537-9eb5-4303-a5dc-c51453e1bd63" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:24 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:25:24 GMT", + "ETag" : "0x8D8778963D38AE0", + "Content-Length" : "51", + "x-ms-request-id" : "c6a9d824-f01a-0023-2a72-a95fbd000000", + "Body" : "", + "x-ms-client-request-id" : "0fed3537-9eb5-4303-a5dc-c51453e1bd63", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileasyncapitestslistrangesdiff027689f25c969f76c", "fileasyncapitestslistrangesdiff0855387618dad0f0e" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff1.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff1.json new file mode 100644 index 000000000000..2d41ac60a92a --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff1.json @@ -0,0 +1,148 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff109485c713b811a48?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "81756ff9-32a2-465a-841b-e0378b8bc5f7" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778964AED1F1", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:25 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d827-f01a-0023-2b72-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:25 GMT", + "x-ms-client-request-id" : "81756ff9-32a2-465a-841b-e0378b8bc5f7" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff109485c713b811a48/fileasyncapitestslistrangesdiff15159784db21a3643", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "a3a19d1f-17a1-42be-aa4d-fd2ff56584f2" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:25:25.7192738Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:25 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:25 GMT", + "ETag" : "0x8D8778964BC0122", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:25:25.7192738Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "c6a9d829-f01a-0023-2c72-a95fbd000000", + "x-ms-client-request-id" : "a3a19d1f-17a1-42be-aa4d-fd2ff56584f2", + "x-ms-file-last-write-time" : "2020-10-23T19:25:25.7192738Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff109485c713b811a48/fileasyncapitestslistrangesdiff15159784db21a3643?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e6ea8046-b212-4d65-b80e-d459a99e77fe", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D877896893EB83", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:32 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d82a-f01a-0023-2d72-a95fbd000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:31 GMT", + "x-ms-client-request-id" : "e6ea8046-b212-4d65-b80e-d459a99e77fe", + "Content-MD5" : "qCbPVCEbWSw22ZTay26hzQ==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff109485c713b811a48?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "16922d1d-0dd1-4d9b-945c-9499778deec1" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:25:32.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778964AED1F1", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:25 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d837-f01a-0023-3072-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:31 GMT", + "x-ms-client-request-id" : "16922d1d-0dd1-4d9b-945c-9499778deec1" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff109485c713b811a48/fileasyncapitestslistrangesdiff15159784db21a3643?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "f56d56c6-73a3-4c8e-93ea-63ef9e708e53", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778968CD5912", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:32 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d839-f01a-0023-3172-a95fbd000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:31 GMT", + "x-ms-client-request-id" : "f56d56c6-73a3-4c8e-93ea-63ef9e708e53", + "Content-MD5" : "UIGBXvZJYGrxPzCcPAXlUg==" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff109485c713b811a48/fileasyncapitestslistrangesdiff15159784db21a3643?prevsharesnapshot=2020-10-23T19%3A25%3A32.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "043551a8-10db-48df-9e5e-94cc070cf19e" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:32 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:25:31 GMT", + "ETag" : "0x8D8778968CD5912", + "Content-Length" : "103", + "x-ms-request-id" : "c6a9d83a-f01a-0023-3272-a95fbd000000", + "Body" : "0511", + "x-ms-client-request-id" : "043551a8-10db-48df-9e5e-94cc070cf19e", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileasyncapitestslistrangesdiff109485c713b811a48", "fileasyncapitestslistrangesdiff15159784db21a3643" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff2.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff2.json new file mode 100644 index 000000000000..82edb39a3b3b --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff2.json @@ -0,0 +1,145 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff244353c3fd45e11b0?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "d421326c-cf92-40c2-b923-bab1350da7fa" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778968EE8DB4", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:32 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d83d-f01a-0023-3472-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:32 GMT", + "x-ms-client-request-id" : "d421326c-cf92-40c2-b923-bab1350da7fa" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff244353c3fd45e11b0/fileasyncapitestslistrangesdiff236099c4aa0b70d0d", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "0a20da02-0177-44c3-a3c2-d7a5ec6c1fd1" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:25:32.8671333Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:32 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:32 GMT", + "ETag" : "0x8D8778968FEAE65", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:25:32.8671333Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "c6a9d840-f01a-0023-3572-a95fbd000000", + "x-ms-client-request-id" : "0a20da02-0177-44c3-a3c2-d7a5ec6c1fd1", + "x-ms-file-last-write-time" : "2020-10-23T19:25:32.8671333Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff244353c3fd45e11b0/fileasyncapitestslistrangesdiff236099c4aa0b70d0d?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "24d7064e-3fc8-4a6a-8482-24f0ef3f0cfd", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D877896C8DBE20", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:38 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d841-f01a-0023-3672-a95fbd000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:38 GMT", + "x-ms-client-request-id" : "24d7064e-3fc8-4a6a-8482-24f0ef3f0cfd", + "Content-MD5" : "V3X8GGqXIMZBdjhQfO007Q==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff244353c3fd45e11b0?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "d0470b67-9df7-419c-962d-c4723cdc1472" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:25:38.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778968EE8DB4", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:32 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d847-f01a-0023-3872-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:38 GMT", + "x-ms-client-request-id" : "d0470b67-9df7-419c-962d-c4723cdc1472" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff244353c3fd45e11b0/fileasyncapitestslistrangesdiff236099c4aa0b70d0d?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "22d9ecf3-fa72-489c-aeb3-76b28ebe375d" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D877896CA25C98", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:38 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d848-f01a-0023-3972-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:38 GMT", + "x-ms-client-request-id" : "22d9ecf3-fa72-489c-aeb3-76b28ebe375d" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff244353c3fd45e11b0/fileasyncapitestslistrangesdiff236099c4aa0b70d0d?prevsharesnapshot=2020-10-23T19%3A25%3A38.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "c6bb85fa-f34d-4c53-ac75-3a82783171cc" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:38 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:25:38 GMT", + "ETag" : "0x8D877896CA25C98", + "Content-Length" : "113", + "x-ms-request-id" : "c6a9d849-f01a-0023-3a72-a95fbd000000", + "Body" : "0511", + "x-ms-client-request-id" : "c6bb85fa-f34d-4c53-ac75-3a82783171cc", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileasyncapitestslistrangesdiff244353c3fd45e11b0", "fileasyncapitestslistrangesdiff236099c4aa0b70d0d" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff3.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff3.json new file mode 100644 index 000000000000..9a0bd79879c1 --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff3.json @@ -0,0 +1,169 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff3991527c5b6a0bc2c?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "df51cc6b-f182-4c29-8b1c-8097a65c8086" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D877896CC24F09", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:39 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d84c-f01a-0023-3c72-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:38 GMT", + "x-ms-client-request-id" : "df51cc6b-f182-4c29-8b1c-8097a65c8086" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff3991527c5b6a0bc2c/fileasyncapitestslistrangesdiff391949086f13c2af9", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "d52ca394-05de-423b-a776-c67ef01bb5c7" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:25:39.2642730Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:39 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:38 GMT", + "ETag" : "0x8D877896CCECEAA", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:25:39.2642730Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "c6a9d84e-f01a-0023-3d72-a95fbd000000", + "x-ms-client-request-id" : "d52ca394-05de-423b-a776-c67ef01bb5c7", + "x-ms-file-last-write-time" : "2020-10-23T19:25:39.2642730Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff3991527c5b6a0bc2c/fileasyncapitestslistrangesdiff391949086f13c2af9?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "d849648b-237f-40d0-bf42-cd6ac7838aa7", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778970ACADF4", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:45 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d84f-f01a-0023-3e72-a95fbd000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:45 GMT", + "x-ms-client-request-id" : "d849648b-237f-40d0-bf42-cd6ac7838aa7", + "Content-MD5" : "mK+H17R2gJMhDlqjSmcZBA==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff3991527c5b6a0bc2c?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "272d000b-53b5-43d2-add7-4caef294f26e" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:25:45.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D877896CC24F09", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:39 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d873-f01a-0023-5772-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:45 GMT", + "x-ms-client-request-id" : "272d000b-53b5-43d2-add7-4caef294f26e" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff3991527c5b6a0bc2c/fileasyncapitestslistrangesdiff391949086f13c2af9?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "1dcf079c-0d59-43bb-bb96-6f135590ac48", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778970DAF542", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:46 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d874-f01a-0023-5872-a95fbd000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:45 GMT", + "x-ms-client-request-id" : "1dcf079c-0d59-43bb-bb96-6f135590ac48", + "Content-MD5" : "o7mDXQ2eBH1fnqg4a1M9jw==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff3991527c5b6a0bc2c/fileasyncapitestslistrangesdiff391949086f13c2af9?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "fb14c38e-0bd1-4454-9359-5fdaf93bd297" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778970E222F3", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:46 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d875-f01a-0023-5972-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:45 GMT", + "x-ms-client-request-id" : "fb14c38e-0bd1-4454-9359-5fdaf93bd297" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff3991527c5b6a0bc2c/fileasyncapitestslistrangesdiff391949086f13c2af9?prevsharesnapshot=2020-10-23T19%3A25%3A45.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "02e376bb-9c1f-4dee-b513-f4a8514ddb57" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:46 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:25:45 GMT", + "ETag" : "0x8D8778970E222F3", + "Content-Length" : "161", + "x-ms-request-id" : "c6a9d876-f01a-0023-5a72-a95fbd000000", + "Body" : "05115121023", + "x-ms-client-request-id" : "02e376bb-9c1f-4dee-b513-f4a8514ddb57", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileasyncapitestslistrangesdiff3991527c5b6a0bc2c", "fileasyncapitestslistrangesdiff391949086f13c2af9" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff4.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff4.json new file mode 100644 index 000000000000..2fff2a41d7a5 --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAsyncAPITestsListRangesDiff4.json @@ -0,0 +1,214 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff49440340b8d5b2976?restype=share", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "681d9fe0-83fa-4f40-94be-ffac49a45ed8" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778970FE6074", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:46 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d878-f01a-0023-5b72-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:45 GMT", + "x-ms-client-request-id" : "681d9fe0-83fa-4f40-94be-ffac49a45ed8" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff49440340b8d5b2976/fileasyncapitestslistrangesdiff450097881e6a738e5", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "64dc7fc5-3d01-4f7d-be77-8e175d63549c" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-file-permission-key" : "2189138948451189390*13168958551941065216", + "x-ms-file-id" : "13835128424026341376", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-file-creation-time" : "2020-10-23T19:25:46.3640874Z", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:46 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:45 GMT", + "ETag" : "0x8D87789710A272A", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2020-10-23T19:25:46.3640874Z", + "x-ms-file-parent-id" : "0", + "Content-Length" : "0", + "x-ms-request-id" : "c6a9d87b-f01a-0023-5c72-a95fbd000000", + "x-ms-client-request-id" : "64dc7fc5-3d01-4f7d-be77-8e175d63549c", + "x-ms-file-last-write-time" : "2020-10-23T19:25:46.3640874Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff49440340b8d5b2976/fileasyncapitestslistrangesdiff450097881e6a738e5?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e38a2b41-c477-47f4-be0e-2986727d0de8", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87789749ABDDB", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:52 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d87c-f01a-0023-5d72-a95fbd000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:51 GMT", + "x-ms-client-request-id" : "e38a2b41-c477-47f4-be0e-2986727d0de8", + "Content-MD5" : "fumkz1IO6/Z3xiWdH4nUTQ==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff49440340b8d5b2976?restype=share&comp=snapshot", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "e534b91e-54d0-4d2c-96e8-2ef59b87733d" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "x-ms-snapshot" : "2020-10-23T19:25:52.0000000Z", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778970FE6074", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:46 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d889-f01a-0023-6372-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:51 GMT", + "x-ms-client-request-id" : "e534b91e-54d0-4d2c-96e8-2ef59b87733d" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff49440340b8d5b2976/fileasyncapitestslistrangesdiff450097881e6a738e5?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "b5d24903-f55f-44df-8753-54357e94cf2e", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778974B41874", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:52 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d88b-f01a-0023-6472-a95fbd000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:51 GMT", + "x-ms-client-request-id" : "b5d24903-f55f-44df-8753-54357e94cf2e", + "Content-MD5" : "jDgJRT9kgYsJHaSBYWcvcg==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff49440340b8d5b2976/fileasyncapitestslistrangesdiff450097881e6a738e5?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "4695b74b-ec1d-4381-8a23-ca3691ad2ddc", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D8778974E25FC3", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:52 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "7a93ddd8-201a-00c4-5b72-a94fb0000000", + "x-ms-request-server-encrypted" : "true", + "Date" : "Fri, 23 Oct 2020 19:25:52 GMT", + "x-ms-client-request-id" : "4695b74b-ec1d-4381-8a23-ca3691ad2ddc", + "Content-MD5" : "24qkYSCoEUBF8bVKj/E8Hw==" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff49440340b8d5b2976/fileasyncapitestslistrangesdiff450097881e6a738e5?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "8c4eb5a1-6729-4877-8f83-8494b170be09" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D877897508B5DE", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:53 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "c6a9d88c-f01a-0023-6572-a95fbd000000", + "Date" : "Fri, 23 Oct 2020 19:25:52 GMT", + "x-ms-client-request-id" : "8c4eb5a1-6729-4877-8f83-8494b170be09" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff49440340b8d5b2976/fileasyncapitestslistrangesdiff450097881e6a738e5?comp=range", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "8d062fb2-b996-429b-9ee8-9792129417af" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "ETag" : "0x8D87789750F9565", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:53 GMT", + "retry-after" : "0", + "Content-Length" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "7a93dddc-201a-00c4-5c72-a94fb0000000", + "Date" : "Fri, 23 Oct 2020 19:25:53 GMT", + "x-ms-client-request-id" : "8d062fb2-b996-429b-9ee8-9792129417af" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.core.windows.net/fileasyncapitestslistrangesdiff49440340b8d5b2976/fileasyncapitestslistrangesdiff450097881e6a738e5?prevsharesnapshot=2020-10-23T19%3A25%3A52.0000000Z&comp=rangelist", + "Headers" : { + "x-ms-version" : "2020-02-10", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.7.0-beta.2 (11.0.6; Windows 10; 10.0)", + "x-ms-client-request-id" : "4d683e83-f918-4161-912b-b3b17a2a27c1" + }, + "Response" : { + "x-ms-version" : "2020-02-10", + "Server" : "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0", + "x-ms-content-length" : "4194304", + "Last-Modified" : "Fri, 23 Oct 2020 19:25:53 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Fri, 23 Oct 2020 19:25:54 GMT", + "ETag" : "0x8D87789750F9565", + "Content-Length" : "269", + "x-ms-request-id" : "7a93ddde-201a-00c4-5d72-a94fb0000000", + "Body" : "051151210231024153515362047", + "x-ms-client-request-id" : "4d683e83-f918-4161-912b-b3b17a2a27c1", + "Content-Type" : "application/xml" + }, + "Exception" : null + } ], + "variables" : [ "fileasyncapitestslistrangesdiff49440340b8d5b2976", "fileasyncapitestslistrangesdiff450097881e6a738e5" ] +} \ No newline at end of file diff --git a/sdk/storage/azure-storage-file-share/swagger/README.md b/sdk/storage/azure-storage-file-share/swagger/README.md index 4879103fce26..077465e80907 100644 --- a/sdk/storage/azure-storage-file-share/swagger/README.md +++ b/sdk/storage/azure-storage-file-share/swagger/README.md @@ -857,5 +857,20 @@ directive: delete $["x-ms-parameter-grouping"]; ``` +### Add the ShareFileRangeListDeserializer attribute +``` yaml +directive: +- from: ShareFileRangeList.java + where: $ + transform: > + return $. + replace( + "import com.fasterxml.jackson.annotation.JsonProperty;", + "import com.fasterxml.jackson.annotation.JsonProperty;\nimport com.fasterxml.jackson.databind.annotation.JsonDeserialize;"). + replace( + "public final class ShareFileRangeList {", + "@JsonDeserialize(using = ShareFileRangeListDeserializer.class)\npublic final class ShareFileRangeList {"); +``` + ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-java%2Fsdk%2Fstorage%2Fazure-storage-file-share%2Fswagger%2FREADME.png)